一、背景:python
操做系統:CentOS Linux release 7.5.1804 (Core) gitlab版本:9.2.5 使用rpm包地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.2.5-ce.0.el7.x86_64.rpm
備註:須要保證遷移的兩臺服務器gitlab版本一致。請先關閉selinux、firewalld防火牆。
二、新服務器下載安裝gitlab服務:linux
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.2.5-ce.0.el7.x86_64.rpm yum localinstall gitlab-ce-9.2.5-ce.0.el7.x86_64.rpm
三、備份原有服務器上文件信息:git
1、/etc/gitlab/gitlab.rb:該文件配置了gitlab的域名、郵件發送信息、白名單等相關信息。 2、/etc/gitlab/gitlab-secrets.json:該文件存儲了gitlab的db secret信息。
將原有服務器上的以上兩個文件複製到新服務器上對應目錄下。
四、備份原有服務器上gitlab數據信息:shell
使用如下命令進行備份。
/usr/bin/gitlab-rake gitlab:backup:create 默認備份完成的文件存放目錄爲:/var/opt/gitlab/backups。若該目錄下不存在,則須要查看/etc/gitlab/gitlab.rb配置中對應的gitlab_rails['backup_path']選項所指定的目錄。
五、將原有服務器上的gitlab配置文件、備份數據scp到新服務器的對應目錄下:json
#scp gitlab倉庫備份數據 scp /NFS/1533614595_2018_08_07_9.2.5_gitlab_backup.tar #scp gitlab的配置文件 scp /etc/gitlab/gitlab.rb xx.xx.xx.xx:/etc/gitlab/gitlab.rb scp /etc/gitlab/gitlab-secrets.json xx.xx.xx.xx:/etc/gitlab/gitlab-secrets.json
六、在新服務器安裝依賴,同時啓動對應服務:服務器
yum install -y curl policycoreutils-python openssh-server postfix
systemctl enable postfix
systemctl start postfix
七、在新服務器從新進行gitlab配置,同時進行數據恢復:dom
gitlab-ctl reconfigure
gitlab-rake gitlab:backup:restore BACKUP=1533614595_2018_08_07_9.2.5
其中1533614595_2018_08_07_9.2.5對應的爲gitlab備份tar包的版本號。
保守起見,先進行gitlab-ctl reconfigure,而後啓動服務。
gitlab-ctl start
八、gitlab.rb配置簡要解析:ssh
external_url 'http://gitlab.xxx.com' #gitlab域名 gitlab_rails['gitlab_email_enabled'] = true #gitlab啓用email通知 gitlab_rails['gitlab_email_from'] = 'xxx-gitlab@xxx.com' #gitlab email來源 gitlab_rails['gitlab_email_display_name'] = 'gitlab-servce' #email展現名稱 gitlab_rails['gitlab_email_reply_to'] = 'xxx-gitlab@xxx.com' #gitlab返回郵箱地址 gitlab_rails['gitlab_email_subject_suffix'] = '' gitlab_rails['manage_backup_path'] = true #啓用backup路徑配置 gitlab_rails['backup_path'] = "/NFS" #設置gitlab備份路徑 gitlab_rails['gitlab_shell_ssh_port'] = xxxx #設置gitlab ssh端口 gitlab_rails['git_max_size'] = 20971520 gitlab_rails['git_timeout'] = 10 gitlab_rails['gitlab_shell_git_timeout'] = 800 gitlab_rails['rack_attack_git_basic_auth'] = { 'enabled' => true, 'ip_whitelist' => ["192.168.8.118"], #設置gitlab白名單列表 'maxretry' => 300, 'findtime' => 5, 'bantime' => 60 } gitlab_rails['initial_root_password'] = "xxxxxxx" #gitlab初始化root密碼 gitlab_rails['smtp_enable'] = true #設置gitlab 發送郵件smtp服務器信息 gitlab_rails['smtp_address'] = "smtp.xxx.xxx.com" #設置smtp服務器地址 gitlab_rails['smtp_port'] = xxx #設置smtp服務器端口 gitlab_rails['smtp_user_name'] = "xxx-gitlab@xxx.com" #設置smtp用戶名 gitlab_rails['smtp_password'] = "xxxxxx" #設置smtp密碼 gitlab_rails['smtp_domain'] = "smtp.xxx.com" #設置smtp域名 gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'xxx-gitlab@xxx.com' git_data_dir "/data/gitlab-data" #設置gitlab數據目錄 gitlab_rails['ldap_enabled'] = true #設置gitlab ldap認證 gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' main: # 'main' is the GitLab 'provider ID' of this LDAP server label: 'LDAP' host: 'xx.xx.xx.xx' #設置ldap服務器地址 port: xxx #設置ldap服務器端口 uid: 'cn' method: 'plain' # "tls" or "ssl" or "plain" bind_dn: 'cn=xxx,dc=xxx,dc=com' #ldap bind dn password: 'xxx' #ldap bind dn用戶對應的密碼 active_directory: true allow_username_or_email_login: true #容許用戶名和郵箱登陸 block_auto_created_users: false base: 'dc=xxx,dc=com' #ldap base dn信息,即搜索域 attributes: username: ['cn', 'uid'] email: ['mail', 'email'] EOS