GitLab搭建並接入自建Nginx

前言

我一輩子的文章都會放在這裏,個人博客,我但願每一行代碼,每一段文字都能幫助你。 https://github.com/CrazyCodes...

你們好,我是CrazyCodes,這篇文章的標題有些嚴肅了,算是很是單純的教學文,願能夠幫助到有須要的人。html

GitLab

GitLab與GitHub和碼雲同樣,都是以web形式存在的在線管理Git倉庫而且都擁有優雅的可視化操做頁面。固然這篇文章我們不介紹這沒用的。python

由於GitLab/Hub或者碼雲對免費用戶不是夠友好,不管是在庫的容量或者協做人員都有些許限制,GitHub的提交速度對中國程序員更是慢如蝸牛。nginx

網絡上關於GitLab安裝的文章並很多,由於GitLab在安裝過程當中會默認再安裝一個Nginx,這必然會與已有Nginx衝突,寫這篇文章主要的目的仍是對已存在Nginx服務的服務器如何配置GitLab作一個指導。git

安裝

服務器版本:(阿里雲) CentOS Linux release 7.6.1810
GitLab版本:12.4.0-ee
Nginx版本:nginx/1.17.0程序員

基本都算是比較新的版本了,廢話很少說,咱們開始吧!github

第一步:進入GitLab官網

https://about.gitlab.com/install/web

第二步: 執行一大堆牛逼的命令

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數組

第五步:完成

就是這麼簡單,安裝完成了。第一次訪問的時候會要求從新設置密碼。用戶名默認爲 rootbash

配置

安裝完成後,須要對現有的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,解決了這個問題。

致謝

大多都是官方的文字,可能只是不太好找,因此網絡上常常出現這個問題,但都無解,因此寫這麼個水文,幫助須要的人,固然,提倡仍是去看官網的文檔。

感謝你看到這裏,但願本篇文章能夠幫到你。

相關文章
相關標籤/搜索