本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
2020-01-04
V1.2.0
更新日志
1.更改默认端口的配置步骤
2.数据库迁移与恢复及其注意事项
实例基于CentOS 7
系统完成
1.Gitlab
搭建
1.1、安装依赖环境
sudo yum install -y curl policycoreutils-python openssh-server
1.2、安装邮件服务
sudo yum install -y postfix
1.3、设置postfix
开机启动
sudo systemctl enable postfix
1.4、启动postfix
服务
sudo systemctl start postfix
1.5、添加gitlab
仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
1.6、安装gitlab
sudo yum install -y gitlab-ce
1.7、重新配置gitlab
sudo gitlab-ctl reconfigure
1.8、更改默认端口
sudo vim /etc/gitlab/gitlab.rb
nginx['redirect_http_to_https_port'] =88 #找到这一行,默认是80,改为你要的端口即可
sudo vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
server {
listen *:88; #找到这一行默认是80,改为你要的端口即可
1.9、重启gitlab
服务
sudo gitlab-ctl restart
1.10、配置firewall
,开放对应服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=88/tcp
sudo firewall-cmd --reload #重载防火墙以生效配置
如若是云服务器,外网防火墙也开放相应端口即可
2.Gitlab
备份
2.1、简单的脚本,
我这边是叫gitlab-backup
#!/bin/bash
#
cd /var/opt/gitlab/backups #进入gitlab备份目录
echo "cd /var/opt/gitlab/backups"
echo "create a gitlab-backup file"
gitlab-rake gitlab:backup:create #创建一个git完整备份文件
echo "complete"
2.2、查看crond
是否启动
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-08-21 12:59:10 CST; 2 months 22 days ago
Main PID: 3154 (crond)
CGroup: /system.slice/crond.service
└─3154 /usr/sbin/crond -n
Aug 21 12:59:10 localhost.localdomain systemd[1]: Started Command Scheduler.
Aug 21 12:59:10 localhost.localdomain crond[3154]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 57% if used.)
Aug 21 12:59:10 localhost.localdomain crond[3154]: (CRON) INFO (running with inotify support)
2.3、定时执行脚本备份
[root@localhost ~]# crontab
0 22 * * 6 bash /var/spool/cron/gitlab-backup.sh > /dev/null
[root@localhost ~]# crontab -l
0 22 * * 6 bash /var/spool/cron/gitlab-backup.sh > /dev/null
3.Gitlab
迁移
迁移如同备份与恢复的步骤一样,
只需要将老服务器/var/opt/gitlab/backups
目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups
即可(如果你没修改过默认备份目录的话)
但是需要注意的是新服务器上的Gitlab
的版本必须与创建备份时的Gitlab
版本号相同.
比如新服务器安装的是10.2.2
版本的Gitlab
, 那么迁移之前, 最好将老服务器的Gitlab
升级为10.2.2
在进行备份迁移较简单的方法就是
scp
,可以理解为ssh
管道下的cp
命令。把当前一个文件copy
到远程服务器上。
比如下面示例,-r
是递归,将本地a目录及其下属所有子文件或目录复制到远程主机的root目录下
旧机器操作如下:
如果需要备份当前数据库而不是此前写的脚本定期备份,需要执行以下命令来停止gitlab
服务保证没有新数据写入
sudo gitlab-ctl stop
再次手动备份当前数据库数据
gitlab-rake gitlab:backup:create
迁移脚本到新服务器
sudo scp /var/spool/cron/gitlab-backup.sh root@Newserver-IP:/var/spool/cron/
迁移数据库备份文件到新服务器
sudo scp 1578025391_2020_01_03_11.3.3_gitlab_backup.tar root@Newserver-IP:/var/opt/gitlab/backups/
新服务器恢复操作
千万!千万!千万!不要带上后缀名_gitlab_backup.tar_gitlab_backup.tar
,否则报错does notexist!
只需要输前面的文件名然后gitlab
会自动到backups
目录找文件
gitlab-rake gitlab:backup:restore BACKUP=1578025391_2020_01_03_11.3.3
本人教训,旧服务器版本与新服务器版本不符合,因此备份迁移作废;需要将新服务器重装旧版本gitlab;或者将旧服务器
gitlab
版本升级为新服务器版本一致,再重新备份迁移;但是gitlab
有个特点,升级不能跨版本升级,只能1
级1
级往上升;比如我旧服务器是11.3.3
,新服务器装的是最新的12.6.2
,只能升11.4.0
这样1小级,大家可以想象要升多少次才能升到12.6.2
了,所以我放弃了升级,直接将新服务器重装系统然后安装与旧服务器一致的11.3.3
版本后再进行迁移恢复操作.另外,迁移也可以用
rsync
查看gitlab
当前版本可以用下面这条命令
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION