搭建 gitlab 以及 gitlab pages 问题总结

2020-03-224514

搭建 gitlab 以及 gitlab pages 问题总结

[TOC]

gitlab

安装的环节就不多赘述了,网上比较多,请自行谷歌或百度

安装好 gitlab 后比较大的问题是 nginx

默认情况下,gitlab使用自带的nginx,占用80端口,这样就与系统原本安装的nginx冲突

有两个方案:

  1. 方案一:通过修改 gitlab 的 nginx 端口解决冲突
  2. 方案二:禁用 gitlab 自带 nginx 并把 UNIX 套接字 更改为 TCP端口

我采用了方案一,步骤如下:

  1. vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
    • listen *:80; 改成 listen *:888; (888是你自定义的端口,随便换成其他没应用占用的都可以)
  2. vim /etc/gitlab/gitlab.rb
    • 修改 external_url 字段,改成 external_url 'http://example.cn' (example.cn 是你自己的域名,记得在域名供应商那里配置好指向你的 gitlab 服务器 ip)
    • 修改 nginx['listen_port'],改成 nginx['listen_port'] = 888,888 这个端口要跟上面的一致
  3. 重启,执行以下两行命令
    • sudo gitlab-ctl reconfigure
    • sudo gitlab-ctl restart
    • ps:如果提示找不到命令的话,查一下 /usr/bin/gitlab-ctl /opt/gitlab/bin/gitlab-ctl,如果有,用sudo /usr/bin/gitlab-ctl reconfigure 也是可以的
  4. 设置本机nginx反向代理
    • vim /usr/local/nginx/conf/vhost/example.cn.conf,修改成如下代码,并且重启 nginx , 执行 nginx -s reload
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://0.0.0.0:888;
    }
}

参考资料: GitLab CE 搭建小结 GitLab使用详解

开启 gitlab pages 服务

印象中 Gitlab CE系统版本在 9.x 以上的都有 pages 服务

准备事项

开放服务器端口

Gitlab Pages 服务默认: 8090

准备一个域名,最好是一个独立的域名 pages.example.com,不要使用 gitlab 系统的域名

gitlab page 服务配置

  1. 启用服务,执行 vim /etc/gitlab/gitlab.rb

    • 修改gitlab_pages['enable'] 字段,改成 gitlab_pages['enable'] = true
    • 修改pages_external_url 字段,改成 pages_external_url "http://pages.example.com"
  2. 两种代理方式:(执行 vim /etc/gitlab/gitlab.rb

    1. 方式一:开启 gitlab 的 Nginx,用本机的 Nginx 反向代理到 gitlab 的 Nginx
      • 修改pages_nginx['enable'] 字段,改成 pages_nginx['enable'] = true
      • 修改pages_nginx['listen_port'] 字段,改成 pages_nginx['listen_port'] = 888
      • vim /var/opt/gitlab/nginx/conf/gitlab-pages.conf
        • listen *:80; 改成 listen *:888; (888 要给上面的gitlab端口一致)
    2. 方式二:直接开启 gitlab 的代理配置,用本机的 Nginx 反向代理 gitlab page 的服务(推荐使用这种
      • 修改gitlab_pages['listen_proxy'] 字段,改成 gitlab_pages['listen_proxy'] = "127.0.0.1:888"
  3. 重启,执行以下两行命令

    • sudo gitlab-ctl reconfigure
    • sudo gitlab-ctl restart
    • ps:如果提示找不到命令的话,查一下 /usr/bin/gitlab-ctl /opt/gitlab/bin/gitlab-ctl,如果有,用sudo /usr/bin/gitlab-ctl reconfigure 也是可以的
  4. 设置本机nginx反向代理

    • vim /usr/local/nginx/conf/vhost/pages.example.cn.conf,修改成如下代码,并且重启 nginx , 执行 nginx -s reload
server
{
  listen      80;
  # 前面要加* 是因为启动 pages,会在给定域名前面增加多 group 的名字
  server_name  *.pages.example.cn;
  charset utf-8;

  location / {
    client_max_body_size    1000m;
    proxy_redirect off;
    #以下确保 gitlab中项目的 url 是域名而不是 http://git,不可缺少
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 反向代理到 gitlab 内置的 nginx
    proxy_pass http://127.0.0.1:888/;
    index index.html index.htm;
  }
}

安装Gitlab Runner

因为Gitlab Runner 会消耗大量内存,以及可能的安全隐患,尤其是以shell执行器的方式使用Gitlab Runner。如果有多台服务器可供使用,官方推荐的做法是将Runner安装到与Gitlab不同的另外的服务器上

ps:我选择直接用 yum 安装

注册 Gitlab Runner

使用官网文件进行注册

ps:我选择了将 runner 跑在 docker 上,所以需要在安装 runner 的服务器上安装 docker,并且拉取 alpine 镜像

创建项目

我在项目的根目录下创建了 docs 目录,把 jsdoc 打包出来的 html 文档都放里面

然后在根目录创建 .gitlab-ci.yml 文件,代码如下:

image: alpine:latest

pages:
  stage: deploy
  script:
  - ls
  - cp -r docs public
  artifacts:
    paths:
    - public
  tags:
  - pages-tag

这样当你提交后将会在 pages-tag 同名的 Runner 上执行自动部署操作

成功后在项目的 pages 中会有如下图

参考资料: Exploring GitLab Pages | GitLab 中文文档教程 开启 Gitlab Pages 服务 Gitlab搭建与Gitlab Pages配置 Gitlab CI yaml官方配置文件翻译

升级 gitlab

升级指南

GitLab 社区版不支持直接跨版本升级,需按照官方指南一步步向上升级,若版本越旧,需要跨的版本就越多

这次是从 9.1.2-ce.0.el6.x86_64 升级到 gitlab-ce-12.8.7-ce.0.el6.x86_64

选择的路径是:

9.1.2 -> 9.1.10 -> 9.2.0 -> 9.2.6 -> 9.5.10 -> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.8.5 -> 12.8.7

备份

在原主机上执行备份命令,生成备份文档,路径为 /var/opt/gitlab/backups/

gitlab-rake gitlab:backup:create

关停核心服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx

使用 yum 升级

因为一开始是直接用 yum 安装的,所以升级时也是直接用 yum 进行升级

在官网的 packages 中找到以上安装路径的安装包(ps:Distro/Version 都要对上,跟一开始的要一直,像我用的是 x.x.x-ce.0.el6.x86_64,所有信息都要对上)

第一次要先拉脚本,执行:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

然后安装升级:

sudo yum install gitlab-ce-9.1.10-ce.0.el6.x86_64

安装好后,可以使用 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 查看版本号是否对上

为了保险起见,再执行,关闭gitlab 核心服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx

然后再升级下一个版本

sudo yum install gitlab-ce-9.2.0-ce.0.el6.x86_64

一直到目标版本

过程遇到的问题

sudo yum install 的出错

执行以上命令后,报错:

Package gitlab-ce-9.1.10-ce.0.el6.x86_64.rpm is not signed

解决方案:

  1. /etc/yum.confgpgcheck=1 改为 gpgcheck=0
  2. 执行: sed -i'' 's/^gpgcheck=0/gpgcheck=1/' /etc/yum.repos.d/gitlab_gitlab-ce.repo
  3. 执行 vim /etc/yum.repos.d/gitlab_gitlab-ce.repo
    • gpgcheck=1 改为 gpgcheck=0
    • gpgkey 都改成以下代码
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
        https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg

参考资料: gitlab-ce-7.4.3 至 gitlab-ce-11.1.4 升级记录

GitLab从安装到全自动化备份一条龙

分享
点赞1
打赏
上一篇:代理工具Fiddler -调试与替换接口状态
下一篇:js 定时器 | 填坑系列