伺服器上已經安裝好了Nginx,配置了多個網站服務,這個情況下我們怎樣安裝配置gitlab才能不影響現有的Nginx網站服務?以及如何開啟Pages用戶網站頁面服務?
以下參照阿里雲CentOS7進行介紹,Nginx的安裝請參照下面這個文章:
CentOS7下的Nginx安裝和配置
Gitlab安裝好之後,主要設置都在/etc/gitlab/gitlab.rb文件裡面,你可以用sftp軟體登陸伺服器找到它,然後用任何IDE或文本編輯器編輯。正常情況全部內容都被注釋了,我們添加以下三行。
external_url &39;nginx[&39;] = falseweb_server[&39;] = [&39;]
如果是apache伺服器,應改為web_server[&39;] = [&39;]
保存更新,然後重新配置Gitlab,使用下面命令:sudo gitlab-ctl reconfigure
如果遇到問題的話,更多參考內容看這裡(英文)。
Gitlab官方為我們準備好了Nginx需要的配置文件,訪問這裡GitLab recipes repository去下載。
Nginx下載 web-server/nginx/gitlab-omnibus-nginx.conf文件。
它其實就是Nginx虛擬服務的配置文件,打開後查看,修改內容類似下面這樣:
upstream gitlab-workhorse { server unix:/var/opt/gitlab/gitlab-workhorse/socket;}server { listen 80 ; server_name git.10knet.com; server_tokens off; root /opt/gitlab/embedded/service/gitlab-rails/public; access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location / { client_max_body_size 0; gzip off; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://gitlab-workhorse; }}
其實只要修改server{}開頭的幾行。你可以把這個server的配置整合到你原來的/etc/nginx/nginx.conf文件或其他配置文件中,然後nginx -s reload使配置生效。
注意!不是直接添加到conf文件結尾,而是根據具體情況,仔細規劃一下才行。更多內容請參考Nginx官方配置說明。
Gitlab的Pages服務可以把用戶的一個項目變為一個靜態網站,在gitlab.rb中要開啟設置:
pages_external_url &34;gitlab_pages[&39;] = true
完整的具體配置參照我的這個文章:
部署Gitlab Pages服務
但這個文章是不使用外部Nginx的情況。下面我們來看如何配置外部Nginx服務來實現子域名解析(泛解析)。
實際上所有的Pages靜態網頁文件都在/var/opt/gitlab/gitlab-rails/shared/pages這個目錄,我們的任務就是把zhyuzh.git.10knet.com/mysite這樣的地址解析到.../pages/zhyuzh/mysite目錄。
默認情況Gitlab的Pages服務運行在本地的8090埠上,我們為Nginx添加以下設置:
upstream gitlab-pages{ server 127.0.0.1:8090;}server { listen 80; server_name *.git.10knet.com; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection &34;; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header X-Forward-Proto http; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; proxy_pass http://gitlab-pages; }}
這個和前面那個gitlab-workhorse設置很像,可以對比參考。保存之後nginx -s reload重載設置,正常的話就完全OK了。
10knet.com現在採用的Nginx策略是: