Cách cài đặt Gitlab với PostgreSQL và Nginx trên Ubuntu 15.04

theanh

Administrator
Nhân viên
Gitlab là một ứng dụng quản lý kho lưu trữ git dựa trên web được viết bằng Ruby. Nó tương tự như GitHub và bao gồm các tính năng như wiki dự án và hệ thống theo dõi sự cố. Dự án Gitlab được khởi xướng bởi Dmitriy Zaporozhets và phần mềm được hơn 100.000 công ty công nghệ sử dụng bao gồm IBM, StackExchange, NASA, Alibaba, Red Hat, v.v. Gitlab là một trong những giải pháp tốt nhất để xây dựng máy chủ git của riêng bạn.

Gitlab được hỗ trợ bởi các bản phân phối Linux chính như Ubuntu, Debian và CentOS. Gitlab cung cấp gói .deb cho Debian/Ubuntu và các gói .rpm cho Rhel và CentOS. Gói này chứa tất cả các phụ thuộc bao gồm Ruby, Redis, Nginx, Unicorn và PostgreSQL. Gitlab có 2 phiên bản, Phiên bản cộng đồng (Gitlab CE) và Phiên bản doanh nghiệp (Gitlab EE). Nếu bạn muốn xây dựng máy chủ git của riêng mình thì nhiều khả năng phiên bản CE miễn phí sẽ cung cấp tất cả các tính năng bạn cần.

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn từng bước cài đặt Gitlab CE với PostgreSQL làm hệ thống cơ sở dữ liệu và Nginx làm máy chủ web trên phiên bản Ubuntu 15.04. Chúng tôi sẽ sử dụng Ruby phiên bản 2.x.x, phiên bản ổn định của gitlab là 8.x.

Điều kiện tiên quyết​

  • Ubuntu 15.04 - 64bit.
  • CPU 2 lõi - khuyến nghị từ trang gitlab.
  • RAM/Bộ nhớ 2 GB - khuyến nghị từ trang gitlab.
  • Quyền root.

Bước 1 - Cập nhật Linux Hệ thống​

Trước khi cài đặt các phụ thuộc Gitlab, chúng tôi sẽ lấy các bản cập nhật mới nhất từ kho lưu trữ ubuntu. Đăng nhập vào máy chủ ubuntu bằng quyền truy cập SSH, trở thành người dùng root rồi cập nhật các kho lưu trữ.
Mã:
sudo su
apt-get update

Bước 2 - Cài đặt các phụ thuộc Gitlab​

Gitlab có nhiều phụ thuộc phần mềm như redis-server, git-core, nodejs và postfix để gửi thông báo qua email. Tôi sẽ cài đặt chúng bằng một lệnh apt duy nhất:
Mã:
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs git-core postfix
Lưu ý: Trong quá trình cài đặt postfix, hãy chọn "internet site" rồi nhấn enter để xác nhận tên máy chủ.

Nếu tất cả các gói đã được cài đặt, hãy kiểm tra phiên bản git và đảm bảo phiên bản git là 1.7.x trở lên.
Mã:
git --version
git version 2.1.4

Bước 3 - Cài đặt Ruby và Go​

Gitlab yêu cầu phiên bản ruby 2.x trở lên. Trong hướng dẫn này, chúng ta sẽ sử dụng phiên bản ruby 2.7. Ở giai đoạn này, chúng ta phải cài đặt ruby thủ công (từ nguồn). Nếu bạn đã cài đặt ruby trên hệ thống trước đó, hãy xóa nó bằng lệnh bên dưới:
Mã:
apt-get remove ruby -y
Tiếp theo, chúng ta sẽ cài đặt ruby thủ công. Tạo thư mục mới cho các tệp nguồn ruby:
Mã:
mkdir -p /tmp/ruby && cd /tmp/ruby
Tải xuống mã nguồn ruby bằng lệnh curl:
Mã:
curl -O --progress https://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.7.tar.gz
Bây giờ hãy xác minh và giải nén ruby.tar.gz, sau đó vào thư mục ruby:
Mã:
echo 'e2e195a4a58133e3ad33b955c829bb536fa3c075 ruby-2.1.7.tar.gz' | shasum -c - && \
tar xzf ruby-2.1.7.tar.gz && \
cd ruby-2.1.7
Biên dịch và cài đặt Ruby:
Mã:
./configure --disable-install-rdoc --prefix=/usr/local
make
make install
Bước tiếp theo, chúng ta phải cài đặt Go. Kể từ gitlab 8.0, yêu cầu HTTP git được xử lý bởi gitlab-workhorse được viết bằng Go. Để cài đặt gitlab-workhorse, chúng ta cần trình biên dịch go, hãy tải xuống và cài đặt nó.

Tạo thư mục mới cho Go:
Mã:
mkdir -p /tmp/go && cd /tmp/go
Tải xuống Go - chúng tôi sử dụng phiên bản 64 bit:
Mã:
curl -O --progress https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
Xác minh và giải nén vào thư mục "/usr/local/":
Mã:
echo '46eecd290d8803887dec718c691cc243f2175fe0 go1.5.1.linux-amd64.tar.gz' | shasum -c - && \
sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz
Bây giờ tạo một liên kết tượng trưng cho Go trong thư mục bin:
Mã:
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
Bây giờ chúng ta đã cài đặt Ruby và Go.


Bước 4 - Tạo một người dùng Linux mới và cấu hình cơ sở dữ liệu PostgreSQL​

Trong bước này, chúng ta sẽ tạo một người dùng hệ thống Linux mới có tên là "git" với thư mục home "/home/git".Gitlab sẽ chạy dưới dạng người dùng git sau đó.

Tạo người dùng git mới bằng lệnh adduser:
Mã:
sudo adduser --disabled-login --gecos 'GitLab' git
Bây giờ chúng ta cấu hình cơ sở dữ liệu cho gitlab. Gitlab hỗ trợ MySQL và PostgreSQL, trong hướng dẫn này chúng ta sẽ sử dụng loại cơ sở dữ liệu được đề xuất là PostGreSQL.

Cài đặt PostgreSQL bằng lệnh apt bên dưới:
Mã:
sudo apt-get install -y postgresql postgresql-client libpq-dev
Sau khi hoàn tất, hãy đăng nhập vào PostgreSQL và tạo vai trò/người dùng mới có tên là "git" cho gitlab:
Mã:
sudo -u postgres psql -d template1
CREATE USER git CREATEDB;
Sau đó, tạo cơ sở dữ liệu mới cho gitlab có tên là "gitlabhq_production" và cấp cơ sở dữ liệu cho git user/role:
Mã:
CREATE DATABASE gitlabhq_production OWNER git;
Bây giờ hãy thoát khỏi shell postgresql và kiểm tra vai trò/người dùng mới với cơ sở dữ liệu mà chúng ta đã tạo:
Mã:
\q
sudo -u git -H psql -d gitlabhq_production


Người dùng hệ thống mới có tên "git" đã được tạo.

Vai trò/người dùng mới "git" cho psotgreSQL đã được cấp cho cơ sở dữ liệu gitlab "gitlabhq_production" cũng đã được tạo.

Bước 5 - Cấu hình máy chủ Redis​

Trước khi chỉnh sửa tệp cấu hình redis trong thư mục "/etc/redis", chúng ta sẽ tạo một bản sao lưu có tên redis.conf.original.
Mã:
cd /etc/redis/
cp redis.conf redis.conf.original
Sau đó chỉnh sửa tệp "redis.conf" bằng trình soạn thảo vim:
Mã:
vim redis.conf

Đi đến dòng 45 và thay đổi giá trị thành 0, vì chúng ta muốn Redis chỉ lắng nghe trên một socket unix chứ không phải trên một cổng:
Mã:
Lắng nghe 0
Sau đó, hãy đến cuối tệp và thêm một socket redis và quyền cho socket đó:
Mã:
unixsocket /var/run/redis/redis.sock
unixsocketperm 777
Lưu tệp và thoát.

Tiếp theo, tạo một thư mục mới cho socket redis trong thư mục "/var/run" và điều chỉnh chủ sở hữu và quyền của thư mục:
Mã:
mkdir -p /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis
Đi đến thư mục socket redis và chạy lệnh bên dưới:
Mã:
cd /var/run/redis
nếu [ -d /etc/tmpfiles.d ]; thì
 echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
Nếu mọi thứ đã hoàn tất, hãy khởi động lại máy chủ redis và thêm người dùng "git" vào nhóm "redis":
Mã:
sudo service redis-server restart
sudo usermod -aG redis git

Bước 6 - Cài đặt GitLab​

Vào thư mục "/home/git" và tải gitlab từ kho lưu trữ GIT của nó:
Mã:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-2-stable gitlab
Lưu ý:

sudo -u git -H clone command = chúng ta chạy lệnh "clone" với tư cách là người dùng "git".

- Cấu hình GitLab​

Vào thư mục gitlab để cấu hình gitlab:
Mã:
cd /home/git/gitlab
Sao chép ví dụ về tệp cấu hình gitlab gitlab.yml.example vào gitlab.yml trong thư mục "config":
Mã:
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
Trong thư mục gitlab, hãy thay đổi chủ sở hữu của các thư mục con "log và tmp" thành người dùng git:
Mã:
sudo chown -R git {log,tmp}
Sau đó thay đổi quyền cho các thư mục khác để gitlab (người dùng git) có thể ghi vào chúng:
Mã:
mkdir -p public/uploads/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX {tmp,tmp/pids,tmp/sockets,builds,shared/artifacts}
sudo chmod -R 0750 public/uploads
Sao chép các ví dụ về cấu hình tấn công unicorn và Rack:
Mã:
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
Bây giờ chúng ta phải cấu hình các thiết lập toàn cục cho người dùng git bằng lệnh git bên dưới:
Mã:
sudo -u git -H git config --global core.autocrlf input
Và chúng ta phải cấu hình kết nối redis bằng cách sao chép tệp "resque.yml" vào thư mục config, sau đó chỉnh sửa bằng vim để thay đổi cấu hình redis, sử dụng socket unix như chúng ta đã cấu hình redisto để lắng nghe trên socket:
Mã:
sudo -u git -H cp config/resque.yml.example config/resque.yml

- Cấu hình cơ sở dữ liệu​

Bước tiếp theo là cấu hình cài đặt GitLab DB, chúng tôi sử dụng postgreSQL cho cơ sở dữ liệu của mình. Sao chép tệp cấu hình và thay đổi quyền:
Mã:
sudo -u git -H cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml

- Cài đặt Gem​

Mã:
sudo gem install bundler
sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
Chờ cho đến khi các lệnh hoàn tất.

- Cài đặt Gitlab-shell​

Gitlab-shell cho phép truy cập SSH và quản lý kho lưu trữ cho Gitlab. Chúng tôi sẽ sử dụng cấu hình mặc định, vì vậy chúng tôi không cần phải chỉnh sửa nó. Chạy lệnh bên dưới để cài đặt gitlab-shell:
Mã:
sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.8] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
REDIS_URL = đảm bảo bạn sử dụng socket unix để cấu hình redis trên môi trường sản xuất.

- Cài đặt gitlab-workhorse​

Gitlab-workhorse là một deamon nhỏ để xử lý lưu lượng truy cập Git HTTP từ unicorn, được mã hóa bằng Go. Sao chép và cài đặt:
Mã:
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse
sudo -u git -H git checkout 0.4.2
sudo -u git -H make

- Khởi tạo cơ sở dữ liệu và kích hoạt các tính năng của gitlab​

Truy cập thư mục cài đặt gitlab và chạy lệnh bên dưới:
Mã:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
"yes" để tạo các bảng.



Kết quả sẽ là một tài khoản gitlab có tên người dùng là "root" và mật khẩu "5iveL!fe".


Bước 7 - Cấu hình Init Script​

Sao chép gitlab init script từ thư mục cài đặt gitlab và thêm gitlab để bắt đầu khi khởi động bằng lệnh update-rc.d:
Mã:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21
Sau đó sao chép cấu hình gitlab logrotate để quản lý nhật ký:
Mã:
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
Và kiểm tra trạng thái ứng dụng và biên dịch tài sản:
Mã:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Nếu không có lỗi, hãy khởi động gitlab bằng:
Mã:
/etc/init.d/gitlab start

Bước 8 - Cài đặt và cấu hình Nginx​

Chúng ta sẽ sử dụng Nginx làm máy chủ web phía trước để xử lý các yêu cầu của trình duyệt. Chỉ cần cài đặt bằng lệnh apt này:
Mã:
apt-get install nginx -y
Sao chép cấu hình máy chủ ảo Nginx từ thư mục gitlab và xóa máy chủ ảo mặc định Nginx:
Mã:
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo rm /etc/nginx/sites-enabled/default
Chỉnh sửa tệp cấu hình bằng vim:
Mã:
sudo vim /etc/nginx/sites-available/gitlab
Thay đổi giá trị của các dòng Listen và ServerName trong phần HTTP:
Mã:
Listen *:80; #Port Default
 
#Listen 0.0.0.0:80; #comment một trong những dòng này
 
ServerName my.gitlab.me; #Gitlab FQDN/Domain
Lưu và thoát.

Kích hoạt gitlab virtualhost, khởi động nginx và khởi động lại gitlab:
Mã:
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
service nginx start
/etc/init.d/gitlab restart
Bây giờ bạn có thể truy cập gitlab bằng trình duyệt của mình tại my.gitlab.me(tên máy chủ bạn đã chọn cho máy chủ của mình) và đăng nhập bằng tên người dùng mặc định "root" và mật khẩu "5iveL!fe".



Trước tiên, bạn nên thay thế mật khẩu mặc định của gitlab bằng mật khẩu của mình.



Gitlab 8 với PostgreSQL và Nginx trên ubuntu 15.04 đã được cài đặt thành công bây giờ.



Lưu ý:

Nếu bạn gặp lỗi, ví dụ như "502 bad gateway", hãy sửa lỗi bằng cách tăng thời gian chờ unicorn hoặc nâng cấp phần cứng của bạn. Vào thư mục cài đặt gitlab và chỉnh sửa tệp unicorn.rb bằng vim:
Mã:
sudo -u git -H vim config/unicorn.rb


Xem thêm về cách khắc phục sự cố Gitlab tại đây https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide.

Kết luận​

Gitlab là phần mềm quản lý kho lưu trữ git mã nguồn mở được viết bằng Ruby. Đây là một trong những giải pháp tốt nhất để xây dựng máy chủ git của riêng bạn. Gitlab được tạo bởi Dmitriy Zaporozhets và có 2 phiên bản, Gitlab CE (Phiên bản cộng đồng) và Gitlab EE (Phiên bản doanh nghiệp). Gitlab dễ cài đặt và cấu hình với giao diện đẹp, được hơn 100.000 công ty công nghệ sử dụng. Đây là phần mềm rất mạnh mẽ giúp các nhà phát triển xây dựng ứng dụng cùng với các nhà phát triển khác.
 
Back
Bên trên