为什么要自己部署一个gitlab服务器?github访问网络受限,gitee还会审核你的代码,而且都会限制仓库大小,自建一个git服务就没那么多事儿了,配置上域名访问也非常好用,尤其中小企业而言把控住自己的代码也是一件很重要的事情。
安装Gitlab
Gitlab安装有多种方式,包括docker安装,软件包安装,从源安装等,本文以安装包方式来讲解。
系统配置要求
根据Gitlab网站的说明,需要根据你的需求来提供相应的系统配置。
- 磁盘空间。软件安装后需要占用2.5G空间,因此至少要留有相应的系统空间。安装后使用数据会越来越多,如果系统空间不足了,Gitlab服务也会瘫痪,所以需要定期检查是否有足够空间。
- CPU资源。4核GPU可以最多供500用户使用,小型团队或者自己搭建的话,2核其实也够了。
- RAM资源。4GB内存空间是最低要求,可以供500用户使用。如果内存再小可能会不能正常运行了。
- 外部数据库。可选项,如果没有明确外部的数据库,那么也会将需要的数据库安装上。PostgreSQL是唯一受支持的外部数据库。、
选择Gitlab版本
Gitlab安装的时候有两个选择,一个是ce版本(Community Edition),一个是ee版本(Enterprise Edition),安装使用都是不需要付钱的,也没有限制,ce版本可以理解为精简版本,推荐安装gitlab-ee,当然如果想花钱的话还可以安装Ultimate版本,这里就不探讨了。
安装方法
ubuntu系统
在ubuntu系统(支持ubuntu22)和centos上都可以安装Gitlab-ee,以Ubuntu22为例,安装的主要步骤如下:
1 2 3 4 5 6 7 8 9 10 11
| # 安装必要的依赖项 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
# 添加安装源 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
# 安装 apt-get update apt-get install gitlab-ee # 到这里就安装完毕了
|
以上是默认安装最新版本,如果想安装指定版本,需要这样操作:
1 2 3 4
| # 如果想安装确定的版本,需要这样操作: apt-get install gitlab-ee=<版本号> # 例如: # apt-get install gitlab-ee=15.7.0-ee.0
|
查询版本号的语句:
1 2
| # 可以这样查询版本号: apt-cache madison gitlab-ee
|
查询结果类似于:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| gitlab-ee | 15.7.0-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.6.3-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.6.2-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.6.1-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.6.0-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.6-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.5-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.4-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.3-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.2-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.1-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.5.0-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.4.6-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.4.5-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.4.4-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages gitlab-ee | 15.4.3-ee.0 | https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu focal/main amd64 Packages
|
centos系统
相对应的以上执行语句是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 安装相关依赖 sudo yum install -y curl policycoreutils-python openssh-server perl # 需要开启sshd sudo systemctl enable sshd sudo systemctl start sshd # 防火墙基础配置 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo systemctl reload firewalld
# 添加安装源 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
# 安装软件 # centos 6 and 7 yum install -y gitlab-ee # centos 8 dnf install gitlab-ee
# 安装到这里结束
# 需要安装指定版本的话,需要这样操作: # RHEL/CentOS 6 and 7 yum install gitlab-ee-<version> # RHEL/CentOS 8 dnf install gitlab-ee-<version>
# 查询gitlab版本号 # RHEL/CentOS 6 and 7 yum --showduplicates list gitlab-ee # RHEL/CentOS 8 dnf --showduplicates list gitlab-ee
|
配置Gitlab
gitlab安装好之后需要配置好才能正常使用,总的来说有这些步骤:
获取默认密码
安装好需要查看文件/etc/gitlab/initial_root_password获取默认的密码,注意这个文件只保存24小时
1
| cat /etc/gitlab/initial_root_password
|
默认账号是root
用默认密码登录后就可以修改密码了。
修改配置文件
gitlab的默认配置文件是/etc/gitlab/gitlab.rb,安装后需要进行对这个配置文件进行修改,主要需要修改的地方如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| # 打开文件编辑 nano /etc/gitlab/gitlab.rb
# 修改的地方1:gitlab访问地址 external_url "http://gitlab.example.com" # 要把"http://gitlab.example.com"改成未来你希望配置的地址,注意http和https,配置了https的话需要设置ssl等信息
# 修改的地方2:nginx相关配置 # 将http强制重定向到https nginx['redirect_http_to_https'] = true registry_nginx['redirect_http_to_https'] = true mattermost_nginx['redirect_http_to_https'] = true # 获取访客真实ip nginx['real_ip_header'] = 'X-Forwarded-For' nginx['real_ip_recursive'] = 'on' # 可以这样设置允许的访客ip,如果所有人都可以访问就不需要另外设置 nginx['real_ip_trusted_addresses'] = [ '192.168.1.0/24', '192.168.2.1', '2001:0db8::/32' ] # 如果你的默认端口80和443已经被占用了,可以修改gitlab的默认端口 nginx['listen_port'] = 8081
# 修改的地方3:配置ssl证书 nginx['ssl_certificate'] = "/mnt/gitlab/ssl/gitlab.crt" nginx['ssl_certificate_key'] = "/mnt/gitlab/ssl/gitlab.key"
# 修改的地方4:smtp服务设置 # 这里以阿里云企业邮箱配置为例 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "yyy@xx.xx" gitlab_rails['smtp_password'] = "qqqqq" gitlab_rails['smtp_domain'] = "xx.xx" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_pool'] = false
|
每次修改了配置文件后,都需要运行以下代码让配置起效:
登录开始使用
完成以上步骤之后,就可以访问域名,开始使用git了。gitlab的页面使用非常明了,应该是没有什么太困难的地方。
有一个需要注意的,如果你的git账户开启了二次验证,那么在使用git的时候,就不能用用户名和密码来拉取、推送了,需要在配置页面里面,设置一个用户token,使用这个token作为密码才能拉取、推送代码。如下图所示。
更新Gitlab
Gitlab的更新可以说是非常频繁的,每个月的22号都会发布一个新版本。这是一件好事儿,也是一件坏事儿,在更新的时候可能会因为版本号与最新的版本差异过大而无法直接更新,或者有时候更新还会出现一些错误,因此建议还是定期保持更新,不要与最新版本拉开太大的差距。
这里重点说一下有时候无法直接更新到最新版本gitlab时的解决方案。
在Gitlab官网中已经明确了更新gitlab的路径:https://docs.gitlab.com/ee/update/index.html#upgrade-paths
我们需要严格按照这个路径来实施更新,一步一步的更新到最新版本,每次更新的命令是:
1 2 3 4 5
| apt-get install gitlab-ee=<版本号> # 例如: # apt-get install gitlab-ee=15.7.0-ee.0 # 一定要记得reconfigure一下 gitlab-ctl reconfigure
|
重复多次一直到更新到了最新版本。
有的时候更新会有错误提示,这时候需要仔细阅读错误提示,里面通常会告诉你需要你运行的命令,命令运行后一般就可以修正这个错误,不要盲目的网上去查找,一定要仔细阅读错误提示!
数据备份和恢复
备份和定期备份
Gitlab已经提供了备份工具,我们需要提前在配置文件/etc/gitlab/gitlab.rb
中设置好备份文件的保存路径:
1
| gitlab_rails['backup_gitaly_backup_path'] = '/path/to/gitaly-backup'
|
然后重新配置gitlab以让配置生效:
1
| gitlab_rails['backup_gitaly_backup_path'] = '/path/to/gitaly-backup'
|
现在就可以运行以下命令来生成一个备份了:
1
| sudo gitlab-backup create
|
别忘记备份这些文件,如果这些文件没有备份,也是不可能完全恢复的:
1 2
| /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab.rb
|
建议使用crontab来定期备份,运行crontab -e添加一条规则:
1 2
| # 每4个小时备份一次 0 */4 * * * /opt/gitlab/bin/gitlab-backup create CRON=1 GZIP_RSYNCABLE=yes
|
重点是别忘了清理那些老旧的备份,要是哪一天备份文件把磁盘空间全部占满了,那么gitlab服务就会挂掉的。
Gitlab还支持增量备份,具体的直接查看文档吧,文档非常清晰:https://docs.gitlab.com/ee/raketasks/backup_gitlab.html
恢复
恢复gitlab的数据也很简单。
第一步:停止当前的gitlab部分进程
1 2
| sudo gitlab-ctl stop puma sudo gitlab-ctl stop sidekiq
|
第二步:运行备份。
别忘了把gitlab-secrets.json和gitlab.rb也恢复到指定位置。
1 2
| # 确保备份文件在当前目录下,文件名称是11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
|
第三步:重新配置gitlab并检查是否恢复成功:
1 2 3
| gitlab-ctl reconfigure gitlab-ctl restart gitlab-rake gitlab:check SANITIZE=true
|
这样Gitlab数据就恢复完成了。