有相對應的作業系統安裝說明 https://about.gitlab.com/install/#centos-7
這邊安裝的版本是 gitlab-ce 13.2.2
安裝(設定nginx SSL憑證,使用 HTTPS 連線)
- 安裝依賴的的套件
$ yum install -y curl policycoreutils-python openssh-server
- 啟動 SSH 服務
$ systemctl enable sshd $ systemctl start sshd
- 防火牆開啟網頁要用的PORT網頁
這邊開 9000 PORT,預計當 HTTPS PORT
//firewall-cmd --permanent --add-service=http //firewall-cmd --permanent --add-service=https $ firewall-cmd --permanent --zone=public --add-port=9000/tcp $ systemctl reload firewalld $ firewall-cmd --list-all --zone=public
- 安裝 SMTP Server (Postfix)
使用者註冊、初次修改密碼、忘記密碼使用
$ yum install postfix $ systemctl enable postfix $ systemctl start postfix
- 安裝 GitLab 套件的yum儲存庫(repo)
有兩個版本,CE社群版(Community Edition),EE企業版(Enterprise Edition)
Community Edition or Enterprise Edition | GitLab
這邊安裝 CE 版,若要安裝 EE 版,將指令中的「ce」改成「ee」即可
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
- 使用 yum 指令安裝 GitLab 套件,GitLab 自帶很多會用到的其他套件(nginx、puma、...)
我在2G RAM虛擬機器上安裝時,跑很久都沒跑完,記憶體被吃光。
後來看到官網建議要4G RAM,改成4G RAM才在可忍受的時間安裝完畢。
$ yum install -y gitlab-ce
- 預計使用 HTTPS 加密連線,先產生 nginx 使用的 SSL 憑證
(這邊選擇用自己發的憑證,若有合法網域,可略過此步驟,GitLab 會自動申請Let's Encrypt的憑證)
$ mkdir /etc/gitlab/ssl $ chmod 755 /etc/gitlab/ssl $ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/gitlab/ssl/nginx.key -out /etc/gitlab/ssl/nginx.crt
- 修改 GitLab 設定檔 gitlab.rb,設定網頁訪問用的外部網址,與設定 nginx 使用的SSL憑證
$ vi /etc/gitlab/gitlab.rb
external_url 改為要瀏覽的網址external_url 'https://192.168.0.100:9999'
修改 GetLab 自帶 Nginx 的 ssl_certificate、ssl_certificate_key 設定
預設為
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt" # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
改為
nginx['ssl_certificate'] = "/etc/gitlab/ssl/nginx.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/nginx.key"
若沒改,預設會取得 external_url 設定中的網域,自動向 Let's Encrypt 申請憑證
但如果設定的網域是自訂的,或設定的是IP,無法申請 Let's Encrypt 認證的憑證
所以這邊選擇設定自發憑證的位置
更新GitLab服務設定
$ gitlab-ctl reconfigure
執行 gitlab-ctl reconfigure 後,即可使用 external_url 設定的網址訪問
(若出現 502 錯誤,可稍等一下,我測試 gitlab-ctl reconfigure 一跑玩,馬上試,出現502,似乎相關服務還沒重新跑)
若依然出現502錯誤
502-Whoops, GitLab is taking too much time to respond
檢查 GetLab 自帶且目前啟動的服務中(gitlab-ctl status),有哪些可能是 PORT 跟系統原本的服務相衝突了
可在 /etc/gitlab/gitlab.rb 中修改各服務使用的 PORT
(自帶 Nginx 使用的PORT,依 external_url 設定的網址而定) - 安裝成功,系統預設有一個 root 帳號,瀏覽 external_url 設定的網址
會出現設定root密碼的畫面,設定後,即可用 root 登入 - 若為自發的HTTPS憑證,則專案的git config須設定 http.sslVerify false才能存取
$ git config [--global] http.sslVerify false
其他:
- GitLab專案儲存庫(repositories),存放位置修改
例如,改到 /home/git-data
$ mkdir /home/git-data #參考原本repositories資料夾位置 /var/opt/gitlab/git-data 權限,做了一樣的修改(雖然官網說明沒寫) $ chown git.root /home/git-data $ chmod 700 /home/git-data
修改 gitlab.rb 設定檔中的 git_data_dirs 設定,改為新的資料夾位置路徑
$ vi /etc/gitlab/gitlab.rb
git_data_dirs({ "default" => {"path" => "/home/git-data"} })
讓設定生效
$ gitlab-ctl reconfigure
若原本repositories 已有資料,可用以下操作移到新位置
$ gitlab-ctl stop # Note there is _no_ slash behind 'repositories', but there _is_ a # slash behind 'git-data' $ rsync -av /var/opt/gitlab/git-data/repositories /home/git-data/ $ gitlab-ctl upgrade $ gitlab-ctl start
- GitLab 關閉開放自行註冊帳號
管理者登入後 > Admin Area > General > Sign-up restrictions >Sign-up enabled - GitLab 關閉SSH,只通過https存取
管理者登入後 > Admin Area > General > Visibility and access controls > Enabled Git access protocols - 相關指令
gitlab-ctl reconfigure # 更新GitLab服務設定 gitlab-ctl restart # 重新啟動GitLab gitlab-ctl status # 檢視GitLab服務狀態 gitlab-ctl tail # 查看GitLab服務執行期間的log gitlab-ctl stop nginx # 停止GitLab自帶的nginx gitlab-ctl start nginx # 啟動GitLab自帶的nginx
參考:
https://docs.gitlab.com/omnibus/settings/nginx.html#manually-configuring-https
https://docs.gitlab.com/omnibus/settings/configuration.html#storing-git-data-in-an-alternative-directory
https://docs.gitlab.com/omnibus/package-information/defaults.html
收穫良多。非常感謝。
回覆刪除感謝你的分享
回覆刪除