GitLab 搭建及配置
一、GitLab 简介
GitLab 是一个利用Ruby on Rails 开发的开源版本控制系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
开源中国代码托管平台 码云 就是基于GitLab项目搭建。
GitLab 分为 GitLab Community Edition(CE) 社区版 和 GitLab Enterprise Edition(EE) 专业版。社区版免费,专业版收费,两个版本在功能上的差异对比,可以参考官方对比说明
二、GitLab 安装和配置
安装社区版,GitLab CE 版本:10.8.1这此省略
2.1、GitLab安装
安装要求
- 操作系统:windows 暂不支持,不受支持的 Unix衍生版有:Arch Linux、Fedora、FreeBSD、Gentoo、macOS
- 内存: 必须不少于 4GB,否则在安装过程中会出现不可预知的问题,这也是官网的推荐。
- Ruby版本:2.3以上。
- CPU: 2核心,可支持500用户,这也是官网的推荐
- 数据库: PostgreSQL (官网推荐) 、MySQL/MariaDB (有些功能会受限)
- 更多要求,请查看官网文档
通过GitLab官方提供的Omnibus安装包来安装,相对方便。Omnibus安装包套件整合了大部分的套件(Nginx、ruby on rails、git、redis、postgresql等),再不用额外安装这些软件,减轻了绝大部分安装量。
GitLab官方安装文档 :CentOS7.x系统
安装依赖包,并配置postfix服务为GitLab邮件服务1
2
3
4
5[root@sjq-09 ~]
[root@sjq-09 ~]
[root@sjq-09 ~]
[root@sjq-09 ~]
两种安装源:
从官方镜像源安装
添加GitLab仓库并安装到服务器上1
2
3[root@sjq-09 ~]
[root@sjq-09 ~]从第三方镜像源安装
官方镜像源在国外,国外安装会很慢,甚至有时因网络问题会无法安装。
国内推荐使用 清华大学开源软件镜像源。
使用vim /etc/yum.repos.d/gitlab-ce.repo
创建文件,内容如下:1
2
3
4
5[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
保存、退出vim 后,再执行:1
2[root@sjq-09 ~]
[root@sjq-09 ~]
修改配置文件vim /etc/gitlab/gitlab.rb
,绑定域名1
external_url 'http://xxx.com' #也可以写ip地址
启动GitLab,使得配置生效1
[root@sjq-09 ~]
使用浏览器访问GitLab
首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面。
默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名.
GitLab相关目录及配置
1 | 主配置文件: /etc/gitlab/gitlab.rb |
GitLab由以下服务构成
- nginx: 静态web服务器
- gitlab-shell: 用于处理Git命令和修改authorized keys列表
- gitlab-workhorse: 轻量级的反向代理服务器
- logrotate:日志文件管理工具
- postgresql:数据库、
- redis:缓存数据库
- sidekiq:用于在后台执行队列任务(异步执行)
- unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
2.2、配置:
2.2.1、配置SMTP服务
如果你不想用服务器自带的postfix服务来发邮件,可以改用SMTP服务。
修改GitLab邮件服务配置(gitlab.rb文件),使用腾讯企业邮箱的SMTP服务器,填写账号和密码:vim /etc/gitlab/gitlab.rb
1
2
3
4
5
6
7gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxx"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = 'plain'
gitlab_rails['smtp_enable_starttls_auto'] = true
使配置生效:1
2[root@sjq-09 ~]
[root@sjq-09 ~]
2.2.2、GitLab配置HTTPS
GitLab默认是使用HTTP的,可以手动配置为HTTPS
上传SSL证书,创建 SSL目录,用于存放SSL证书1
2[root@sjq-09 ~]
[root@sjq-09 ~]
上传证书并修改证书权限1
[root@sjq-09 ~]
修改GitLab的主配置文件vim /etc/gitlab/gitlab.rb
1 | external_url "https://xxx.com" |
重建配置,使其生效1
[root@sjq-09 ~]
以上操作后,GitLab自带的Nginx服务的配置文件 /var/opt/gitlab/nginx/conf/gitlab-http.conf 会被重新修改:
1 | server { |
不用额外再配置,HTTP 会自动跳转到 HTTPS 。
开放443端口,因为防火墙未开启,此处省略。
三、gitLab服务管理
3.1、服务管理
1 | 启动所有 gitlab 组件: |
3.2、日志管理
1 | 实时查看所有日志 |
3.3、备份
3.3.1、手动备份:
gitLab默认备份的目录为 /var/opt/gitlab/backups,如果想改备份目录,可修改/etc/gitlab/gitlab.rb:
1 | gitlab_rails['backup_path'] = '/data/backups' |
修改文件后,需要1
[root@sjq-09 ~]
备份命令:1
[root@sjq-09 ~]# gitlab-rake gitlab:backup:create
该命令会在备份目录(默认:/var/opt/gitlab/backups/)下创建一个tar压缩包xxxxxxxx_gitlab_backup.tar,其中开头的xxxxxx是备份创建的时间戳,这个压缩包包括GitLab整个的完整部分。
3.3.2、使用 crontab实现自动备份
1 | [root@sjq-09 ~]# crontab -e |
可设置只保留最近7天的备份,编辑配置文件 /etc/gitlab/gitlab.rb1
2
gitlab_rails['backup_keep_time'] = 604800
重新加载gitlab配置文件1
[root@sjq-09 ~]
3.4、恢复
假设配置文件为: /var/opt/gitlab/backups/1499444722_2018_05_28_7.4.7_gitlab_backup.tar
停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。
1 | # 停止相关数据连接服务 |
3.5、开机自启
vim /etc/rc.d/rc.local
添加如下内容1
/bin/gitlab-ctl start
3.6、数据库操作
连接数据库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[root# gitlab-rails dbconsole data]
psql (9.6.8)
Type "help" for help.
gitlabhq_production=> \l #查看所有数据库
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
---------------------+-------------+----------+-------------+-------------+---------------------------------
gitlabhq_production | gitlab | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | gitlab-psql | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | gitlab-psql | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/"gitlab-psql" +
| | | | | "gitlab-psql"=CTc/"gitlab-psql"
template1 | gitlab-psql | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/"gitlab-psql" +
| | | | | "gitlab-psql"=CTc/"gitlab-psql"
gitlabhq_production=> \q # 退出
默认情况下,postgresql只允许本机访问,配置访问权限
vim /var/opt/gitlab/postgresql/data/pg_hba.conf
添加如下内容1
host all all 0.0.0.0/0 trust
vim /var/opt/gitlab/postgresql/data/postgresql.conf
找到 listen_addresses 设置为’*’1
listen_addresses = '*'
重启 postgresql服务:
1 | gitlab-ctl restart postgresql |