Cài đặt GitLab làm Git Server trên CentOS 7

Cài đặt GitLab làm Git Server trên CentOS 7Cuongquach.com | GitLab là một phần mềm mã nguồn mở được viết bằng ngôn ngữ Ruby, có nhiệm vụ quản lý kho code Git, quản lý issue, giám sát và cả tích hợp CI/CD. Vì vậy làm sao để có thể cài đặt GitLab làm hệ thống máy chủ Git Server trong mạng nội bộ là cực kì quan trọng đối với các team dev muốn quản lý Git Shared Repository riêng. Vậy cùng tìm hiểu cách cài đặt GitLab trên CentOS 7 nhé.

cai-dat-gitlab-tren-centos-7

GitLab là gì ?

GitLab là một phần mềm mã nguồn mở được viết bằng ngôn ngữ Ruby, có nhiệm vụ quản lý kho code Git, quản lý issue, giám sát và cả tích hợp CI/CD. GitLab sở hữu các tính năng đơn giản, góp phần to lớn trong việc giúp các doanh nghiệp, cá nhân, tổ chức lưu trữ code một cách nhanh chóng vô cùng, người dùng hoàn toàn có thể truy cập mọi lúc mọi nơi miễn là có kết nối Internet.

Gitlab cũng có khá nhiều điểm tương đồng với GitHub nhưng GitHub đi theo hướng kinh doanh nhiều hơn, bởi vì nếu bạn sở hữu kho code riêng và muốn ẩn chúng khỏi cộng đồng hoặc mở rộng hơn nữa thì bạn sẽ phải trả phí cho dịch vụ này. Gitlab hoàn toàn ngược lại, bạn có thể ẩn kho code của mình, không công khai chúng cho bất kỳ ai, trong trường hợp vượt quá ngưỡng miễn phí thì bạn mới phải mất phí để mua thêm dịch vụ.

+ GitLab CE là gì ?

Công ty GitLab có 4 sản phẩm :

  • GitLab CE (community edition) : mã nguồn open source, bạn tự host dịch vụ GitLab Git Server riêng; nhận được sự hỗ trợ từ cộng đồng và forum.
  • GitLab EE (enterprise edition) : bản trả phí, thương mại, các tính năng nâng cao.
  • GitLab.com : tương tự Github.com , Software as Service và miễn phí.
  • GitLab.io : dịch vụ máy chủ GitLab nội bộ quản lý bởi GitLab.

Trong bài hướng dẫn này chúng ta sẽ tìm hiểu các bước cài đặt GitLab CE (community edition) trên CentOS 7.

Yêu cầu cấu hình

Đối với hệ thống user tối thiểu như tầm 100 user thì bạn cần mức cấu hình máy chủ như sau :

  • CPU 2 core
  • RAM 4GB + 4GB SWAP
  • PostgreSQL
  • 15GB dung lượng ổ cứng trống

1. Cài đặt chương trình hỗ trợ

Bạn cần cài đặt một số chương trình hỗ trợ cho GitLab trên CentOS 7.

# yum install -y curl policycoreutils-python postfix ca-certificates

2. Cài đặt GitLab

2.1 Cài đặt chương trình GitLab CE

GitLab yêu cầu bạn phải thêm GitLab CE Repository vào máy chủ, để có thể tiến hành cài đặt qua Repository.

# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

hoặc

# wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh
# bash script.rpm.sh

Giờ thì bạn tiến hành cài đặt GitLab CE.

# yum -y install gitlab-ce
..
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

Verifying : gitlab-ce-11.9.4-ce.0.el7.x86_64 1/1

Installed:
gitlab-ce.x86_64 0:11.9.4-ce.0.el7

Sau khi cài đặt xong chúng ta có thể dùng gitlab-ctl để quản lý service:

  • Kiểm tra trạng thái
# gitlab-ctl status
  • Khởi động gitlab
# gitlab-ctl start
  • Dừng gitlab
# gitlab-ctl stop
  • Khởi động lại gitlab
# gitlab-ctl restart

Lưu ý :

  • Gitlab Omnibus bao gồm nhiều gói package bên trong như: Nginx, Postgresql, Redis, Sidekiq, Unicorn, .. nên dung lượng khá nặng.
  • Nếu trên server đang sử dụng Nginx làm web server thì có thể bị trùng cổng. Chúng ta có thể disable gói Nginx trong Gitlab Omnibus đi để dùng Nginx có sẵn.

2.2 Cấu hình GitLab URL

Bạn sẽ cần một tên miền để truy cập GitLab của bạn được cài đặt trên máy chủ CentOS 7. Ví dụ mình dùng : gitlab.cuongquachlab.com . Thì giờ bạn sẽ cấu hình để GitLab nhận diện tên miền sẽ sử dụng để truy cập GitLab CE.

# vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab.cuongquachlab.com/'

Nếu bạn muốn sử dụng HTTPS cho tên miền truy cập thì cấu hình như dưới và quan tâm tiếp mục 2.3 cấu hình HTTPS Certificate.

# vi /etc/gitlab/gitlab.rb
external_url 'https://gitlab.cuongquachlab.com'

2.3 Cấu hình chứng chỉ SSL – HTTPS Certificate

Hiện tại thì GitLab có hỗ trợ tích hợp với dịch vụ chứng chỉ SSL miễn phí Let’s Encrypt nhưng trong trường hợp hệ thống của bạn nằm trong hệ thống mạng private và cũng không tiện renew Let’s certificate mỗi 3 tháng thì chúng ta tạm xài chứng chỉ SSL tự phát hành nhé.

Cấu hình dưới cũng giúp bạn tự cấu hình các chứng chỉ SSL đã mua cho tên miền hệ thống.

# openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out gitlabce.crt -keyout gitlabce.key
...
Country Name (2 letter code) [XX]:VN
State or Province Name (full name) []:HCM
Locality Name (eg, city) [Default City]:HCM
Organization Name (eg, company) [Default Company Ltd]:CQ
Organizational Unit Name (eg, section) []:CQ
Common Name (eg, your name or your server's hostname) []:gitlab.cuongquach.com
Email Address []:

Tạo thư mục chứa chứng chỉ SSL tự phát hành.

# mkdir -p /etc/gitlab/ssl/
# mv gitlabce.crt gitlabce.key /etc/gitlab/ssl/

Khởi tạo thêm chứng chỉ DHPARAM .

# openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048

Phân lại quyền cho các file chứng chỉ SSL.

# chmod 600 /etc/gitlab/ssl/*
# ll /etc/gitlab/ssl
total 12
-rw------- 1 root root 424 Apr 4 16:52 dhparams.pem
-rw------- 1 root root 2000 Apr 4 16:48 gitlabce.crt
-rw------- 1 root root 3272 Apr 4 16:48 gitlabce.key

Cấu hình để dịch vụ Nginx của GitLab nhận chứng chỉ SSL tự phát.

# vi /etc/gitlab/gitlab.rb
..
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlabce.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlabce.key"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"
nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2"
nginx['ssl_ciphers'] = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK"
nginx['ssl_prefer_server_ciphers'] = "on"

2.4 Reload GitLab cấu hình

Sau khi cài đặt và tinh chỉnh xong thì cần cho GitLab load lại cấu hình mới.

# gitlab-ctl reconfigure
...
Running handlers:
Running handlers complete
Chef Client finished, 299/1175 resources updated in 01 minutes 43 seconds
gitlab Reconfigured!

2.5 Cấu hình firewall

Bạn cần mở port web gồm 80, 443 để truy cập GitLab CE. Bạn có thể linh hoạt tự mở port ở các chương trình firewall trên máy chủ bạn.

# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp --dport 443 -j ACCEPT

3. Truy cập WebAdmin GitLab

Giờ bạn truy cập WebAdmin GitLab theo tên miền mà bạn đã cấu hình ở trên . Ví dụ mình truy cập : https://gitlab.cuongquachlab.com/

+ Đổi mật khẩu user root

Ở lần truy cập đầu tiên, bạn sẽ được yêu cầu đổi mật khẩu root GitLab vì lý do bảo mật. Hãy đổi mật khẩu mạnh để an toàn.

cài đặt gitlab server - 1
cài đặt gitlab server – 1

Sau khi bạn đổi mật khẩu thì bạn sẽ được chuyển hướng sang trang đăng nhập. Hãy nhập thông tin user root và mật khẩu bạn vừa đổi.

cài đặt gitlab server - 2
cài đặt gitlab server – 2

Cuối cùng bạn sẽ vào được trang chủ của máy chủ dịch vụ GitLab CE bạn vừa cài.

cài đặt gitlab server - 3
cài đặt gitlab server – 3

+ Đổi tên user mặc định

Vì lý do bảo mật , thì chúng ta không nên để tên user ‘root’ dễ bị dò thông tin. Thay vào đó hãy đổi sang tên khác như ‘admin’ hoặc bất kì cái tên gì bạn muốn.

Vào phần “Profile” > “Settings“.

cài đặt gitlab server - 4
cài đặt gitlab server – 4

Chọn “Account” > “Change username“.

cài đặt gitlab server - 5
cài đặt gitlab server – 5

Xác nhận cập nhật thông tin username vừa đổi.

cài đặt gitlab server - 6
cài đặt gitlab server – 6

Tổng kết

Vậy là bạn đã biết cách cài đặt thành công dịch vụ GitLab CE để làm Git Shared Repository chứa source code cho dự án của bạn. Sẽ còn vài bài nữa để làm quen dần với anh chàng GitLab này , một trong những OpenSource Git Server nổi tiếng của dân Dev và dân DevOps. Đón chờ nhé !

Nguồn: https://cuongquach.com/

Previous articleEbook Gray Hat Hacking Ethical Hacker Handbook 3rd Edition (PDF)
Next articleEbook Kỹ Năng Lập Trình – Lê Hoài Bắc (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !