ubuntu 安装 gitlab

GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

用 docker 比安装部署更简单,推荐使用。

[toc]

依赖包

#大部份系统默认已经安装,经实测跳过这一步也可以正常安装gitlab
sudo apt-get install curl openssh-server ca-certificates postfix -y

deb安装

下载 gitlab 安装包
推荐下载 deb 包安装,因为远程下载很慢。

安装deb包:

# 这里的文件名版本可能不一样,以实际为准
sudo dpkg -i gitlab-ce_9.4.2-ce.0_amd64.deb

自动安装

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

添加源

# 针对 14.04,16.04 把 trusty 改为 xenial
sudo curl -sSf "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.list?os=ubuntu&dist=trusty&source=script" > /etc/apt/sources.list.d/gitlab_gitlab-ce.list 
curl -L https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey 2> /dev/null | sudo apt-key add -
sudo apt-get install gitlab-ce

配置并启动

sudo gitlab-ctl reconfigure

配置文件位于:/etc/gitlab/gitlab.rb

通过修改 /etc/gitlab/gitlab.rb 来修改默认存放备份文件的目录:

gitlab_rails['backup_path'] = '/mnt/backups'

/mnt/backups 修改为你想存放备份的目录即可,修改完成之后使用 gitlab-ctl reconfigure 命令重载配置文件即可。

使用反向代理访问

虽然 gitlab 内置了 nginx 提供 http 服务,但通常我们服务器已经有现成的 http 服务(比如 apache),希望通过 apache 转发 nginx ——这通常是为了共用一个对外端口(比如 80),配置方法是:修改 /etc/gitlab/gitlab.rbexternal_url 字段,将后面的值改为将要使用的网址,比如

external_url 'git.domain.com'

按此配置是不能正常访问的,因为 80 端口被 apache 占用了,再修改 nginx['listen_port'] 字段,改为未使用的端口,比如

nginx['listen_port'] = 81

保存后,运行以下命令即可:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

反向代理设置方法见这里

浏览并登录

访问服务器地址,默认用户是 root,第一次登录要设初始密码。

注意:虚拟机运行要保证有 2G 内存,否则会报错。

配置存储路径

编辑 /etc/gitlab/gitlab.rb 文件:

git_data_dirs({
  "default" => { "path" => "/var/opt/gitlab/git-data" },
})

设置多个存储路径后,您可以通过 Admin areaApplication Settings 选择将存储新项目的位置。
存储目录名称必须是 git-data

卸载

#停止gitlab
sudo gitlab-ctl stop
#使用dpkg卸载gitlab
sudo dpkg -r gitlab-ce
#删除安装文件
sudo rm -rf /opt/gitlab /etc/gitlab /var/opt/gitlab /var/log/gitlab

维护

查看gitlab-ce的运行状态

sudo gitlab-ctl status

重启gitlab

sudo gitlab-ctl restart

gitlab资料全量备份和恢复

gitlab-rake备份资料

sudo gitlab-rake gitlab:backup:create

执行完成之后可以看到在 /opt/gitlab/gitlab_backup 目录下生成了一个tar包:1478507134_gitlab_backup.tar,其中1478507134是备份时间的时间戳
注意:在配置文件当中配置的目录的owner需要是git,否则执行的时候会报错:Errno::EACCES:Permission denied

加入以下,实现每天凌晨2点进行一次自动备份:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

gitlab-rake恢复资料(需要停服)
停止相关数据库的连接服务

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

从1478507134编号备份当中恢复

gitlab-rake gitlab:backup:restore BACKUP=1478507134

启动gitlab所有组件

sudo gitlab-ctl start

gitlab配置备份和恢复

备份配置

gitlab的配置文件存储目录是 /etc/gitlab,首先建立配置的备份目录:

mkdir -p /opt/gitlab/etc_gitlab_backup/

通过以下命令进行备份:

sudo bash -c 'cd /opt/gitlab/etc_gitlab_backup/; tar -zcvf $(date "+etc-gitlab-%Y-%m-%d.tar.gz") /etc/gitlab'

也可以通过crontab使用备份命令实现自动备份:

sudo vi /etc/crontab

还原配置

还原配置前,先备份当前配置:

sudo mv /etc/gitlab /etc/gitlab.$(date +%Y-%m-%d %H:%M:%S)

解压包含了所备份配置的压缩包

sudo tar -zxvf etc-gitlab-2016-11-08.tar.gz -C /

使用 docker 安装

安装 docker

gitlab

docker 安装 gitlab 文档

sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

gitlab-runner

gitlab-ci-multi-runner

sudo docker run -d --name gitlab-runner --restart always \
   -v /srv/gitlab-runner/config:/etc/gitlab-runner \
   -v /var/run/docker.sock:/var/run/docker.sock \
   gitlab/gitlab-runner:latest

设置别名方便使用:

alias gitlab-runner='sudo docker run --rm -t -i gitlab/gitlab-runner'

注册

gitlab-runner register

过程参见:https://qii404.me/2018/06/21/gitlab-runner.html