本地搭建的GitLab中開啟Pages功能,不需要域名也可以
最近在公司內部,我負責搭建了GitLab服務,開啟了從SVN逐步轉到GIT的路程。目前自建的GitLab執行狀態良好,非常好用。但是預設的GitLab並沒有開啟Pages服務,這樣的話在編寫專案說明文件時,就很不方便了。於是自己試著在本地搭建的GitLab中開啟Pages功能,下面把開啟過程和遇到的問題記錄下來,分享給大家。
1、開啟GitLab Pages功能
編輯 /etc/gitlab/gitlab.rb檔案,修改如下兩行
##! Define to enable GitLab Pages pages_external_url "http://R7102/" gitlab_pages['enable'] = true
注意的這裡的pages_external_url,配置的是Pages使用的域名。如果你沒有域名,就先隨便寫個主機名什麼的。之後我們可能通過配置Nginx來解決。
※注意,最好通過 gitlab-ctl restart 重啟GitLab,使得GitLab Pages功能生效。
2、安裝配置GitLab Runner
為了能夠自動釋出Pages,我們需要安裝GitLab Runner,然後通過GitLab CI做到Pages內容的自動更新。
由於網路環境不穩定,所以建議不要使用yum方式安裝Runner,可以點選下面的連結下載GitLab Runner的安裝包。
https://packages.gitlab.com/runner/gitlab-runner
安裝好之後,就可以通過命令為我們的專案新增runner了,在命令列中輸入以下命令,按照提示一步一步完成即可。
gitlab-runner register
其中需要填寫URL和Token,可以在GitLab專案的概覽->Runners找到,類似下圖:
3、配置Pages服務的CI
在工程根目錄下,建立.gitlab-ci.yml檔案,檔案內容可以通過GitLab內建的模板生產,如下圖:
這裡選擇HTML為例,就生產了以上程式碼。其中cp -r docs/. .public這句根據需要修改,將docs改為你存放pages頁面的路徑即可。
這樣,當我們每次執行push動作後,就會觸發pages的自動部署。將我們的pages頁面釋出到GitLab Pages服務中。
4、如何訪問Pages頁面呢?
如果你有在上面配置開啟Pages時配置了域名了,那麼直接訪問:http://你的Git賬號.域名/工程名,例如:
http://xiaowang.mypages.com/project01
但是如果你不想那麼麻煩還得配置域名的話,這裡也有解決方法,由於GitLab Pages服務是部署到Nginx中,我們可以同配置Nginx來通過IP地址訪問。
首先要找啊找,找到Pages的釋出位置,和GitLab內建Nginx的位置,分別如下:
1、Pages部署目錄:/var/opt/gitlab/gitlab-rails/shared/pages
2、內建Nginx目錄:/var/opt/gitlab/nginx
然後編輯nginx目錄下的conf/gitlab-pages.conf檔案,內容如下:
server {
listen 6869; ## 埠根據需要填寫
server_name 10.21.100.200; ## IP根據實際情況填寫
server_tokens off; ## Don't show the nginx version number, a security best practice
## Disable symlink traversal
disable_symlinks on;
access_log /var/log/gitlab/nginx/gitlab_pages_access.log gitlab_access;
error_log /var/log/gitlab/nginx/gitlab_pages_error.log;
# Pass everything to pages daemon
location / {
# 指向pages的釋出目錄
root /var/opt/gitlab/gitlab-rails/shared/pages;
index index.html;
}
# Define custom error pages
error_page 403 /403.html;
error_page 404 /404.html;
}
配置好後重啟Nginx:gitlab-ctl restart nginx
訪問頁面:http://IP:埠/gitlab賬號/工程名/public/,例如:http://10.21.100.200:6869/xiaowang/pro