本地搭建的GitLab中开启Pages功能,不需要域名也可以

时间:2024-10-12 18:49:41

2019独角兽企业重金招聘Python工程师标准>>>

最近在公司内部,我负责搭建了GitLab服务,开启了从SVN逐步转到GIT的路程。目前自建的GitLab运行状态良好,非常好用。但是默认的GitLab并没有开启Pages服务,这样的话在编写项目说明文档时,就很不方便了。于是自己试着在本地搭建的GitLab中开启Pages功能,下面把开启过程和遇到的问题记录下来,分享给大家。

1、开启GitLab Pages功能

编辑 /etc/gitlab/文件,修改如下两行

  1. ##! Define to enable GitLab Pages
  2. pages_external_url "http://R7102/"
  3. 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的安装包。

/runner/gitlab-runner

安装好之后,就可以通过命令为我们的项目添加runner了,在命令行中输入以下命令,按照提示一步一步完成即可。

gitlab-runner register

其中需要填写URL和Token,可以在GitLab项目的概览->Runners找到,类似下图:

3、配置Pages服务的CI

在工程根目录下,创建.文件,文件内容可以通过GitLab内置的模板生产,如下图:

这里选择HTML为例,就生产了以上代码。其中cp -r docs/. .public这句根据需要修改,将docs改为你存放pages页面的路径即可。

这样,当我们每次执行push动作后,就会触发pages的自动部署。将我们的pages页面发布到GitLab Pages服务中。

4、如何访问Pages页面呢?

如果你有在上面配置开启Pages时配置了域名了,那么直接访问:http://你的Git账号.域名/工程名,例如:

/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文件,内容如下:

  1. server {
  2. listen 6869; ## 端口根据需要填写
  3. server_name 10.21.100.200; ## IP根据实际情况填写
  4. server_tokens off; ## Don't show the nginx version number, a security best practice
  5. ## Disable symlink traversal
  6. disable_symlinks on;
  7. access_log /var/log/gitlab/nginx/gitlab_pages_access.log gitlab_access;
  8. error_log /var/log/gitlab/nginx/gitlab_pages_error.log;
  9. # Pass everything to pages daemon
  10. location / {
  11. # 指向pages的发布目录
  12. root /var/opt/gitlab/gitlab-rails/shared/pages;
  13. index ;
  14. }
  15. # Define custom error pages
  16. error_page 403 /;
  17. error_page 404 /;
  18. }

配置好后重启Nginx:gitlab-ctl restart nginx

访问页面:http://IP:端口/gitlab账号/工程名/public/,例如:http://10.21.100.200:6869/xiaowang/project01/public/#/