1. 程式人生 > >本地搭建的GitLab中開啟Pages功能,不需要域名也可以

本地搭建的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