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.rb
中 external_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 area
– Application 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 安装
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
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