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 這個目錄也能修改默認這個。