Back

gitlab的搭建与数据迁移

deny 2018年06月10日

前言

昨天晚上登陆gitlab时在后台控制面板看到”尽快更新“的提示,便去查看了更新的版本是否有汉化。然后就开始了入坑之旅。
虽然对gitlab更新过多次,对于更新的步骤也算是轻车熟路了;但还是得先按照操作前惯例:创建虚拟机快照备份一波。(也劝告大家:对服务器做任何重要的操作前一定要做好备份,切记!否则总有翻车的时候。说多了都是泪.)
没想到此次从10.7.3升级到10.8.4过程中还是出了问题,其实也好。本来gitlab服务器就积累了一些暗病,所以正好可以借这次重装解决一下。所幸的是做了备份,至少数据不会丢失。
这次的目的也有三个:

  1. 重装gitlab并迁移数据;
  2. 填去年11月留下的坑(”gitlab安装历程“至今还留在我的草稿箱)

gitlab CE or EE ?

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍‌​​‌‌​​​‍‌​​‌​‌‌​‍‌​​​‌​‌‌‍‌​​‌​​‌‌‍‌​​‌‌‌‌​‍‌​​‌‌‌​‌‍​​​‌​​‌​‌‌‌‌​‌‌‍​​‌‌​‌‌‌‌​‌​​‌​‍​‌​​​​‌​​​​​‌​‌‍​‌‌​​​‌‌‌‌‌​​​‌‍​​‌‌​‌​‌​​​‌‌‌‌‍​​‌‌‌​​‌​​‌​​​‌‍​‌‌‌​​​​​​‌‌‌‌‌​‍​​​​‌‌​​​​​​‌​​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​‌​​​‌‍‌​​​​‌‌​‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​​‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌‌‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌‌‌​‌‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​‌‌​​​‍‌‌​‌​​​‌‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​​​‌​‌‍‌​​​​‌‌​‍‌‌​‌​​​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​​‌‌‌‌‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌​​​‍‌‌​​‌​​​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

gitlab官方提供了CE和EE版本可供选择;CE是指开源的社区版,而EE则是收费的商业版。但是EE版是具有CE版的所有功能的,官方也是推荐安装EE版。也就是说如果你安装的是EE版,就算是没有授权也可以使用,但也只具备CE版的功能,如果想使用EE版的功能呢直接需要购买授权就行,这就免去了要重新安装EE版的麻烦;所以如果没有购买授权,就算安装的是EE版也跟CE版没差。但个人觉得也没必要安装EE版,除非你是打算购买授权。不然的话安装的汉化补丁也会出现一些Bug。
总结:如果打算购买EE版授权,就请安装EE版,否则建议安装CE版本。

gitlab安装

* 由于源码安装的方式过于麻烦并且博主使用centos系统的缘故,这里只提供yum安装的方式**
首先安装并设置必要的依赖(CE和EE都需要)

Centos 7执行:
    sudo yum install -y curl policycoreutils-python openssh-server openssh-clients
    sudo systemctl enable sshd
    sudo systemctl start sshd
    sudo firewall-cmd --permanent --add-service=http
    sudo systemctl reload firewalld

Centos 6执行:
    sudo yum install -y curl policycoreutils-python openssh-server openssh-clients cronie
    sudo lokkit -s http -s ssh

CE版本安装:
*CE版本的安装使用了清华大学镜像源以提升安装速度;
新建 /etc/yum.repos.d/gitlab-ce.repo 文件并将以下内容写入该文件:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

执行安装:

    sudo yum makecache
    sudo yum -y install gitlab-ce

EE版本安装:

  1. 添加GitLab软件包储存库
    curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  1. 执行安装
    yum -y install gitlab-ce

至此便已经安装完成并可以通过浏览器访问了。需要注意的是初次访问会将你重定向到重置密码的页面,设置好密码便可以使用账号:root,密码:(刚刚设置的密码)进行登陆。

安装汉化补丁

  1. 安装必要的软件:
    sudo yum -y install git patch
  1. 克隆或更新汉化版本库
    git clone https://gitlab.com/xhang/gitlab.git
    #如果已存在本地仓库,请使用cd命令切换到本地仓库目录,并使用以下命令进行更新:
    git fetch
  1. 安装补丁
    #请切换到本地仓库目录,并执行以下命令:
    gitlab_version=$(sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
    sudo git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
    # 停止 gitlab
    sudo gitlab-ctl stop
    cd ..
    patch -t -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ${gitlab_version:=cat /opt/gitlab/embedded/service/gitlab-rails/VERSION}-zh.diff
  1. 重启gitlab,汉化补丁完成
    sudo gitlab-ctl start
    sudo gitlab-ctl reconfigure

gitlab配置与数据迁移

gitlab配置:
配置文件为/etc/gitlab/目录下的gitlab.rb文件。
以下列出我的一些配置示例:

  #gitlab服务的域名
external_url 'https://domain.com' 

  #smtp邮件发送设置
gitlab_rails['smtp_enable'] = true #是否启用smtp发信
gitlab_rails['smtp_address'] = "smtp.163.com" #smtp发信地址
gitlab_rails['smtp_port'] = 25 #smtp发信端口
gitlab_rails['smtp_user_name'] = "user@163.com" #smtp发信邮箱
gitlab_rails['smtp_password'] = "password" #smtp发信邮箱密码
gitlab_rails['smtp_domain'] = "smtp.163.com" #与smtp发信地址保持一致即可
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "user@163.com" #与smtp发信邮箱保持一致即可
user["git_user_email"] = "user@163.com" #与smtp发信邮箱保持一致即可

  #https证书设置
nginx['ssl_certificate'] = "/etc/gitlab/ssl/crt.pem" #证书文件路径
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/private.key" #证书私钥路径
nginx['redirect_http_to_https'] = true #是否启用http跳转至https

*如有不需要的配置在句首使用#号注释即可
最后修改后保存并执行gitlab-ctl reconfigure 使配置生效。

数据迁移:
由于新服务器gitlab版本为10.8.4,旧服务器为10.7.3,所以并不能使用官方的备份与还原脚本进行数据迁移。不过所幸的是服务器上的仓库并不多,遂使用手工方式进行迁移。目前所有仓库数据均迁移完毕,配置文件/etc/gitlab/gitlab.rb 以及其他的一些服务也迁移完成。

Submit