Cách cài đặt Gitlab trên Rocky Linux 9

theanh

Administrator
Nhân viên
GitLab Server là phiên bản mã nguồn mở của bộ điều khiển phiên bản GitLab được lưu trữ trên đám mây dùng để lưu trữ kho lưu trữ Git. Ưu điểm của việc tự lưu trữ kho lưu trữ của bạn so với lưu trữ đám mây là toàn quyền kiểm soát mã của bạn. Nó có tất cả các tính năng bạn có thể tìm thấy trên dịch vụ đám mây, khiến nó trở thành một công cụ hữu ích cho nhóm phát triển của bạn. Nó cũng đi kèm với dịch vụ trò chuyện Mattermost cho phép người dùng của bạn trò chuyện với nhau và chia sẻ các đánh giá mã.

Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt GitLab Server bằng Docker trên máy chủ Ubuntu 22.04. GitLab cung cấp hai phiên bản - phiên bản Cộng đồng miễn phí và phiên bản Doanh nghiệp trả phí. Chúng tôi sẽ cài đặt phiên bản Cộng đồng. Bạn có thể nâng cấp lên phiên bản Enterprise nếu muốn có nhiều tính năng hơn.

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


  • Một máy chủ chạy Rocky Linux 9 với ít nhất 4GB RAM và 4 lõi CPU để hỗ trợ tối đa 500 người dùng.

  • Một người dùng không phải root có quyền sudo.

  • Một tên miền được định cấu hình để trỏ đến máy chủ, gitlab.example.com. Tùy thuộc vào yêu cầu của bạn, chúng tôi cũng sẽ sử dụng mattermost.example.compages.example.com.

  • Mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
[*]
Một số gói mà hệ thống của bạn cần.
Mã:
$ sudo dnf install -y wget nano unzip yum-utils policycoreutils-python-utils
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa​

Trước khi cài đặt bất kỳ gói nào, bước đầu tiên là cấu hình tường lửa để mở cổng cho HTTP và HTTPS. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --zone=public --list-all
Nó sẽ hiển thị đầu ra sau.
Mã:
public target: default icmp-block-inversion: no interfaces: enp1s0 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Mở các cổng HTTP và HTTPS trong tường lửa.
Mã:
$ sudo firewall-cmd --zone=public --add-service=http
$ sudo firewall-cmd --zone=public --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --zone=public --list-all
Bạn sẽ thấy một đầu ra.
Mã:
public target: default icmp-block-inversion: no interfaces: enp1s0 sources: services: cockpit dhcpv6-client http https ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Thực hiện tất cả các thay đổi vĩnh viễn và tải lại tường lửa để cho phép các thay đổi.
Mã:
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload

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

Trước khi cài đặt GitLab, điều quan trọng là phải cài đặt các gói mà GitLab yêu cầu để hoạt động bình thường. Tất cả các gói này đều có trong kho lưu trữ Rocky Linux.

Phát hành lệnh sau để cài đặt các phần phụ thuộc.
Mã:
$ sudo dnf install -y curl policycoreutils openssh-server perl
GitLab yêu cầu giải pháp email hoạt động để gửi email thông báo. Có hai tùy chọn cho cùng một tùy chọn. Một trong số đó là cài đặt Postfix. Và tùy chọn thứ hai là sử dụng dịch vụ SMTP bên ngoài. Nếu bạn muốn sử dụng tùy chọn Postfix, hãy cài đặt bằng lệnh bên dưới.
Mã:
$ sudo dnf install postfix
Trong quá trình cài đặt, bạn có thể được yêu cầu nhập loại trang web. Chọn Internet Site làm tùy chọn để tiếp tục, sau đó thêm FQDN của máy chủ cho mail name và nhấn Enter để tiếp tục. Nếu bạn thấy bất kỳ màn hình bổ sung nào, hãy tiếp tục nhấn phím Enter để chọn các tùy chọn mặc định.

Bạn sẽ cần nhiều hơn nữa để cấu hình Postfix làm máy chủ SMTP, hướng dẫn nằm ngoài phạm vi của bài viết này. GitLab có một bài viết về cách cấu hình Postfix mà bạn có thể tham khảo.

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

Tải xuống và chạy trình cài đặt kho lưu trữ GitLab kịch bản.
Mã:
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
Bỏ qua cảnh báo về gói pygpgme bị thiếu vì nó không khả dụng trên Rocky Linux 9.

GitLab đi kèm với rất nhiều gói giúp việc quản lý dễ dàng hơn nhiều. Ví dụ, GitLab đi kèm với máy chủ web Nginx và hỗ trợ tạo chứng chỉ SSL Let's Encrypt.

Nếu bạn chỉ định một URL bên ngoài cho trang web GitLab của mình trong quá trình cài đặt, trang web đó sẽ tự động được định cấu hình và chứng chỉ SSL sẽ được tạo và áp dụng. Bạn cũng có thể chỉ định mật khẩu quản trị viên trong quá trình cài đặt. Nếu không, GitLab sẽ tạo một mật khẩu tạm thời sẽ tự động bị xóa sau một ngày.

Chúng tôi sẽ chỉ định cả URL bên ngoài và mật khẩu quản trị viên. Chạy lệnh sau để cài đặt GitLab.
Mã:
$ sudo GITLAB_ROOT_PASSWORD="[B]" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee
Chọn mật khẩu mạnh cho cài đặt của bạn. Ở đây chúng tôi đang cài đặt phiên bản GitLab Enterprise (gitlab-ee). Nếu bạn không mua và đăng ký giấy phép, thì nó sẽ hoạt động tốt như phiên bản Community Edition miễn phí. Nhưng nếu bạn cài đặt phiên bản Community (gitlab-ce), thì bạn sẽ cần cài đặt lại phiên bản Enterprise để nâng cấp. Do đó, chúng tôi khuyên bạn nên sử dụng phiên bản Enterprise ngay cả khi bạn không muốn nâng cấp.

Sau khi cài đặt hoàn tất, bạn sẽ nhận được kết quả tương tự.
Mã:
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured! *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab should be available at https://gitlab.example.com
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=16-9 Verifying : gitlab-ee-16.9.1-ee.0.el9.x86_64 1/1
Installed: gitlab-ee-16.9.1-ee.0.el9.x86_64
Complete!
Bạn cũng có thể cài đặt một phiên bản GitLab cụ thể. Trước tiên, hãy kiểm tra danh sách các phiên bản GitLab khả dụng.
Mã:
$ sudo dnf --showduplicates list gitlab-ee*
Bạn sẽ nhận được kết quả tương tự.
Mã:
Available Packages
gitlab-ee.x86_64 16.0.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.0.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.1.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.2.9-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.3.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.4.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.5.8-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.6.7-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.4-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.5-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.7.6-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.1-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.2-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.8.3-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.0-ee.0.el9 gitlab_gitlab-ee
gitlab-ee.x86_64 16.9.1-ee.0.el9 gitlab_gitlab-ee
Chúng ta hãy cài đặt 16.7.0 phiên bản.
Mã:
$ sudo GITLAB_ROOT_PASSWORD="" EXTERNAL_URL="https://gitlab.example.com" dnf install -y gitlab-ee-16.7.0-ee.0.el9
Kiểm tra trạng thái của GitLab và các dịch vụ liên quan.
Mã:
$ sudo gitlab-ctl status
Bạn sẽ thấy thông báo sau đầu ra.
Mã:
run: alertmanager: (pid 6551) 1013s; run: log: (pid 6306) 1093s
run: crond: (pid 6507) 1018s; run: log: (pid 5663) 1251s
run: gitaly: (pid 6479) 1020s; run: log: (pid 5297) 1419s
run: gitlab-exporter: (pid 6522) 1016s; run: log: (pid 6183) 1118s
run: gitlab-kas: (pid 5553) 1400s; run: log: (pid 5566) 1399s
run: gitlab-workhorse: (pid 6455) 1021s; run: log: (pid 5766) 1233s
run: logrotate: (pid 5181) 1434s; run: log: (pid 5189) 1433s
run: nginx: (pid 6470) 1021s; run: log: (pid 5806) 1227s
run: node-exporter: (pid 6515) 1017s; run: log: (pid 6150) 1124s
run: postgres-exporter: (pid 6563) 1013s; run: log: (pid 6351) 1087s
run: postgresql: (pid 5360) 1411s; run: log: (pid 5385) 1408s
run: prometheus: (pid 6532) 1016s; run: log: (pid 6268) 1100s
run: puma: (pid 5666) 1247s; run: log: (pid 5673) 1246s
run: redis: (pid 5227) 1428s; run: log: (pid 5236) 1427s
run: redis-exporter: (pid 6524) 1016s; run: log: (pid 6233) 1110s
run: registry: (pid 6480) 1020s; run: log: (pid 5956) 1165s
run: sidekiq: (pid 5692) 1241s; run: log: (pid 5700) 1240s
Bạn có thể dừng và khởi động GitLab bằng các lệnh sau.
Mã:
$ sudo gitlab-ctl stop
$ sudo gitlab-ctl start
GitLab sẽ hoạt động.

Bạn cũng có thể dừng và khởi động một dịch vụ riêng lẻ bằng các lệnh sau.
Mã:
$ sudo gitlab-ctl stop nginx
$ sudo gitlab-ctl start nginx
$ sudo gitlab-ctl restart nginx
Bạn có thể truy cập cài đặt GitLab của mình bằng cách truy cập https://gitlab.example.com trong trình duyệt. Chúng tôi sẽ quay lại cấu hình GitLab ở các bước sau.

Bước 4 - Cấu hình SSL​

GitLab lưu trữ cấu hình của mình trong tệp /etc/gitlab/gitlab.rb. Mở nó để chỉnh sửa.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb
Xác định vị trí phần Let's Encrypt Integration và thay đổi các giá trị như hiển thị bên dưới.
Mã:
letsencrypt['contact_emails'] = ['[emailprotected]'] # This should be an array of email addresses to add as contacts
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = "12"
letsencrypt['auto_renew_minute'] = "30"
letsencrypt['auto_renew_day_of_month'] = "*/7"
Điều này kích hoạt Let's Encrypt, thiết lập email để nhận thông báo hết hạn SSL và thiết lập chứng chỉ được gia hạn tự động vào mỗi ngày thứ 7 hàng tháng và 12:30 theo giờ máy chủ.

Kích hoạt Chỉ thị DHParam​

Tạo nhóm Diffie-Hellman[/b] chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/gitlab/ssl/dhparams.pem 4096
Đặt tùy chọn sau trong tệp.
Mã:
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem" # Path to dhparams.pem, eg. /etc/gitlab/ssl/dhparams.pem

Vô hiệu hóa Bảo mật truyền tải nghiêm ngặt HTTP (HSTS)​

Bật HTTPS sẽ tự động bật dịch vụ HSTS. Đôi khi nó có thể gây ra vấn đề khi bạn không cần đến nó sau này. Để vô hiệu hóa HSTS, hãy định cấu hình các biến sau.
Mã:
nginx['hsts_include_subdomains'] = false
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình lại GitLab bằng các thiết lập mới.
Mã:
$ sudo gitlab-ctl reconfigure
Quá trình này có thể mất một thời gian để hoàn tất. Sau khi hoàn tất, bạn có thể truy cập cài đặt GitLab của mình bằng cách truy cập https://gitlab.example.com trong trình duyệt. Bạn sẽ được chào đón bằng trang đăng nhập sau.

Bước 5 - Cấu hình SMTP​

GitLab cần gửi email thông báo và để làm được điều đó, chúng ta cần bật cài đặt SMTP cho nó. Nếu bạn đang sử dụng Postfix, bạn có thể bỏ qua bước này. Nếu không, chúng ta hãy tiếp tục.

Mở tệp cấu hình GitLab để chỉnh sửa.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb
Chúng ta sẽ sử dụng Amazon SES cho hướng dẫn này. Tìm phần SMTP trong tệp và đặt các giá trị như hiển thị bên dưới.
Mã:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.region-1.amazonaws.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "IAMmailerKey"
gitlab_rails['smtp_password'] = "IAMmailerSecret"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
# If your SMTP server does not like the default 'From: gitlab@localhost' you
# can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[emailprotected]'
gitlab_rails['gitlab_email_display_name'] = 'Howtoforge GitLab'
gitlab_rails['gitlab_email_reply_to'] = '[emailprotected]'
Bạn có thể bật nhóm kết nối SMTP bằng cách đặt tùy chọn sau.
Mã:
gitlab_rails['smtp_pool'] = true
Điều này cho phép các nhân viên Sidekiq sử dụng lại các kết nối SMTP cho nhiều công việc.

Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bạn cũng có thể mã hóa thông tin xác thực SMTP. Chạy lệnh sau.
Mã:
sudo gitlab-rake gitlab:smtp:secret:edit EDITOR=nano
Nhập tên người dùng và mật khẩu SMTP vào tệp như hiển thị.
Mã:
user_name: 'smtp user'
password: 'smtp password'
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xóa các biến gitlab_rails['smtp_user_name'], and gitlab_rails['smtp_password'] từ /etc/gitlab/gitlab.rb.

Sau khi hoàn tất cài đặt SMTP, hãy cấu hình lại GitLab Cài đặt.
Mã:
$ sudo gitlab-ctl reconfigure

Bước 6 - Cấu hình Nginx​

Máy chủ Nginx tích hợp của GitLab có thể được cấu hình rộng rãi. Chúng ta sẽ xem xét một số tùy chọn quan trọng.

Mở tệp cấu hình GitLab để chỉnh sửa.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb

Chuyển hướng HTTP sang HTTPS.​

Thay đổi các giá trị sau để tự động chuyển hướng liên kết HTTP sang HTTPS.
Mã:
nginx['redirect_http_to_https'] = true

Thiết lập tiêu đề Referrer-Policy​

Theo mặc định, GitLab đặt tiêu đề Referrer-Policy thành strict-origin-when-cross-origin trên tất cả các phản hồi. Cấu hình biến sau để đặt tiêu đề này thành một giá trị khác.
Mã:
nginx['referrer_policy'] = 'same-origin'

Chèn cài đặt Nginx tùy chỉnh vào khối máy chủ GitLab​

Sử dụng biến sau để chèn cài đặt tùy chỉnh vào máy chủ GitLab chặn.
Mã:
# Example: block raw file downloads from a specific repository
nginx['custom_gitlab_server_config'] = "location ^~ /foo-namespace/bar-project/raw/ {\n deny all;\n}\n"

Chèn cài đặt tùy chỉnh vào cấu hình Nginx​

Sử dụng cài đặt sau để chèn cài đặt tùy chỉnh.
Mã:
# Example: include a directory to scan for additional config files
nginx['custom_nginx_config'] = "include /etc/gitlab/nginx/sites-enabled/*.conf;"
Tạo /etc/gitlab/nginx/sites-available thư mục.
Mã:
$ sudo mkdir /etc/gitlab/nginx/sites-available
Tạo tệp khối trong nó.
Mã:
$ sudo touch /etc/gitlab/nginx/sites-enabled/example.conf
Chỉnh sửa và thêm cài đặt của bạn.
Mã:
$ sudo nano /etc/gitlab/nginx/sites-enabled/example.conf
Sau khi hoàn tất, hãy quay lại thiết bị đầu cuối và chạy lệnh sau để tạo /etc/gitlab/nginx/sites-enabled thư mục.
Mã:
$ sudo mkdir /etc/gitlab/nginx/sites-enabled
Chạy lệnh sau để tạo symlink.
Mã:
sudo ln -s /etc/gitlab/nginx/sites-available/example.conf /etc/gitlab/nginx/sites-enabled/example.conf
Sau khi hoàn tất cấu hình Nginx, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình lại Cài đặt GitLab.
Mã:
$ sudo gitlab-ctl reconfigure

Bước 7 - Bật Container Đăng ký​

Đăng ký container được tự động bật và khả dụng trên miền GitLab của bạn, cổng 5050 nếu bạn đang sử dụng tích hợp Let's Encrypt.

Mở tệp cấu hình GitLab.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb
Đặt URL bên ngoài cho đăng ký container GitLab của bạn.
Mã:
registry_external_url 'https://gitlab.example.com:5050'
Đặt HTTP thành Chuyển hướng HTTPS bằng cách thêm dòng sau bên dưới dòng trên.
Mã:
registry_nginx['redirect_http_to_https'] = true
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình lại Cài đặt GitLab.
Mã:
$ sudo gitlab-ctl reconfigure
Mở cổng 2425 trong tường lửa.
Mã:
$ sudo firewall-cmd --zone=public --add-port=5050/tcp
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Xác thực bằng lệnh sau.
Mã:
$ openssl s_client -showcerts -servername gitlab.example.com -connect gitlab.example.com:5050 > cacert.pem
Bạn sẽ có thể đăng nhập vào sổ đăng ký vùng chứa từ Docker bằng thông tin đăng nhập GitLab của mình bằng cách sử dụng lệnh sau lệnh.
Mã:
$ docker login gitlab.example.com:5050
Bạn có thể sử dụng một URL khác như https://registry.gitlab.example.com cho sổ đăng ký container của bạn, việc này sẽ yêu cầu cấu hình bổ sung. Bạn cũng có thể cấu hình lưu trữ S3 cho các container. Kiểm tra Tài liệu GitLab Container Registry để biết hướng dẫn.

Bước 8 - Bật GitLab Pages​

Bạn cần có một miền không phải là miền phụ của URL GitLab. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng https://pages.example.com để lưu trữ các trang GitLab. Chúng tôi cũng sẽ tiếp tục với giả định rằng chúng tôi không sử dụng Wildcard DNS.

Mở tệp cấu hình GitLab.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb
Đặt các biến sau như được hiển thị.
Mã:
pages_external_url 'https://pages.example.com'
.....
# Experimental - Enable namespace in path
gitlab_pages["namespace_in_path"] = true
Cấu hình Nginx cho các trang GitLab trong phần GitLab Pages NGINX.
Mã:
# Below you can find settings that are exclusive to "GitLab Pages NGINX"
pages_nginx['enable'] = true
pages_nginx['redirect_http_to_https'] = true
pages_nginx['ssl_certificate'] = "/etc/letsencrypt/live/pages.example.com/fullchain.pem"
pages_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/pages.example.com/privkey.pem"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình lại GitLab Cài đặt.
Mã:
$ sudo gitlab-ctl reconfigure
Nếu bạn muốn lưu trữ tên miền dựa trên DNS Wildcard, hãy tham khảo tài liệu GitLab Pages.

Bước 9 - Bật MatterMost​

Mattermost là dịch vụ trò chuyện trực tuyến mã nguồn mở với các tính năng như chia sẻ tệp, biểu tượng cảm xúc, GIF, hỗ trợ đánh dấu, tô sáng cú pháp và hỗ trợ đa ngôn ngữ. GitLab đi kèm với MatterMost mà bạn có thể bật và cho phép người dùng công ty chia sẻ phiên bản GitLab giao tiếp với nhau.

GitLab Mattermost bị tắt theo mặc định. Để bật, hãy mở tệp cấu hình GitLab.
Mã:
$ sudo nano /etc/gitlab/gitlab.rb
Thêm URL bên ngoài Mattermost. GitLab sẽ tự động tạo SSL cho URL bằng Let's Encrypt.
Mã:
mattermost_external_url 'https://mattermost.example.com'
Đảm bảo cài đặt cấu hình HTTP sang HTTPS cho Mattermost được đặt thành true bằng cách thêm dòng sau.
Mã:
mattermost_nginx['redirect_http_to_https'] = true
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấu hình lại Cài đặt GitLab.
Mã:
$ sudo gitlab-ctl reconfigure
Bạn sẽ có thể truy cập Mattermost qua https://mattermost.example.com. Bạn sẽ thấy trang sau khi khởi chạy URL.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22445%22%3E%3C/svg%3E


Nếu bạn đã cài đặt ứng dụng Mattermost, hãy chọn nút Xem trong ứng dụng trên máy tính để bàn hoặc chọn tùy chọn nút Xem trong trình duyệt. Đảm bảo kiểm tra tùy chọn Ghi nhớ tùy chọn của tôi để bạn không bị hỏi lại. Chúng ta sẽ quay lại cấu hình Mattermost ở bước tiếp theo.

Cấu hình SMTP cho Mattermost​

Mattermost lưu trữ cấu hình của mình trong tệp /var/opt/gitlab/mattermost/config.json. Mở nó để chỉnh sửa.
Mã:
$ sudo nano /var/opt/gitlab/mattermost/config.json
Tìm phần "EmailSettings" và định cấu hình như minh họa. FeedbackEmail, ReplyToAddress, EnableSMTPAuth, SMTPUsername, SMTPPassword, SMTPServer, SMTPPort, ConnectionSecuritySkipServerCertificateVerification là những mục chúng ta cần thiết lập cho nó làm việc.
Mã:
"EmailSettings": { "EnableSignUpWithEmail": true, "EnableSignInWithEmail": true, "EnableSignInWithUsername": true, "SendEmailNotifications": true, "UseChannelInEmailNotifications": false, "RequireEmailVerification": false, "FeedbackName": "Howtoforge Mattermost", "FeedbackEmail": "[emailprotected]", "ReplyToAddress": "[emailprotected]", "FeedbackOrganization": "", "EnableSMTPAuth": true, "SMTPUsername": "AmazonSESUsername", "SMTPPassword": "AmazonSESPassword", "SMTPServer": "email-smtp.us-west-2.amazonaws.com", "SMTPPort": "465", "SMTPServerTimeout": 10, "ConnectionSecurity": "TLS", "SendPushNotifications": true, "PushNotificationServer": "https://push-test.mattermost.com", "PushNotificationContents": "full", "PushNotificationBuffer": 1000, "EnableEmailBatching": false, "EmailBatchingBufferSize": 256, "EmailBatchingInterval": 30, "EnablePreviewModeBanner": false, "SkipServerCertificateVerification": true, "EmailNotificationContentsType": "full", "LoginButtonColor": "#0000", "LoginButtonBorderColor": "#2389D7", "LoginButtonTextColor": "#2389D7" },
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 10 - Truy cập và cấu hình GitLab Web​

Truy cập GitLab​

Mở URL https://gitlab.example.com trong trình duyệt của bạn và bạn sẽ nhận được màn hình đăng nhập sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22653%22%3E%3C/svg%3E


Nhập root làm tên người dùng và mật khẩu mà bạn đã lấy ở bước trước để đăng nhập vào bảng điều khiển GitLab. Khi đăng nhập, bạn sẽ được đưa đến màn hình bảng điều khiển sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22496%22%3E%3C/svg%3E


Như bạn thấy, GitLab đã tạo một dự án để giám sát phiên bản.

Tắt GitLab để bảo trì​

Nếu bạn muốn đưa phiên bản GitLab của mình vào trạng thái bảo trì trong khi thực hiện các tác vụ máy chủ, hãy sử dụng lệnh sau lệnh.
Mã:
$ sudo gitlab-ctl deploy-page up
cp /opt/gitlab/embedded/service/gitlab-rails/public/deploy.html /opt/gitlab/embedded/service/gitlab-rails/public/index.html
Khi người dùng truy cập trang web GitLab, họ sẽ nhận được trang Deploy in progress.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22712%22%20height=%22517%22%3E%3C/svg%3E


Để xóa trang, hãy chạy lệnh sau.
Mã:
$ sudo gitlab-ctl deploy-page down
Nếu bạn muốn biến các dự án thành chỉ đọc, hãy chạy lệnh sau để mở Rails console.
Mã:
$ sudo gitlab-rails console
Nó trông giống như sau.
Mã:
-------------------------------------------------------------------------------- Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] GitLab: 16.9.2-ee (0d71d32d321) EE GitLab Shell: 14.33.0 PostgreSQL: 14.10
------------------------------------------------------------[ booted in 78.60s ]
Loading production environment (Rails 7.0.8)
irb(main):001:0>
Đặt tất cả các dự án thành chỉ đọc bằng cách sử dụng lệnh sau lệnh.
Mã:
Project.all.find_each { |project| project.update!(repository_read_only: true) }
Thoát khỏi bảng điều khiển bằng cách nhập exit. Để khôi phục các dự án về trạng thái bình thường, hãy sử dụng lệnh sau trong bảng điều khiển.
Mã:
Project.all.find_each { |project| project.update!(repository_read_only: false) }

Hạn chế đăng ký công khai​

Theo mặc định, bất kỳ ai cũng có thể tạo tài khoản và có quyền truy cập. Nếu bạn không muốn, bạn có thể tắt tính năng này. May mắn thay, cài đặt cho tính năng này được hiển thị dưới dạng màn hình bật lên trên bảng điều khiển. Nhấp vào nút Tắt để hạn chế đăng ký công khai trên phiên bản GitLab của bạn. Thực hiện thao tác này sẽ chuyển hướng bạn đến trang cài đặt sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22174%22%3E%3C/svg%3E


Bỏ chọn tùy chọn Cho phép đăng ký để hạn chế họ. Nhấn nút Lưu thay đổi để áp dụng cài đặt.

Trong trường hợp bạn không thấy cửa sổ bật lên trong bảng điều khiển, bạn có thể truy cập trang cài đặt bằng cách nhấp vào nút Khu vực quản trị ở menu dưới cùng bên trái.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22253%22%20height=%22450%22%3E%3C/svg%3E


Khi đã vào trong bảng quản trị, hãy di chuột qua tùy chọn Cài đặt ở thanh bên trái và nhấp vào menu phụ Chung. Từ đó, bạn có thể truy cập bảng Hạn chế đăng ký.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22447%22%20height=%22390%22%3E%3C/svg%3E

Cấu hình Hồ sơ GitLab​

Hồ sơ mặc định của bạn khá đơn điệu và không có gì nổi bật. Để thay đổi điều đó, hãy nhấp vào biểu tượng người dùng ở góc trên bên trái để mở menu thả xuống và chọn tùy chọn Chỉnh sửa hồ sơ.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22249%22%20height=%22253%22%3E%3C/svg%3E


Bạn sẽ được đưa đến trang Cài đặt hồ sơ, tại đó bạn có thể thêm tên, email và các thông tin khác về bản thân. Nhấp vào Cập nhật cài đặt hồ sơ khi bạn hoàn tất. Đừng quay lại trang chủ vì chúng ta còn một số thứ cần cấu hình ở đây.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22745%22%3E%3C/svg%3E

Đổi mật khẩu gốc​

Đây là một trong những bước quan trọng nhất. Bạn nên đổi mật khẩu gốc mặc định ngay lập tức. Với các phiên bản trước, GitLab yêu cầu bạn phải đổi mật khẩu như một phần của quá trình cài đặt nhưng giờ đây, GitLab đã biến việc này thành tùy chọn. Để đổi mật khẩu, hãy nhấp vào menu Mật khẩu từ thanh bên trái.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22595%22%3E%3C/svg%3E


Nhập thông tin mật khẩu của bạn và nhấp vào Lưu mật khẩu để thực hiện thay đổi. Bạn sẽ bị đăng xuất khỏi phiên bản của mình và phải đăng nhập lại.

Thay đổi Tên người dùng và bật xác thực hai yếu tố​

Bạn có thể thay đổi tên người dùng GitLab mặc định của mình từ root thành bất kỳ tên nào bạn chọn. Để thực hiện điều đó, hãy nhấp vào menu Tài khoản từ thanh bên trái.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22576%22%3E%3C/svg%3E


Khi đã vào trang, hãy nhập tên người dùng mới của bạn và nhấp vào nút Cập nhật tên người dùng để thực hiện thay đổi. Bạn sẽ được nhắc xác nhận lần nữa. Nhấn nút Cập nhật tên người dùng một lần nữa để xác nhận thay đổi.

Bạn cũng nên bật xác thực hai yếu tố tại đây để cải thiện bảo mật tài khoản của mình.

Tắt Prometheus Metrics và cải thiện Quyền riêng tư​

Ở bước trước, chúng tôi đã thảo luận về việc tăng kích thước bộ nhớ dùng chung cho droplet và giữ ở mức tối thiểu là 256 MB. Điều này chủ yếu cần thiết để lưu trữ dữ liệu liên quan đến số liệu Prometheus trên đĩa. Nếu bạn không sử dụng tính năng này, bạn nên tắt tính năng này. Bạn chỉ có thể thực hiện sau khi cài đặt. Để tắt, hãy mở Bảng điều khiển quản trị từ thanh menu.

Khi đã vào trong Bảng điều khiển quản trị, hãy mở Cài đặt >> Tùy chọn menu Số liệu và hồ sơ.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22471%22%20height=%22325%22%3E%3C/svg%3E


Trên trang Số liệu, hãy mở rộng phần Số liệu - Prometheus và bỏ chọn tùy chọn Bật điểm cuối số liệu về tình trạng và hiệu suất. Nhấp vào nút Lưu thay đổi để thực hiện thay đổi.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22267%22%3E%3C/svg%3E


GitLab cũng thu thập thông tin sử dụng từ mọi cài đặt. Nếu bạn coi trọng quyền riêng tư và không muốn điều đó xảy ra, hãy mở rộng tùy chọn Thống kê sử dụng trên cùng một trang và Bỏ chọn tùy chọn Bật dịch vụ Ping. Nhấp vào nút Lưu thay đổi để thực hiện thay đổi.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22385%22%3E%3C/svg%3E

Cấu hình Mattermost​

Mở URL https://mattermost.example.com và bạn sẽ được đưa đến trang đăng nhập sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22715%22%20height=%22750%22%3E%3C/svg%3E


Nhấp vào nút GitLab để đăng ký. Thao tác này sẽ tích hợp tài khoản Mattermost của bạn với tài khoản GitLab của bạn. Bạn sẽ được đưa đến trang đăng nhập GitLab, tại đó bạn nhập thông tin đăng nhập và nhấp vào nút Đăng nhập để tiếp tục. Bạn sẽ được đưa đến trang Cho phép hiển thị bên dưới.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22444%22%3E%3C/svg%3E


Nhấp vào nút Cho phép để tiếp tục. Bạn sẽ được đưa trở lại ứng dụng Mattermost yêu cầu nhập tên tổ chức của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22437%22%3E%3C/svg%3E


Nhập tên tổ chức của bạn và nhấp vào trang Tiếp tục. Tiếp theo, bạn sẽ được hỏi về những công cụ bạn sử dụng trong công việc của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22599%22%3E%3C/svg%3E


Nhấp vào biểu tượng GitLab rồi nhấp vào nút Tiếp tục để tiếp tục. Bạn luôn có thể thêm các công cụ khác sau. Tiếp theo, bạn sẽ được yêu cầu mời các thành viên trong nhóm của mình và sẽ được cung cấp một liên kết mời.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22474%22%3E%3C/svg%3E


Lưu liên kết để xem sau và nhấp vào Hoàn tất thiết lập để hoàn tất cài đặt Mattermost. Bạn sẽ được đưa đến bảng điều khiển Mattermost, nơi bạn có thể bắt đầu sử dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22474%22%3E%3C/svg%3E


GitLab chỉ được phép sử dụng để đăng nhập vào phiên bản Mattermost. Phiên bản Mattermost đi kèm với một plugin GitLab được cài đặt sẵn có thể gửi các cam kết và thông báo từ kho lưu trữ của bạn đến phiên bản Mattermost của bạn. Chúng ta cũng cần cấu hình plugin đó.

Truy cập trang Chỉnh sửa hồ sơ của GitLab và chọn menu Ứng dụng từ thanh bên trái. Bạn sẽ thấy ứng dụng đăng nhập Mattermost hiện tại của mình đã được đăng ký.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22447%22%3E%3C/svg%3E


Nhấp vào nút Thêm ứng dụng mới để tạo một ứng dụng khác cho plugin GitLab.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22571%22%3E%3C/svg%3E


Đưa ra tên cho dự án. Đặt https://mattermost.example.com/plugins/com.github.manland.mattermost-plugin-gitlab/oauth/complete làm URI chuyển hướng. Kiểm tra các tùy chọn Bí mật, apiread_user. Nhấp vào nút Lưu ứng dụng ở cuối trang để hoàn tất.

Bạn sẽ được đưa đến trang sau. Sao chép và lưu ID ứng dụngBí mật ứng dụng mà bạn sẽ cần sau này. Bí mật ứng dụng sẽ chỉ được hiển thị một lần nên hãy đảm bảo điều đó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22337%22%3E%3C/svg%3E


Nhấp vào nút Tiếp tục để hoàn tất.

Mở trang Mattermost của bạn và nhấp vào nút trên cùng bên trái để hiển thị menu bật lên sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22337%22%20height=%22387%22%3E%3C/svg%3E


Nhấp vào nút App Marketplace để mở cửa sổ bật lên sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22495%22%3E%3C/svg%3E


Nhấp vào nút Cấu hình đối với plugin GitLab để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22561%22%3E%3C/svg%3E


Nhập URL GitLab, ID máy khách OAuthBí mật máy khách OAuth đã tạo trước đó, rồi nhấp vào nút Lưu để hoàn tất.

Bây giờ, mỗi người dùng cần kết nối tài khoản GitLab của họ trong Mattermost. Truy cập kênh GitLab trên Mattermost và nhập lệnh sau để bắt đầu /gitlab connect và nhấn phím enter, bạn sẽ nhận được thông báo sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22326%22%3E%3C/svg%3E


Nhấp vào nút Liên kết và bạn sẽ được chuyển đến một trang mới yêu cầu cấp quyền kết nối. Nhấp vào Kết nối và bạn sẽ được đưa trở lại trang Mattermost và bạn sẽ thấy thông báo sau xác nhận kết nối.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22616%22%3E%3C/svg%3E

Bước 11 - Tạo dự án đầu tiên của bạn​

Chúng ta hãy thử tạo dự án đầu tiên và đẩy một cam kết.

Thêm Khóa SSH của bạn​

Trước khi tiến hành thêm, chúng ta nên thêm khóa SSH của mình. Điều này cho phép chúng ta tương tác với cài đặt của mình mà không cần sử dụng bất kỳ mật khẩu nào. Nếu bạn có khóa SSH, bạn có thể bỏ qua lệnh sau. Nếu bạn không có, bạn có thể tạo một lệnh bằng lệnh sau.
Mã:
$ ssh-keygen -t ed25519 -C "gitlab.example.com"
Lệnh này phổ biến trên macOS, Linux và Git Bash/WSL trên Windows. Chấp nhận các giá trị mặc định và nhập mật khẩu mạnh. Chúng tôi đang tạo khóa SSH trên Windows Powershell Terminal.
Mã:
Generating public/private rsa key pair.
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\/.ssh/id_ed25519):
Enter same passphrase again:
Your identification has been saved in C:\Users\/.ssh/id_ed25519.
Your public key has been saved in C:\Users\/.ssh/id_ed25519.pub.
SHA256:CI3Ja1LSTN+j4LQnDYkAoP+DvZB8SWrD26zDyUBRbUY gitlab.example.com
+--[ED25519 256]--+
|* ..+E |
|. + / o o |
| o = B o . |
|. o B = S |
|.o X + |
| +X.* |
| .=B o |
+----[SHA256]-----+
Thêm danh tính khóa riêng vào tác nhân xác thực SSH. Đảm bảo dịch vụ Tác nhân xác thực OpenSSH đang chạy nếu bạn đang sử dụng Windows. Nếu bạn đang sử dụng Linux hoặc macOS, hãy chạy lệnh sau.
Mã:
$ eval $(ssh-agent -s)
Thêm khóa.
Mã:
$ ssh-add C:\Users\/.ssh/id_ed25519
Trên Linux và macOS, lệnh sẽ thay đổi để
Mã:
$ ssh-add ~/.ssh/id_ed25519
Bạn sẽ được nhắc nhập mật khẩu. Nhập mật khẩu và khóa sẽ được thêm vào.

Tiếp theo, chúng ta cần lưu các thiết lập này vào tệp ~/.ssh/config. Trên Windows, đây sẽ là thư mục C:\Users\\.ssh. Dán đoạn mã sau vào cuối tệp.
Mã:
Host gitlab.example.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_ed25519
Trong tệp này, tên đường dẫn sẽ giữ nguyên trên tất cả các hệ điều hành. Lưu tệp.

Tiếp theo, chúng ta cần sao chép khóa công khai vào tài khoản GitLab của mình. Bạn có thể hiển thị khóa công khai của mình thông qua lệnh sau. Tên đường dẫn sẽ lại hoạt động trên tất cả các hệ điều hành tại đây.
Mã:
$ cat ~/.ssh/id_ed25519.pub
Bạn sẽ nhận được kết quả tương tự.
Mã:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGCEIN84O/9tcvE5wsTswY76xeJyY7TwkMW6uCvYulm1 gitlab.example.com
Mở cài đặt hồ sơ của bạn trong GitLab và chọn menu Khóa SSH từ thanh bên trái.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22253%22%20height=%22678%22%3E%3C/svg%3E


Dán khóa SSH vào hộp được cung cấp và nhấp vào Thêm khóa để tiếp tục. Bạn sẽ được cung cấp ngày hết hạn mặc định. Bạn có thể thay đổi tùy theo nhu cầu của mình.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22484%22%3E%3C/svg%3E


Tiếp theo, chúng ta cần kiểm tra xem kết nối SSH của mình có hoạt động thành công không. Chạy lệnh sau trên thiết bị đầu cuối PC của bạn.
Mã:
$ ssh -T [emailprotected]
Bạn sẽ nhận được kết quả tương tự. Đầu tiên, bạn sẽ được yêu cầu thêm khóa SSH vào danh sách Máy chủ đã biết của hệ thống. Nhập yes để tiếp tục. Tiếp theo, bạn sẽ nhận được thông báo thành công xác nhận kết nối của bạn với phiên bản GitLab của bạn.
Mã:
The authenticity of host 'gitlab.example.com (178.62.213.105)' can't be established.
ECDSA key fingerprint is SHA256:x1647s5G1iL/cnRFoBuE6qzRZF775fVLZzcLJTGaIvQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitlab.example.com,178.62.213.105' (ECDSA) to the list of known hosts.
Welcome to GitLab, @navjot!
Bây giờ, chúng ta có thể chuyển sang tạo kho lưu trữ đầu tiên và thực hiện một số cam kết.

Tạo dự án​

Mỗi kho lưu trữ trong GitLab đều thuộc về một dự án. Một dự án bao gồm một kho lưu trữ, trình theo dõi sự cố, yêu cầu hợp nhất, wiki, tích hợp liên tục, đường ống phân phối liên tục (CI/CD) và nhiều tính năng khác.

Để tạo kho lưu trữ đầu tiên của bạn, hãy nhấp vào phần Tạo dự án trên trang chủ của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22573%22%3E%3C/svg%3E


Bạn sẽ được đưa đến trang Dự án mới, tại đó bạn sẽ được cung cấp nhiều tùy chọn về cách tạo dự án mới.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22471%22%3E%3C/svg%3E


Chọn tùy chọn Create blank project để tiếp tục. Ở trang tiếp theo, nhập Project name. Chọn tên người dùng của bạn từ menu thả xuống trong tùy chọn Project URL trong hộp Pick a group or namespace. Đặt Project slug của bạn nếu bạn muốn thay đổi slug mặc định. Thay đổi Visibility Level của dự án theo nhu cầu của bạn. Bạn có thể Khởi tạo kho lưu trữ của mình bằng tệp README. Nếu bạn muốn GitLab phân tích mã của mình để tìm lỗ hổng bảo mật, hãy kiểm tra tùy chọn Enable SAST.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22512%22%3E%3C/svg%3E


Sau khi hoàn tất, hãy nhấp vào Create project để hoàn tất. Bạn sẽ được đưa đến trang kho lưu trữ của mình với chỉ một tệp README.md trống.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22659%22%3E%3C/svg%3E


Bây giờ kho lưu trữ của chúng ta đã hoạt động, hãy thử thêm nhật ký thay đổi từ dòng lệnh. Nhập các lệnh sau trên máy tính của bạn để tạo tệp CHANGELOG và đẩy tệp đó trở lại kho lưu trữ của bạn. Đảm bảo rằng bạn đã cài đặt Git trên máy tính của mình.

Bước đầu tiên là sao chép kho lưu trữ. Bạn có thể sao chép bằng SSH hoặc HTTPS. Sao chép bằng SSH. Bạn sẽ được yêu cầu nhập mật khẩu.
Mã:
$ git clone [emailprotected]:user/howtoforge-test.git
Bạn sẽ thấy kết quả tương tự.
Mã:
Cloning into 'howtoforge-test'...
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Nhập phần còn lại của lệnh để tạo và đẩy CHANGELOG file.
Mã:
$ cd howtoforge-test
$ touch CHANGELOG # Or create the file in your editor and enter a project description
$ git add CHANGELOG
$ git commit -m "add Changelog"
[main d6c7a9c] add Changelog 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 CHANGELOG
$ git push -u origin main
Enter passphrase for key '/c/Users/navjo/.ssh/id_ed25519':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 958 bytes | 958.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To gitlab.example.com:navjot/howtoforge-test.git 523db9a..d6c7a9c main -> main
branch 'main' set up to track 'origin/main'.
Bạn sẽ được nhắc nhập mật khẩu một lần nữa trong lệnh đẩy.

Quay lại trang dự án GitLab của bạn và bạn sẽ thấy tệp CHANGELOG trong đó. Xin chúc mừng! Bạn đã tạo thành công dự án đầu tiên và đã cam kết một tệp vào đó.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22348%22%3E%3C/svg%3E


Như vậy là kết thúc dự án GitLab đầu tiên của chúng ta.

Bước 12 - Sao lưu GitLab​

GitLab cung cấp giao diện dòng lệnh để sao lưu toàn bộ phiên bản của bạn bao gồm cơ sở dữ liệu, tệp đính kèm, dữ liệu kho lưu trữ, hiện vật công việc CI/CD, nhật ký đầu ra công việc CI/CD, đối tượng LFS, trạng thái Terraform, hình ảnh sổ đăng ký Container, nội dung GitLab Pages, gói, đoạn mã, wiki nhóm, sự khác biệt về yêu cầu hợp nhất và bảo mật cấp dự án tệp.

Bản sao lưu không bao gồm dữ liệu Mattermost, dữ liệu Redis, tác vụ Sidekiq và lưu trữ Đối tượng.

Chạy lệnh sau để thực hiện sao lưu.
Mã:
$ sudo gitlab-backup create STRATEGY=copy
Tùy chọn STRATEGY=copy là để ngăn ngừa lỗi trong trường hợp dữ liệu thay đổi nhanh chóng. Thao tác này sẽ sao chép dữ liệu đến một vị trí tạm thời và tránh được các lỗi có thể xảy ra.

Bạn sẽ thấy kết quả tương tự.
Mã:
2024-03-07 11:48:37 UTC -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2024-03-07 11:48:45 UTC -- Dumping database ... done
2024-03-07 11:48:45 UTC -- Dumping repositories ...
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.720Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.git","storage_name":"default","time":"2024-03-07T11:48:45.772Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"started create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.874Z"}
{"command":"create","gl_project_path":"navjot/howtoforge-test.wiki","level":"info","msg":"completed create","pid":107325,"relative_path":"@hashed/6b/86/6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b.wiki.git","storage_name":"default","time":"2024-03-07T11:48:45.894Z"}
2024-03-07 11:48:45 UTC -- Dumping repositories ... done
2024-03-07 11:48:45 UTC -- Dumping uploads ...
2024-03-07 11:48:46 UTC -- Dumping uploads ... done
2024-03-07 11:48:46 UTC -- Dumping builds ...
2024-03-07 11:48:46 UTC -- Dumping builds ... done
2024-03-07 11:48:46 UTC -- Dumping artifacts ...
2024-03-07 11:48:46 UTC -- Dumping artifacts ... done
2024-03-07 11:48:46 UTC -- Dumping pages ...
2024-03-07 11:48:46 UTC -- Dumping pages ... done
2024-03-07 11:48:46 UTC -- Dumping lfs objects ...
2024-03-07 11:48:46 UTC -- Dumping lfs objects ... done
2024-03-07 11:48:46 UTC -- Dumping terraform states ...
2024-03-07 11:48:46 UTC -- Dumping terraform states ... done
2024-03-07 11:48:46 UTC -- Dumping container registry images ...
2024-03-07 11:48:46 UTC -- Dumping container registry images ... done
2024-03-07 11:48:46 UTC -- Dumping packages ...
2024-03-07 11:48:46 UTC -- Dumping packages ... done
2024-03-07 11:48:46 UTC -- Dumping ci secure files ...
2024-03-07 11:48:46 UTC -- Dumping ci secure files ... done
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ...
2024-03-07 11:48:46 UTC -- Creating backup archive: 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar ... done
2024-03-07 11:48:46 UTC -- Uploading backup archive to remote storage ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting old backups ... [SKIPPED]
2024-03-07 11:48:46 UTC -- Deleting tar staging files ...
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/backup_information.yml
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/db
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/repositories
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/uploads.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/builds.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/artifacts.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/pages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/lfs.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/terraform_state.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/registry.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/packages.tar.gz
2024-03-07 11:48:46 UTC -- Cleaning up /var/opt/gitlab/backups/ci_secure_files.tar.gz
2024-03-07 11:48:46 UTC -- Deleting tar staging files ... done
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ...
2024-03-07 11:48:46 UTC -- Deleting backups/tmp ... done
2024-03-07 11:48:46 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2024-03-07 11:48:46 UTC -- Backup 1709812117_2024_03_07_16.9.1-ee is done.
2024-03-07 11:48:46 UTC -- Deleting backup and restore PID file ... done
Tệp sao lưu của bạn được lưu trữ trong /var/opt/gitlab/backups thư mục.
Mã:
$ sudo ls /var/opt/gitlab/backups
1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Như đã đề cập trong đầu ra, cấu hình và bí mật GitLab của bạn không được bao gồm trong bản sao lưu. Sao chép thủ công các tệp này đến một vị trí an toàn để khôi phục.

Sao chép chúng.
Mã:
$ sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups
Bạn có thể cấu hình cron để sao lưu hàng ngày.

Mở crontab cho root người dùng.
Mã:
$ sudo su -
$ EDITOR = nano crontab -e
Thêm dòng sau vào đó.
Mã:
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tùy chọn CRON=1 là ẩn toàn bộ đầu ra nếu không có lỗi. Điều này giúp hạn chế thư rác cron. Tuy nhiên, nếu bạn đang gỡ lỗi, hãy thay thế CRON=1 bằng --trace để ghi nhật ký chi tiết.

Bạn có thể kiểm tra tài liệu sao lưu GitLab chính thức để biết thêm tùy chọn và cách đảm bảo bản sao lưu của bạn được tự động sao chép sang dịch vụ tương thích với S3.

Bước 13 - Khôi phục GitLab​

Trước khi khôi phục GitLab, hãy đảm bảo bạn đáp ứng các yêu cầu sau.

  • Phiên bản và ấn bản GitLab phải khớp với phiên bản mà bản sao lưu được thực hiện.

  • Bạn đã chạy lệnh sudo gitlab-ctl reconfigure ít nhất một lần.

  • GitLab phải đang chạy.

  • Bí mật GitLab và các thiết lập phải đã khôi phục.
Mã:
$ sudo cp gitlab.rb gitlab-secrets.json /etc/gitlab
Sao chép tệp sao lưu vào /var/opt/gitlab/backups thư mục.
Mã:
$ sudo cp 1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar /var/opt/gitlab/backups/
Thiết lập quyền chính xác.
Mã:
$ sudo chown git:git /var/opt/gitlab/backups/1709812117_2024_03_07_16.9.1-ee_gitlab_backup.tar
Dừng các tiến trình được kết nối với cơ sở dữ liệu. Bạn có thể để phần còn lại của GitLab chạy như bình thường.
Mã:
$ sudo gitlab-ctl stop puma
$ sudo gitlab-ctl stop sidekiq
Xác minh các quy trình.
Mã:
$ sudo gitlab-ctl status
run: alertmanager: (pid 68055) 76797s; run: log: (pid 66127) 78476s
run: crond: (pid 68045) 76798s; run: log: (pid 65624) 78566s
run: gitaly: (pid 66424) 78414s; run: log: (pid 65273) 78710s
run: gitlab-exporter: (pid 66466) 78411s; run: log: (pid 66002) 78497s
run: gitlab-kas: (pid 65535) 78691s; run: log: (pid 65547) 78690s
run: gitlab-pages: (pid 68003) 76801s; run: log: (pid 67700) 76996s
run: gitlab-workhorse: (pid 66392) 78415s; run: log: (pid 65727) 78550s
run: logrotate: (pid 106163) 3124s; run: log: (pid 65169) 78724s
run: mattermost: (pid 68027) 76799s; run: log: (pid 67820) 76890s
run: nginx: (pid 72647) 75588s; run: log: (pid 65781) 78544s
run: node-exporter: (pid 66458) 78411s; run: log: (pid 65968) 78505s
run: postgres-exporter: (pid 66505) 78407s; run: log: (pid 66162) 78470s
run: postgresql: (pid 65341) 78702s; run: log: (pid 65362) 78699s
run: prometheus: (pid 66476) 78410s; run: log: (pid 66070) 78483s
down: puma: 14s, normally up; run: log: (pid 65649) 78562s
run: redis: (pid 65207) 78719s; run: log: (pid 65216) 78718s
run: redis-exporter: (pid 66468) 78410s; run: log: (pid 66034) 78490s
run: registry: (pid 66414) 78414s; run: log: (pid 65864) 78528s
down: sidekiq: 5s, normally up; run: log: (pid 65681) 78554s
Khôi phục bản sao lưu. Đảm bảo những gì bạn đang làm vì nó sẽ ghi đè lên cơ sở dữ liệu của bạn. Bạn không cần phải cung cấp tên tệp đầy đủ trong lệnh. Chỉ phần trước -ee_gitlab_backup.tar của tên tệp.
Mã:
$	sudo gitlab-backup restore BACKUP=1709812117_2024_03_07_16.9.1-ee
Thao tác này sẽ khôi phục cài đặt GitLab của bạn thành công.

Bước 14 - Nâng cấp GitLab​

Tạo bản sao lưu trước khi nâng cấp GitLab. Nâng cấp GitLab đơn giản như chạy lệnh sudo dnf update.
Mã:
$ sudo dnf update
Những nâng cấp nhỏ có thể thực hiện an toàn cách.
Mã:
DigitalOcean Agent 40 kB/s | 3.3 kB 00:00
DigitalOcean Droplet Agent 44 kB/s | 3.3 kB 00:00
gitlab_gitlab-ee 1.4 kB/s | 1.0 kB 00:00
gitlab_gitlab-ee-source 1.2 kB/s | 951 B 00:00
Dependencies resolved.
======================================================================================================================== Package Architecture Version Repository Size
========================================================================================================================
Upgrading: gitlab-ee x86_64 16.9.2-ee.0.el9 gitlab_gitlab-ee 1.1 G
Transaction Summary
========================================================================================================================
Upgrade 1 Package
Total download size: 1.1 G
Is this ok [y/N]: y
Nhập y và nhấn Enter để bắt đầu nâng cấp. Đối với các phiên bản chính, bạn nên kiểm tra bất kỳ thay đổi đột ngột nào trước khi thực hiện nâng cấp.

Trang web sẽ không khả dụng trong khi quá trình nâng cấp đang được thực hiện hoặc bạn sẽ nhận được thông báo Deploy in progress trong trình duyệt.

Sau khi hoàn tất quá trình nâng cấp, hãy thực hiện kiểm tra sau khi nâng cấp để đảm bảo mọi thứ hoạt động bình thường.

  1. Kiểm tra cấu hình chung.
    Mã:
    $ sudo gitlab-rake gitlab:check

  2. Xác nhận giá trị cơ sở dữ liệu được mã hóa có thể được giải mã.
    Mã:
    $ sudo gitlab-rake gitlab:doctor:secrets

  3. Kiểm tra xem người dùng có thể đăng nhập không, danh sách dự án có hiển thị không, các sự cố dự án và yêu cầu hợp nhất có thể truy cập được không, người dùng có thể sao chép kho lưu trữ và họ có thể đẩy các cam kết lên GitLab trong Giao diện người dùng GitLab không.

  4. Đối với GitLab CI/CD, hãy kiểm tra xem trình chạy có thể nhận công việc không và sổ đăng ký Docker có hoạt động không.

Kết luận​

Như vậy là kết thúc hướng dẫn của chúng tôi, trong đó bạn đã tìm hiểu cách cài đặt và cấu hình GitLab trên máy chủ Rocky Linux 9. Bạn cũng đã tạo dự án đầu tiên của mình và cam kết một tệp vào dự án đó từ PC của mình. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng vào phần bình luận bên dưới.
 
Back
Bên trên