CentOS 7下Yum及RPM安裝GitLab CE 14.0.3
一、概述
GitLab是一個利用Ruby on Rails開發的開源應用程序,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。它擁有與GitHub類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用,便于日后有需要的時候進行查找。
二、部署環境說明
本文中使用本地VM虛機部署測試。
OS:CentOS 7.8 x64
IP:192.168.168.100
虛機配置:2核CPU、4G內存
注:系統為最小化安裝,部署前已完成系統初始化、內核及安全優化。
官方文檔:
https://doc.gitlab.cc/omnibus/
推薦安裝方法:官方 Linux 軟件包。Linux軟件包安裝速度更快、升級更容易,并且包含其他方法所沒有的增強可靠性的功能。 通過單個包(也稱為 Omnibus)安裝,該包捆綁了運行 GitLab 所需的所有不同服務和工具。 建議至少 4 GB 的內存。
三、基礎依賴環境
1.安裝依賴
- yum -y install curl policycoreutils-python openssh-server perl
2.防火墻配置
CentOS7 默認使用firewall,本文中禁用firewall,使用iptables。后續按實際配置需求開放端口。
3.安裝 Postfix(CentOS 7系統一般已默認安裝)
使用Postfix發送通知電子郵件。如果想使用其他解決方案發送電子郵件,請跳過此步驟并在安裝GitLab后配置外部SMTP服務器。
- yum -y install postfix
- systemctl enable postfix
- systemctl start postfix
四、YUM安裝GitLab
1.添加 GitLab 包存儲庫
方法一:使用官方YUM源
- curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
方法二:使用國內YUM源
## 新建REPO文件
- vi /etc/yum.repos.d/gitlab-ce.repo
- //添加如下內容
- [gitlab-ce]
- name=Gitlab CE Repository
- baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
- gpgcheck=0
- enabled=1
## 更新本地yum緩存
- yum makecache fast
2.安裝
## 安裝最新版
- yum -y install gitlab-ce
安裝完成如下圖所示。

上圖提示:GitLab 無法檢測到實例的有效主機名,請通過設置 /etc/gitlab/gitlab.rb 文件中的“external_url”配置項為GitLab實例配置URL。
## 安裝指定版本
- yum -y install gitlab-ce-x.x.x
- //x.x.x代表版本號
五、RPM包安裝GitLab
如果不習慣通過安裝存儲庫來安裝Gitlab,可以下載RPM包來安裝。RPM包集成了它所需要的軟件,簡化安裝步驟。
官方RPM包地址:
https://packages.gitlab.com/gitlab/gitlab-ce
國內RPM包地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
- cd /data/tools
- wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.3-ce.0.el7.x86_64.rpm
- rpm -ivh gitlab-ce-14.0.3-ce.0.el7.x86_64.rpm
安裝完成如下圖所示。

上圖提示:GitLab 無法檢測到實例的有效主機名,請通過設置 /etc/gitlab/gitlab.rb 文件中的“external_url”配置項為GitLab實例配置URL。
六、配置GitLab
1.修改gitlab.rb配置
## 設置 external_url ,綁定監聽的域名或IP端口。若GitLab需通過公網訪問,最好配置域名加HTTPS;若是內部網絡訪問,則可配置IP+端口,也可配置域名,用戶通過配置本地hosts解析訪問。
## 本文中為測試,使用IP+端口的方式,即 http://192.168.168.100:90。設置的端口不能被占用,默認是80端口,如果80已經使用,可自定義其它端口,并在防火墻設置開放相對應的端口。
- vi /etc/gitlab/gitlab.rb

2.加載配置
- gitlab-ctl reconfigure
- //第一次配置時間較長,請耐心等待

注:①初始化默認管理員帳戶的用戶名為 root ,密碼存儲在
/etc/gitlab/initial_root_password 文件中,此文件將在 24 小時后的第一次重新配置運行中清除。
②若非必要不建議做第二次初始化,后續若有修改配置文件使用命令 gitlab-ctl restart 重啟所有組件服務即可生效新的配置。
③先修改gitlab.rb文件中的“external_url”選項值,再使用“gitlab-ctl reconfigure”命令配置GitLab。就不需要在配置后修改 “
/var/opt/gitlab/gitlab-rails/etc/gitlab.yml ”文件中的“Web server settings”的值,如下圖:

以及不需要修改 “
/var/opt/gitlab/nginx/conf/gitlab-http.conf ”文件的“server”選項中的"listen"和“server_name”的值,如下圖:

七、測試訪問
## 查看初始化管理員帳戶密碼,密碼存儲在
/etc/gitlab/initial_root_password 文件中。本文中初始化管理員帳戶生成的密碼為:w8HgJZJd2+USFDwKxQWqRO2FWUQjE9UfBUFbLx3kfRM=

## 瀏覽器地址欄輸入:http://ip:port/,本文為http://192.168.168.100:90。服務器iptables防火墻已放開90端口。

## 輸入初始管理員賬戶: root 密碼:XGi+u+5Z3Nga/lLK+
fgpxTuTOADzHd9h9vWmquUU4cQ= ,登錄。

## 登錄成功后的首頁。

## 接下來就可以使用GitLab了,本文中不一一闡述。
八、修改管理員密碼
管理員帳戶root密碼是初始化默認生成的,建議在首次登錄后進行修改。
方法一:
## 點擊首頁左上角 "Menu" → “Admin” ,如下圖所示:

## 左側欄中 “Overview” → “Users”,會在右側頁面中顯示當前用戶,新安裝部署的GitLab只有一個管理員帳戶,單擊管理員帳戶信息欄最后的 "Edit"。如下圖所示:

## 在編輯頁面的"Password"選項中輸入兩次新密碼,點擊頁面底部的"Save changes",保存更改。

方法二:
## 點擊首頁右上角管理員帳戶頭像 → “Edit profile” ,如下圖所示:

## 點擊左側欄中 “Password”,在右側頁面中輸入管理員帳戶當前密碼、兩次新密碼,點擊“Save password”保存更改。如下圖所示:

方法三:
通過Rails 控制臺重置管理員帳戶密碼。
Rails 控制臺官方文檔:
https://docs.gitlab.com/ce/administration/operations/rails_console.html
登錄GitLab應用所在的服務器,執行下列命令:
## 對于使用YUM源或RPM包安裝的使用如下命令連接Rails 控制臺
- gitlab-rails console

## 使用如下命令完成重置密碼
- user = User.first
- //切換至超級管理員,id為1的是超級管理員
- user.password = 'yourNewpassword'
- //密碼至少8個字符,此處重置的新密碼為"yourNewpassword"
- user.save!
- //如無問題返回"true"

## 修改完成,輸入 quit 或 exit 退出Rails 控制臺。
方法四:
使用Rake Task重置管理員帳戶密碼。
官方文檔:
https://docs.gitlab.com/ce/security/reset_user_password.html
登錄GitLab應用所在的服務器,執行下列命令:
- gitlab-rake "gitlab:password:reset"
- //輸入管理員帳戶及兩次新密碼

九、GitLab常用命令
- ## 配置GitLab
- gitlab-ctl reconfigure
- ## 啟動所有 gitlab 組件
- gitlab-ctl start
- ## 停止所有 gitlab 組件
- gitlab-ctl stop
- ## 重啟所有 gitlab 組件
- gitlab-ctl restart
- ## 查看服務狀態
- gitlab-ctl status
- ## 檢查GitLab
- gitlab-rake gitlab:check SANITIZE=true --trace
- ## 查看日志
- gitlab-ctl tail
【編輯推薦】