Gitlab倉庫管理系統-高可用部署

李天翔發表於2024-08-12

1、Gitlab介紹

GitLab是一個流行的版本控制系統平臺,主要用於程式碼託管、測試和部署。

GitLab是基於Git的一個開源專案,它提供了一個用於倉庫管理的Web服務。GitLab使用Ruby on Rails構建,並提供了諸如wiki和issue跟蹤等功能。它允許使用者透過Web介面訪問公開或私有的專案,並能夠管理團隊對倉庫的訪問許可權。此外,GitLab還支援持續整合(CI)和持續部署(CD),使其成為軟體開發過程中的重要工具。

GitLab的主要特點包括:

  1. 版本控制:作為一個基於Git的平臺,GitLab提供了強大的版本控制功能,允許使用者建立分支、合併程式碼以及處理衝突。
  2. 程式碼審查:GitLab支援程式碼審查流程,團隊成員可以對提交的程式碼進行評論和討論。
  3. 專案管理:透過Issue和Merge Request等特性,GitLab幫助團隊跟蹤進度和管理任務。
  4. 持續整合/持續部署:GitLab CI/CD是其核心功能之一,支援自動化的構建、測試和部署流程。
  5. 自託管與雲服務:GitLab可以自行在本地伺服器上部署,也可以使用GitLab提供的雲服務。
  6. 內建工具:GitLab提供了一系列的內建工具,如容器掃描、安全性報告、效能分析等,以增強開發流程的安全性和效率。
  7. 社群版和企業版:GitLab提供社群版(CE)和企業版(EE),社群版免費開放,而企業版提供了更多的高階功能。

2、GitLab與Git的關係,以及GitHub的區別和聯絡

GitLab是在Git的基礎上搭建起來的,與GitHub有著相似的功能但也存在一些差異。

首先,Git是一個分散式版本控制系統,而GitLab和GitHub都是基於這個系統建立起來的平臺。

GitLab的主要優點在於它的開源特性,允許使用者在私有伺服器上執行,這對於企業內部網路構建私有倉庫非常有用。而GitHub雖然提供了類似的服務,但其核心是面向開源專案的託管平臺,對於私有倉庫則有一定的收費政策。

其次,GitLab提供了免費的無限私有儲存庫,適合企業、學校等內部網路搭建git私服。相比之下,GitHub的私有倉庫需要付費。此外,GitLab還提供了企業版(GitLab EE),它包含了更高階的功能,如訪問控制、安全性以及合規性等。

最後,GitHub因其較早成立,擁有更廣泛的使用者基礎和社群支援。這使得GitHub在全球開發者中的知名度和使用率都較高。而GitLab雖然相對較新,但由於其開源和免費的特性,也逐漸獲得了市場的認可。

3、搭建Gitlab

3.1、下載gitlab-ce的rpm軟體包

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/7/gitlab-ee-16.10.0-ee.0.el7.x86_64.rpm

3.2、rpm安裝gitlab

rpm -ivh gitlab-ee-16.10.0-ee.0.el7.x86_64.rpm

安裝完成後截圖如下:

3.3、建立gitlab儲存目錄

建立gitlab資料儲存目錄
mkdir -p /nfs/gitlab/gitdata
建立gitlab備份儲存目錄
mkdir -p /nfs/gitlab/backups

3.3、修改gitlab配置檔案

vi /etc/gitlab/gitlab.rb

修改訪問地址
external_url 'http://10.1.16.173'

修改GitLab伺服器時區
gitlab_rails[‘time_zone’] = 'Asia/Shanghai'

修改資料儲存目錄
git_data_dirs({
   "default" => {
     "path" => "/nfs/gitlab/gitdata"
    }
})

設定郵箱服務
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "emailsmtp02.mindray.com"
gitlab_rails['smtp_port'] = 25
# gitlab_rails['smtp_user_name'] = "smtp user"
# gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "mindray.com"
# gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

修改日誌存放路徑
gitlab_rails['log_directory'] = "/nfs/gitlab/log"

停止當前gitlab,重新載入配置

gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start

重新載入後,會發現在/nfs/gitlab/gitdata目錄下多出一個repositories目錄
最後啟動gitlab即可
gitlab-ctl restart

訪問web系統
http://10.1.16.173

此時應該看到的是 GitLab 登入介面。在 GitLab 第一次初始化時,會自動生成一個管理員賬戶。其中,該賬戶的使用者名稱為 root,密碼在一個自動生成的檔案 /etc/gitlab/initial_root_password 中(密碼不會含空格),且會在 24 小時後自動被刪除。

現在要做的是,先備份上述的檔案 initial_root_password,然後登入管理員賬戶修改管理員密碼。新密碼長度不能小於 8 位。

[root@hqiotnfs01l ~]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: kCsRV6ijYc3X2RceyfdhZEB5E7OqXBjESLpQrCrpY/0=

修改密碼
root
XXXXXXXX

3.4、gitlab相關命令

#啟動服務
gitlab-ctl start
#停止服務
gitlab-ctl stop
#重啟服務
gitlab-ctl restart
#狀態
gitlab-ctl status
#監控
gitlab-ctl  tailunicorn 監控unicorn日誌
gitlab-ctl  tail

檢視Gitlab 安裝包
rpm –qa | grep gitlab

刪除gitlab
rpm –e gitlab-ce

檢視gitlab 程序
ps aux | grep gitlab

殺掉所有gitlab 程序
Kill –9  程序號

刪除所有包含gitlab檔案
find / -name | grep gitlab rm -rf

4、Gitlab配置

相關文章