GitLab搭建並接入自建Nginx
- 2019 年 11 月 7 日
- 筆記

前言
我一生的文章都會放在這裡,我的部落格,我希望每一行程式碼,每一段文字都能幫助你。https://github.com/CrazyCodes/Blog
大家好,我是CrazyCodes,這篇文章的標題有些嚴肅了,算是非常單純的教學文,願可以幫助到有需要的人。
GitLab
GitLab與GitHub和碼雲一樣,都是以web形式存在的在線管理Git倉庫並且都擁有優雅的可視化操作頁面。當然這篇文章咱們不介紹這沒用的。
因為GitLab/Hub或者碼雲對免費用戶不是夠友好,無論是在庫的容量或者協作人員都有些許限制,GitHub的提交速度對中國程式設計師更是慢如蝸牛。
網路上關於GitLab安裝的文章並不少,因為GitLab在安裝過程中會默認再安裝一個Nginx,這必然會與已有Nginx衝突,寫這篇文章主要的目的還是對已存在Nginx服務的伺服器如何配置GitLab做一個指導。
安裝
伺服器版本:(阿里雲) CentOS Linux release 7.6.1810 GitLab版本:12.4.0-ee Nginx版本:nginx/1.17.0
基本都算是比較新的版本了,廢話不多說,我們開始吧!
第一步:進入GitLab官網
https://about.gitlab.com/install/
第二步: 執行一大堆牛逼的命令
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo systemctl reload firewalld
第三步:下載GitLab安裝文件
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
第四步:安裝
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee
EXTERNAL_URL 這個配置就默認好了,畢竟咱們也不用GitLab自帶的Nginx
第五步:完成
就是這麼簡單,安裝完成了。第一次訪問的時候會要求重新設置密碼。用戶名默認為 root
配置
安裝完成後,需要對現有的GitLab做一些配置更改。
官方文檔:https://docs.gitlab.com/12.4/omnibus/settings/nginx.html#using-a-non-bundled-web-server
禁用NGINX
在文件
/etc/gitlab/gitlab.rb
下,將配置設置為false
nginx['enable'] = false
設置所屬用戶
需要將自建Nginx的所屬用戶加入到配置內 在文件
/etc/gitlab/gitlab.rb
下,將配置設置為 www-data
對於Debian/Ubuntu,默認用戶是
www-data
對於RHEL/CentOS,NGINX用戶是nginx
。
當然如果安裝nginx未指定所屬用戶,也有可能會是root。當然可以通過命令
cat /usr/local/nginx/conf/nginx.conf | grep user
查看所屬用戶,實際就在配置文件里寫著
user root; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '"$http_user_agent" "$http_x_forwarded_for"';
回到正題,修改配置為root(剛剛講過了,為啥是root)
web_server['external_users'] = ['root']
這個設置是一個數組,可以添加多個用戶。設置好後運行命令
sudo gitlab-ctl reconfigure
配置已生效
添加虛擬主機
GitLab已經為開發者準備好相應的vhost文件。可以通過訪問下方鏈接獲取 https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server 配置完成後執行
nginx -s reload
既完成,原理很簡單,其他配置我也不是太明白,大概則是使用反向代理轉發了一下請求這樣子。
問題
在最新版本中,如果按照上述方式配置,可能會在提交過程中出現422錯誤,具體原因不清楚,我遇到這個問題後配置了ssl,解決了這個問題。
致謝
大多都是官方的文字,可能只是不太好找,所以網路上經常出現這個問題,但都無解,所以寫這麼個水文,幫助需要的人,當然,提倡還是去看官網的文檔。
感謝你看到這裡,希望本篇文章可以幫到你。