背景
最開始gitlab是部署在公司內(nèi)網(wǎng)的機(jī)器上,現(xiàn)在需要將gitlab遷移至阿里云上。以下是遷移的詳細(xì)步驟。
準(zhǔn)備工作
首先需要做的準(zhǔn)備有這些蟀架。原系統(tǒng)為CentOS 7.4。
安裝相同版本的gitlab
-
查看gitlab版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
根據(jù)系統(tǒng)以及gitlab版本去清華大學(xué)鏡像站_gitlab-ce下載特定版本的gitlab的RPM或者DEB包榆骚。
# CentOS 6 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el6 # CentOS 7 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el7 # Debian 9 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian/pool/stretch/main/g/gitlab-ce/ https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/debian/pool/stretch/main/g/gitlab-ee/
-
安裝gitlab
安裝gitlab比較簡(jiǎn)單
# 下載rpm包 wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.5.1-ce.0.el7.x86_64.rpm # 安裝rpm包(在下載的rpm包目錄下) yum install -y gitlab-ce-10.5.1-ce.0.el7.x86_64.rpm
備份
-
備份數(shù)據(jù)(用戶信息片拍、項(xiàng)目信息、代碼)
利用gitlab自帶的命令
gitlab-rake
進(jìn)行數(shù)據(jù)備份妓肢,備份位于/etc/gitlab/gitlab.rb
中gitlab_rails['backup_path']
選項(xiàng)對(duì)應(yīng)的目錄捌省,備份目錄默認(rèn)位于/var/opt/gitlab/backups
# 備份命令 gitlab-rake gitlab:backup:create # 查看備份目錄 cat /etc/gitlab/gitlab.rb|grep gitlab_rails|grep backup_path
-
備份原服務(wù)器上的配置信息
保存gitlab的域名、郵件發(fā)送信息职恳、白名單等相關(guān)信息的配置文件/etc/gitlab/gitlab.rb
存儲(chǔ)了gitlab的db secret信息的配置文件
/etc/gitlab/gitlab-secrets.json
-
打包備份數(shù)據(jù)和配置文件
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups cd /var/opt/gitlab/backups tar zcvf gitlab_all_backup.tar.gz ./*
還原gitlab配置和數(shù)據(jù)
- 將打包的備份文件上傳至新服務(wù)器
scp gitlab_all_backup.tar.gz root@newHost:/tmp/ # 登錄新服務(wù)器 ssh root@newHost cd /tmp tar zxvf gitlab_all_backup.tar.gz
- 還原配置文件
將配置文件移到/etc/gitlab下cd /tmp # 反斜線是忽略系統(tǒng)的alias所禀,不會(huì)有覆蓋文件提醒方面,慎重使用 \mv gitlab.rb gitlab-secrets.json /etc/gitlab/ # 重載gitlab配置 gitlab-ctl reconfigure
- 還原數(shù)據(jù)
將之前備份的數(shù)據(jù)文件移到/var/opt/gitlab/backups下放钦,然后恢復(fù)數(shù)據(jù)cd /tmp # 注意前面一串?dāng)?shù)字為時(shí)間戳,將你備份的文件移進(jìn)去 mv 1552743127_2019_03_16_10.5.1_gitlab_backup.tar /var/opt/gitlab/backups # 恢復(fù)數(shù)據(jù)恭金,注意BACKUP=后面只要 _gitlab_backup.tar 前面的版本號(hào)操禀,如下 gitlab-rake gitlab:backup:restore BACKUP=1552743127_2019_03_16_10.5.1 # 重載gitlab配置 gitlab-ctl reconfigure
配置文件/etc/gitlab/gitlab.rb簡(jiǎn)介
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來(lái)源
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" #設(shè)置gitlab備份路徑
gitlab_rails['gitlab_shell_ssh_port'] = xxxx #設(shè)置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"], #設(shè)置gitlab白名單列表
'maxretry' => 300,
'findtime' => 5,
'bantime' => 60
}
gitlab_rails['initial_root_password'] = "xxxxxxx" #gitlab初始化root密碼
gitlab_rails['smtp_enable'] = true #設(shè)置gitlab 發(fā)送郵件smtp服務(wù)器信息
gitlab_rails['smtp_address'] = "smtp.xxx.xxx.com" #設(shè)置smtp服務(wù)器地址
gitlab_rails['smtp_port'] = xxx #設(shè)置smtp服務(wù)器端口
gitlab_rails['smtp_user_name'] = "xxx-gitlab@xxx.com" #設(shè)置smtp用戶名
gitlab_rails['smtp_password'] = "xxxxxx" #設(shè)置smtp密碼
gitlab_rails['smtp_domain'] = "smtp.xxx.com" #設(shè)置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" #設(shè)置gitlab數(shù)據(jù)目錄
gitlab_rails['ldap_enabled'] = true #設(shè)置gitlab ldap認(rèn)證
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' #設(shè)置ldap服務(wù)器地址
port: xxx #設(shè)置ldap服務(wù)器端口
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用戶對(duì)應(yīng)的密碼
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']