CentOS下搭建GitLab服务器

1
2
3
作者 : daodaoliang@yeah.net
日期 : 2017-04-13
版本 : 0.0.4

  • TOC
    {:toc}

0 Gitlab 简介

GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。


1. Gitlab 的安装

Gitlab 有两种安装方式:

安装方式 简介
源码方式安装 这个有些费劲,时间充足喜欢折腾按照链接文档安装即可
Omnibus方式安装 这个简单,不出任何意外大约一个半小时左右安装完毕

1.1 采用 Omnibus 方式

根据官网地址,选择 CentOS 6 然后执行相应命令,即可完成安装操作,如果你用虚拟机,就直接用迅雷搞定,然后再拖进去吧,毕竟200+M,下载连接在这里

如果你不想观看官网那么跟着下面步骤走:

1.1.1 安装配置依赖项

如想使用Postfix来发送邮件,在安装期间请选择’Internet Site’. 您也可以用sendmai或者 配置SMTP服务 并 使用SMTP发送邮件.在 Centos 6 和 7 系统上, 下面的命令将在系统防火墙里面开放HTTP和SSH端口.

1
2
3
4
sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
sudo lokkit -s http -s ssh

1.1.2 添加GitLab仓库,并安装到服务器上

1
2
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce

1.1.3 启动 Gitlab

1
sudo gitlab-ctl reconfigure

2.邮箱配置

当你按照提示安装好后,基本上就可以使用了,但是在使用的过程中,我们发现邮件通知功能不稳定,使用

1
sudo vi /var/log/mail.log

查看后发现,邮件被当成了垃圾邮件,被退信了。
使用默认Gitlab的邮件服务的话,貌似被退信的几率比较高,因此我们需修改一下,毕竟邮件通知还是很重要的。我们注册一个邮箱账号,让GitLab通过该账号向我们发送邮件通知,这看起来就像两个人正常通信了,基本上就不会被退信了。

2.1 注册邮箱

注册QQ企业云邮箱不解释,记住用户名密码即可,你也可以随便使用其他邮箱服务器,不过不建议网易家的,他们会出现一些安全方面的拦截。

2.2 配置邮箱

修改发送邮件步骤如下:

1
sudo vi /etc/gitlab/gitlab.rb

增加如下配置项,例:

1
2
3
4
5
6
7
8
9
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "youraccount"
gitlab_rails['smtp_password'] = "yourPWD"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'youraccount'

修改完成后,需要执行以下命令使生效:

1
gitlab-ctl reconfigure.

2.3 测试邮箱

  1. 执行 gitlab-rails console
  2. 在上面步骤后执行:
1
Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now

PS: 具体其他的请参考这篇文档

4. Gitlab 运维

具体运维请参考这篇文档

4.1 管理

1
2
3
4
5
6
7
8
# 启动所有 gitlab 组件:
sudo gitlab-ctl start
# 停止所有 gitlab 组件:
sudo gitlab-ctl stop
# 重启所有 gitlab 组件:
sudo gitlab-ctl restart

4.2 备份

备份GitLab repositories and GitLab metadata

在 crontab 中加入如下命令:

1
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

4.3 恢复

首先进入备份 gitlab 的目录,这个目录是配置文件中的gitlab_rails['backup_path'] ,默认为 /var/opt/gitlab/backups

然后停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。

1
2
3
4
sudo gitlab-ctl stop unicorn
# ok: down: unicorn: 0s, normally up
sudo gitlab-ctl stop sidekiq
# ok: down: sidekiq: 0s, normally up

然后恢复数据,1406691018为备份文件的时间戳

1
gitlab-rake gitlab:backup:restore BACKUP=1406691018
daodaoliang wechat
点击上面图片后用微信扫描,你就能认识一个有趣的灵魂了呀。
Fork me on GitHub