gitlab-rake gitlab:env:info 查看当前的版本
gitlab-rake gitlab:backup:create RAILS_ENV=production 备份数据 记录备份的文件.tar
安装docker
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
service docker start 启动服务
建立gitlab用的目录
mkdir -p /opt/gitlab
mkdir -p /opt/gitlab/config
mkdir -p /opt/gitlab/data
mkdir -p /opt/gitlab/logs
mkdir -p /opt/gitlab/ssl 证书这个目录下面要在启动前生成出来
mkdir -p /opt/gitlab/docker
下面启动gitlab
docker run --detach \ --hostname gitlab \ --env GITLAB_OMNIBUS_CONFIG="external_url 'https://ip:自己的端口/'; gitlab_rails['gitlab_shell_ssh_port'] = '端口就是页面上线上ssh的那个端口'; gitlab_rails['gitlab_email_from'] = '[email protected]'; gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'smtp.exmail.qq.com' gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = '[email protected]' gitlab_rails['smtp_password'] = '1234' gitlab_rails['smtp_domain'] = 'qq.com' gitlab_rails['smtp_authentication'] = 'login' gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true postgresql['enable'] = true nginx['redirect_http_to_https'] = false nginx['ssl_certificate'] = '/etc/gitlab/ssl/xx.crt' nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/xx.key' nginx['listen_port'] = 443 " \ --publish 你自己的端口:443 \ #这个端口就是web访问那个 --publish ssh那个端口:22 \ #自己的ssh端口因为物理机已经用了22了这个换一个必须 --name gitlab \ --restart always \ --volume /opt/gitlab/config:/etc/gitlab \ --volume /opt/gitlab/ssl:/etc/gitlab/ssl \ --volume /opt/gitlab/logs:/var/log/gitlab \ --volume /opt/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:xxx你的版本-ce.0
把备份放到目录里面
mv 备份的.tar /opt/gitlab/data/backup里面
docker exec -it gitlab /bin/bash 进入docker
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=xxxx 恢复你的数据
访问仓库看看报500错误
https://gitlab.com/gitlab-org/gitlab-ce/issues/21564
https://www.oschina.net/question/2946511_2200445
是gitlab数据迁移时的一个缺陷。解决方法
1、覆盖原来gitlab的 db_key_base 到新的gitlab
db_key_base 位置在 /etc/gitlab/gitlab-secrets.json
2、EE版本执行
gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
CE版本执行
gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
参考https://gitlab.com/gitlab-org/gitlab-ce/issues/17873
备份
就是定时的备份/opt/gitlab目录
tar -zcPf /备份到的目录/gitlab`date +%Y%m%d`.tar.gz ] /opt/gitlab find /备份的目录/ -mtime +7 -type f -name gitlab*.tar.gz -exec rm -rf {} \; # -mtime +n : 列出在n天之前(不含n天本身)被更改过内容的文件名
上面的备份方式简单,但是正规的应该这样备份的 ,但是这个配置不会备份 /opt/gitlab/config 就是docker里面的/etc/gitlab 证书目录 这些都不会备份需要手动恢复,只会备份数据这个命令
/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 邮件配置备份
gitlab-rake gitlab:backup:create 这个是gitlab专用的备份命令 可以自行百度查询,或者看我之前的文章 docker exec gitlab /bin/bash -c 'gitlab-rake gitlab:backup:create' >> /gitlab/backup.log定时执行这个就行 可以看输出的内容 Creating backup archive: 1587623708_2020_04_23_gitlab_backup.tar ... done 这个就是备份完成了 备份目录在 /opt/gitlab/data/backups 这个目录也能修改默认这个。