omnibus-package 安装 gitlab-ce

ubuntu 下安装 gitlab-ce 官方推荐安装,步骤也非常简单.

安装并配置需要的依赖

1 先更新 apt-get:

sudo apt-get update

2 再安装 openssh-server

sudo apt-get install -y curl openssh-server ca-certificates

注意,在 ubuntu18 安装时 openssh-server 时,可能会出现类似这样的错误:

sanotsu@sanotsu-ubt18:~$ sudo apt-get install -y curl openssh-server ca-certificates
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
ca-certificates 已经是最新版 (20180409)。
ca-certificates 已设置为手动安装。
curl 已经是最新版 (7.58.0-2ubuntu3)。
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 openssh-server : 依赖: openssh-client (= 1:7.6p1-4)
                  依赖: openssh-sftp-server 但是它将不会被安装
                  推荐: ssh-import-id 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
sanotsu@sanotsu-ubt18:~$

这是因为安装 openssh-server 依赖 openssh-client。ubuntu 默认有安装 openssh-client,但是版本可能不满足,所以只需再安装一次需要的版本。

例如上面的出错信息,则需要降级,命令安装如下:

sudo apt-get install openssh-client=1:7.6p1-4

安装成功之后,再安装 openssh-server 即可。

安装邮箱服务器 Postfix(非必要,大可不必)

sudo apt-get install -y postfix

然后按照提示,输入自己的配置。大概有需要输入的邮箱服务器地址,邮件名等等,还有一些使用 default 就好了。

如果不用 Postfix 来配置邮件收发,例如 gitlab 配置使用 SMTP 来发送邮件(后续文章再说明),这个部分可以跳过。

如果安装之后,想要移除,可使用sudo apt-get remove postfix来卸载。

添加 GitLab 软件包存储库并安装软件包

添加 GitLab 软件包存储库命令:

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

安装命令:

sudo EXTERNAL_URL="http://192.168.XX.XX" apt-get install gitlab-ce

其中 EXTERNAL_URL 为 gitlab-ce 的访问地址,如果不设定,默认就是 http://127.0.0.1

注意,在之前的版本,设置EXTERNAL_URL="192.168.XX.XX"是可以的,不过我现在使用 12.6.0 这样设置,会报错,错误如下:

There was an error running gitlab-ctl reconfigure:

GitLab external URL must include a schema and FQDN, e.g. http://gitlab.example.com/

下载和安装过程需要一点时间。

安装成功之后,打开之前设置的访问地址,应该会出现修改管理员密码画面,就表示 gitlab 安装成功。

如果安装完成之后的自动运行配置出现错误,例如 url 配置出错等等,解决问题后再手动再运行一次sudo gitlab-ctl reconfigure

安装完成之后的组件分析:

gitlab 的结构分析,可参看官网说明,有助于理解各个组件的作用。

一些常用指令

1.查看状态:

sudo gitlab-ctl status

2.停止/启动/重启 gitlab

sudo gitlab-ctl stop
sudo gitlab-ctl start
sudo gitlab-ctl restart

3.重新加载配置

sudo gitlab-ctl reconfigure

3 关闭/启用开机自启动(慎重)
这个 Gitlab 默认是开机自启动的。

Ubuntu 下禁止 Gitlab 开机自启动:

sudo systemctl disable gitlab-runsvdir.service

如果要设置开机自启动,Ubuntu 下启用 Gitlab 开机自启动:

sudo systemctl enable gitlab-runsvdir.service

自启动也还 ok,如果 disable 掉,开机在使用sudo gitlab-ctl start就启动不了了,因为所有的服务都关了,要启动起来才行。

注意,如果 docker 的 gitlab 和 omnibus-package gitlab 安装在同一台机器,注意只开一个,因为端口什么的是一样的。

如果安装完 omnibus-package gitlab,发现启动不了 docker 的 gitlab,并提示端口 22 已被占用,可能就是 sshd 占用了端口,关闭 ssh 即可。

/etc/init.d/ssh stop

当然,开启就是

/etc/init.d/ssh start

如果要关闭开机自启动 ssh(沒必要),删除其自动配置

sudo mv /etc/init/ssh.conf /etc/init/ssh.conf/disabled

备份和还原用户数据

备份

对应命令:

sudo gitlab-rake gitlab:backup:create

默认的备份地址在/var/opt/gitlab/backups中,查看该路径可以看到以下内容,即为备份的 userdata。

格式是:{时间戳10位}_{年_月_日}_{gitlab版本号}_gitlab_backup.tar

注意,在还原时,版本不一致的备份,是不能还原的,所以需要将 gitlab 的版本保持在一个固定的版本。

还原

前提条件:

  • 您已经安装了与创建备份的 GitLab Omnibus 完全相同的版本和类型(CE / EE)。
  • 你 sudo gitlab-ctl reconfigure 至少跑了一次。
  • GitLab 正在运行。如果没有,请使用它 sudo gitlab-ctl start。

操作步骤:

  • 停止连接到数据库的进程,剩下部分继续 running
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

可以在停止之后,查看 gitlab 的状态sudo gitlab-ctl status,确认一下两个服务已经停止。

  • 再在已有的备份中,选择需要恢复的版本
sudo gitlab-rake gitlab:backup:restore BACKUP={备份的文件夹名}
  • 恢复过程中,会有几次确认信息要手动确认,如果是确认要恢复,按照提示点击 yes 就好了。

  • 恢复完之后,要重启 gitlab 服务

sudo gitlab-ctl restart

此时再去访问 gitlab 的访问地址,就恢复到重置 root 密码的状态了。

如果是例如公司内部需要一个私有的仓库,最好还是使用 omnibus-package 安装,官方推荐,直接在设备的安装,配置等比较方便。

后续的内容都是以这种方式安装为例子。docker 之类的也可参考,不过是需要透过一层 docker 指令了。

默认配置文件地址/etc/gitlab/gitlab.rb,后续会说明更多的配置,非常重要。