1 安装
1.1 Omnibus package installation
这是 Gitlab 官网推荐的安装方式。官网文档链接位于Gitlab Installation。不过,现在直接去官网默认给出的是企业版,即 gitlab-ee 的安装方式(付费的),而个人版其实用 gitlab-ce 就够了。gitlab-ce 安装方式如下
1.1.1 安装并配置依赖
1 | sudo apt-get install -y curl openssh-server ca-certificates |
然后安装 Postfix 来启动邮件提醒功能。(如果你使用了第三方的邮件服务,可以跳过这一步并且参照配置外部 SMTP 服务器)。
1 | sudo apt-get install -y postfix |
在接下来的配置过程中,选择'Internet Site'选项。使用你的服务器的域名来作为'mail name'。如果还有后续的选项,输入 Enter 直至安装完成。
1.1.2 安装 Gitlab-EE
添加 Gitlab Package 仓库:
1 | curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash |
注意这里安装的是 CE 版本,故是 gitlab-ce,企业版对应的是 gitlab-ee
接下来安装 Gitlab:
1 | sudo EXTERNAL_URL="http://gitlab.example.com" apt-get install gitlab-ce |
这里的 EXTERNAL_URL 是你的 Gitlab 服务要使用的域名。如果你只使用 http,或者后续要使用已有的 Nginx,可以在这里使用 http。如果使用 https,gitlab 会调用Let's encrtpy的服务为你的网站添加 ssl 证书。
1.1.3 登录 Gitlab
进入你在安装阶段的域名,你会被重定向到密码重置界面。在这个页面你要设置管理员账户的密码,然后回到登录界面。在这个登录界面,使用root
用户名和上一步设置的密码登录。
1.2 使用已有的 Nginx
这个章节我们参考官方文档给出使用已有的 Nginx 的方法。
1.2.1 禁用 Gitlab 自带的 Nginx
编辑/etc/gitlab/gitlab.rb
文件,设置
1 | nginx['enable'] = false |
1.2.2 设置外部服务器的用户
这一步是为了保证外部服务器用户能够访问 gitlab。使用 Nginx 时,可以通过/etc/nginx/nginx.conf
文件查看到 nginx 用户。一般情况下这个用户名是www-data
。修改/etc/gitlab/gitlab.rb
:
1 | web_server['external_users'] = ['www-data'] |
然后使用sudo gitlab-ctl reconfigure
来使得更改生效。
1.2.3 Trusted proxies
如果你的反向代理服务器和 gitlab 不是在同一台机器上,那么你还需要设置 Trusted proxies。
1 | gitlab_rails['trusted_proxies'] = ['192.168.1.0/24', '192.168.2.1', '2001:0db8::/32'] |
1.2.4 Nginx 示例配置文件
1 | # gitlab socket 文件地址 |
2 迁移
2.1 备份
迁移首先要做的是备份。在git 学习------> Gitlab 如何进行备份恢复与迁移?这篇文章中详细讲述了备份的问题。我们这里介绍的是最为直接和简单的步骤。如果要更加详细的信息请阅读这篇参考。
备份使用如下命令:
1 | gitlab-rake gitlab:backup:create |
备份会生成在/var/opt/gitlab/backups
目录下。名称类似于1502357536_2017_08_10_9.4.3_gitlab_backup.tar
。下面这些配置信息,没有包含在 backup 文件里面。需要手动迁移。
/etc/gitlab/gitlab.rb
配置文件须备份/var/opt/gitlab/nginx/conf
nginx 配置文件/etc/postfix/main.cfpostfix
邮件配置备份
2.2 在目标机器上安装 gitlab
迁移过程中要求源机器和目标机器上安装的 gitlab 版本是相同的。如果不同,其实最好的做法是先将源机器上的 gitlab 升级到最新的版本。然后再生成备份。
2.3 上传备份
使用scp
命令将备份文件上传到目标机器的/var/opt/gitlab/backups
。
如果 scp 上传目标文件文件夹的权限不够,可以先上传到自己的 home 目录下,然后 ssh 登录到服务器使用 sudo 进行移动。
2.4 应用备份文件
首先为了避免潜在的权限问题,将备份文件的权限设置为 777
1 | chmod 777 1502357536_2017_08_10_9.4.3_gitlab_backup.tar |
然后停止 gitlab 的相关数据连接服务
1 | gitlab-ctl stop unicorn |
然后用下面的命令读取备份:
1 | gitlab-rake gitlab:backup:restore BACKUP=1502357536_2017_08_10_9.4.3 |
在后续出现的所有询问中输入 yes,等待执行完毕,即完成了迁移过程,接下来再次启动 gitlab
1 | sudo gitlab-ctl start |
3 删除
下面的删除过程在 Ubuntu 16 上得到验证:
3.1 移除 gitlab 服务
1 | sudo gitlab-ctl uninstall |
3.2 清楚 Gitlab 产生的数据
1 | sudo gitlab-ctl cleanse |
3.3 删除 Gitlab 生成的系统账户
1 | sudo gitlab-ctl remove-accounts |
3.4 删除 gitlab
1 | sudo dpkg -P gitlab-ce |
3.5 其他文件的删除
除了上述操作,Gitlab 使用的其他文件夹还需要手动删除,包括:
/opt/gitlab
: 包含了 Gitlab 的应用代码和依赖/var/opt/gitlab
: 包含了应用的数据和配置信息(gitlab-ctl reconfigure 的写入内容)/etc/gitlab
: omnibus gitlab 的配置信息。这里的文件是唯一允许你手动编辑的部分/var/log/gitlab
: 日志文件
在你完成了开始的四个步骤后,这里的四个文件夹可以安全地手动删除。