目录
GitLab介绍
背景
环境准备
源服务器上操作:
备份数据和配置文件
备份SSL证书
目的服务器上操作:
配置邮件服务,默认未开启postfix
安装NFS客户端
安装gitlab
升级gitlab版本
查看gitlab版本
查看PostgreSQL版本
升级gitlab到12.10.6
升级gitlab到13.0.0
升级gitlab到13.2.0
升级gitlab到13.4.0
升级gitlab到13.6.0
升级gitlab到13.8.0
升级gitlab到13.8.8
GitLab介绍
GitLab是一个用于管理代码的仓库系统,他是一个开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理代码缺陷和注释。
背景
1.由于本地服务器多次断网和机房断电,开发人员代码上传不了,造成项目开发时常中断;
2.生产是阿里云环境,生产环境版本迭代时拉取代码速度慢,影响CI进度和项目进展。
3.旧版本的GitLab(12.1.6)网上已经爆出安全漏洞,必须升级到13.8.8及以上。
环境准备
服务器 | 环境 |
源服务器 | 本地I环境搭建的服务 |
目的服务器 | 阿里云ECS |
远程数据存储 | 阿里云NAS |
源服务器上操作:
首先要关闭外网访问使用户不能上传下载,如果有用户上传代码备份数据会丢失部分代码。
查看备份配置
vi /etc/gitlab/gitlab.rb
#查看下面两行的配置
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/opt/gitlab/backups"
在当前目录创建备份数据用的目录
mkdir /backup/conf -p
cd /backup
备份数据和配置文件
gitlab-rake gitlab:backup:create
停止gitlab服务
gitlab-ctl stop
备份配置文件
rsync /etc/gitlab/gitlab.rb /backup/conf/
rsync /etc/gitlab/gitlab-secrets.json /backup/conf/
rsync /var/opt/gitlab/gitlab-rails/etc/secrets.yml /backup/conf/
拷贝备份数据到/backup目录
rsync /var/opt/gitlab/backups/xxxxxx_gitlab_backup.tar /backup/
下载安装包
gitlab-ce-12.1.6-ce.0.el7.x86_64.rpm
备份SSL证书
rsync /etc/gitlab/ssl /backup/ -r
目的服务器上操作:
首先优化Centos7系统配置,优化脚本可以直接用下面这个脚本,阿里云ECS部分设置已经优化过,可以根据实际情况修改脚本。
Centos7系统配置优化
配置邮件服务,默认未开启postfix
vi /etc/postfix/main.cf
#修改
inet_interfaces = localhost
inet_protocols = all
#为
inet_interfaces = all
inet_protocols = ipv4
重启postfix服务
systemctl restart postfix
查看邮件服务状态
systemctl status postfix
安装NFS客户端
yum install nfs-utils -y
增加同时发起的NFS请求的数量
请执行以下命令,将同时发起的NFS请求数量修改为128。
if (lsmod | grep sunrpc); then
(modinfo sunrpc | grep tcp_max_slot_table_entries) && sysctl -w sunrpc.tcp_max_slot_table_entries=128
(modinfo sunrpc | grep tcp_slot_table_entries) && sysctl -w sunrpc.tcp_slot_table_entries=128
fi
(modinfo sunrpc | grep tcp_max_slot_table_entries) && echo "options sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/alinas.conf
(modinfo sunrpc | grep tcp_slot_table_entries) && echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/alinas.conf
手动挂载NFS文件系统
mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.region.nas.aliyuncs.com:/ /mnt
自动挂载NFS文件系统,打开/etc/fstab配置文件,添加挂载配置。
file-system-id.region.nas.aliyuncs.com:/ /mnt nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0
下载安装包
gitlab-ce-12.1.6-ce.0.el7.x86_64.rpm
安装gitlab
rpm -i gitlab-ce-12.1.6-ce.0.el7.x86_64.rpm
从源服务器拷贝备份的配置文件gitlab.rb和gitlab-secrets.json到新服务器gitlab的/etc/gitlab/
检查配置
vim /etc/gitlab/gitlab.rb
检查下列值:
external_url
nginx['listen_port']
gitlab_ssh_host
gitlab_shell_ssh_port
nginx['ssl_certificate']
nginx['ssl_certificate_key']
nginx['enable'] = true
nginx['redirect_http_to_https'] = true #http重定向到https
nginx['redirect_http_to_https_port']
git_data_dirs
查看配置ssh拉取
首先在项目配置的Settings-Repository-Deploy Keys中添加拉取代码的机器生成的公钥(.ssh/id_rsa.pub)
修改gitlab服务器ssh的远程端口,即:vim /etc/ssh/sshd_config中的Port 端口号,修改完重启ssh
systemctl restart sshd
如果报错删除或修改拉取代码机器的.ssh/known_hosts
查看配置https访问
数据可以放到NFS里,可以放也可以不放,如果不放到NFS里就不用修改,如果想把数据放到NFS里就检查数据目录是否修改
# git_data_dirs({
# "default" => {
# "path" => "/mnt/nfs-01/git-data"
# }
# })
#根据需要修改成下面的
git_data_dirs({
"default" => {
"path" => "/mnt/自己的目录名/git-data"
}
})
开启gitlab
gitlab-ctl reconfigure
恢复数据,把源服务器上的备份包拷贝到目的服务器上
chmod +r /var/opt/gitlab/backups/xxxxxx_gitlab_backup.tar
gitlab-rake gitlab:backup:restore BACKUP=xxxxxx
拷贝源服务器上的/var/opt/gitlab/gitlab-rails/etc/secrets.yml和/etc/gitlab/gitlab-secrets.json到目的服务器的同名目录下,
重启gitlab,否则部分网页打不开
gitlab-ctl reconfigure
更改ssh服务的端口
vim /etc/ssh/sshd_config
Port 7088
重启ssh服务
systemctl restart sshd
做个定时任务,每天3点备份一次数据,4点删除前三天备份的文件
0 3 * * * gitlab-rake gitlab:backup:create >> /opt/gitlab-backup.txt
0 4 * * * find /var/opt/gitlab/backups/*_gitlab_backup.tar -type f -mtime +3 -exec rm {} \;
修改备份文件的目录
如果修改默认备份目录,需要运行 gitlab-ctl reconfigure 命令使配置生效,并且运行 gitlab-ctl restart 命令重新启动服务器。
vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] = "修改成你自己想要存放备份数据包的目录"
升级gitlab版本
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
创建ECS快照,先备份数据
gitlab-rake gitlab:backup:create
升级gitlab到12.10.6
下载地址:
gitlab-ce-12.10.6-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-12.10.6-ce.0.el7.x86_64.rpm
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
#12.10.6
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 11.7
重新加载配置
gitlab-ctl reconfigure
重启Gitlab服务
gitlab-ctl restart
升级gitlab到13.0.0
下载地址:
gitlab-ce-13.0.0-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.0.0-ce.0.el7.x86_64.rpm
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
#13.0.0
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 11.7
重新加载配置
gitlab-ctl reconfigure
重启Gitlab服务
gitlab-ctl restart
升级gitlab到13.2.0
下载地址:gitlab-ce-13.2.0-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.2.0-ce.0.el7.x86_64.rpm
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 11.7
升级gitlab到13.4.0
下载地址:gitlab-ce-13.4.0-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.4.0-ce.0.el7.x86_64.rpm
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 11.9
升级gitlab到13.6.0
下载地址:gitlab-ce-13.6.0-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.6.0-ce.0.el7.x86_64.rpm
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 11.9
升级gitlab到13.8.0
下载地址:gitlab-ce-13.8.0-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.8.0-ce.0.el7.x86_64.rpm
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 12.4
升级gitlab到13.8.8
下载地址:gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm
rpm -Uvh gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
#13.8.8
查看PostgreSQL版本
/opt/gitlab/embedded/bin/psql --version
#psql (PostgreSQL) 12.6
重新加载配置
gitlab-ctl reconfigure
重启Gitlab服务
gitlab-ctl restart
升级要按顺序一个一个升级,每个gitlab的版本号要跟数据库的版本号对应,如果有报错,检查一下当前gitlab的数据库版本号。