gitlab迁移

Posted crysmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gitlab迁移相关的知识,希望对你有一定的参考价值。

1、背景:

操作系统: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防火墙。

2、新服务器下载安装gitlab服务:

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

3、备份原有服务器上文件信息:

1、/etc/gitlab/gitlab.rb:该文件配置了gitlab的域名、邮件发送信息、白名单等相关信息。
2、/etc/gitlab/gitlab-secrets.json:该文件存储了gitlab的db secret信息。

将原有服务器上的以上两个文件复制到新服务器上对应目录下。

4、备份原有服务器上gitlab数据信息:

使用以下命令进行备份。
/usr/bin/gitlab-rake gitlab:backup:create 默认备份完成的文件存放目录为:/var/opt/gitlab/backups。若该目录下不存在,则需要查看/etc/gitlab/gitlab.rb配置中对应的gitlab_rails[backup_path]选项所指定的目录。

5、将原有服务器上的gitlab配置文件、备份数据scp到新服务器的对应目录下:

#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

6、在新服务器安装依赖,同时启动对应服务:

yum install -y curl policycoreutils-python openssh-server postfix
systemctl enable postfix
systemctl start postfix

7、在新服务器重新进行gitlab配置,同时进行数据恢复:

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

8、gitlab.rb配置简要解析:

external_url http://gitlab.xxx.com                                #gitlab域名
gitlab_rails[gitlab_email_enabled] = true                         #gitlab启用email通知
gitlab_rails[gitlab_email_from] = [email protected]            #gitlab email来源
gitlab_rails[gitlab_email_display_name] = gitlab-servce         #email展示名称
gitlab_rails[gitlab_email_reply_to] = [email protected]        #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] = "[email protected]"               #设置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] = [email protected]
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

 










以上是关于gitlab迁移的主要内容,如果未能解决你的问题,请参考以下文章

gitlab仓库迁移

本地 gitlab 项目迁移到阿里云(含历史提交记录一起迁移)

自建Gitlab迁移工具使用指南

gitlab项目迁移保留所有历史记录,分支

GitLab服务器迁移

gitlab 存储仓库目录设置及数据迁移