文章目录
gitlab迁移搭建并配置https
备份gitlab
使用docker执行备份
docker exec -t gitlab gitlab-rake gitlab:backup:create
备份路径为/var/opt/gitlab/backups/
将备份文件上传到目标服务器
拉取gitlab镜像
此处要注意gitlab的版本,要和备份文件的版本一致,可以看备份文件的文件名中显示的版本
docker pull gitlab/gitlab-ee:13.3.4-ee.0
由于目标服务器拉取镜像较慢,我们可以在网络快的主机上先拉取,然后保存到本地再进行目标服务器的离线安装
可以直接拉下来忽略以下步骤
1. 保存镜像到本地
docker save -o gitlab-image.docker gitlab/gitlab-ee:13.3.4-ee.0
2. 传文件到目标服务器
scp gitlab-image.docker user@desc_host:~
3. ssh到目标服务器
ssh user@desc_host
4. 加载镜像文件
docker load -i gitlab-image.docker
启动docker容器
docker run -d --name gitlab --hostname gitlab.hostname.cn -p 2443:443 -p 222:22 -p 280:80 gitlab/gitlab-ee:13.3.4-ee.0
此处把22端口映射到222,在使用ssh拉代码时要注意改为对应的
222
端口,需要修改/etc/gitlab/gitlab.rb
中的
gitlab_rails['gitlab_shell_ssh_port'] = 222
,可以在后文中配置https的时候一块改了
恢复备份
1. 拷贝备份文件到docker容器
docker cp backup_file_name container_id:/var/opt/gitlab/backups/
2. 进入容器
docker exec -it container_id bash
3. 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
4. 恢复
gitlab-rake gitlab:backup:restore
其中报了一个Warning:
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need to restore these files manually.
暂时忽略
5. 重启
gitlab-ctl restart
配置https
1. 修改docker中的/etc/gitlab/gitlab.rb
gitlab_rails['gitlab_shell_ssh_port'] = 222
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.hostname.cn.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.hostname.cn.key"
2. 拷贝证书到docker下/etc/gitlab/
3. 重启docker容器
docker restart gitlab
4. 配置目标机器nginx
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/gitlab/ssl/gitlab.hostname.cn.pem;
ssl_certificate_key /etc/gitlab/ssl/gitlab.hostname.cn.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
client_max_body_size 500m;
server_name gitlab.hostname.cn;
location / {
proxy_pass https://localhost:2443;
}
}