gitlab升级迁移---源码包安装转rpm包(三)

      距离上次gitlab升级快过去一年了,期间gitlab已更新了好多新版本,都没有进行升级。理由很简单,因为升级很麻烦,秉着能用就先用着的想法。但是最近gitlab接连发出之前旧版本有安全漏洞,看到的公告是:《GitLab 叕发布安全补丁 12.0.3, 11.11.5 和 11.10.8,请即刻升级》,都出现“叕”字了,说明不得不升级了,毕竟代码是公司的核心资产。

     那么说干就干,首先去gitlab官网查看升级文档,看需要升级哪些东西。我这gitlab之前是用源码包安装的,版本是10.8.7,需要升级到11.11.5(11版本的最高版本),最后才能升级到最新的12版本。总结对比了下,需要做如下升级:

软件 10.8.7版本 11.11.5版本
Ruby version 2.44p96 2.5.3p105
Gem version 2.6.14.1 2.7.6
Bundler version 1.16.3 1.17.3
Rake version 12.3.1 12.3.1
Redis version 4.9.104 4.9.104
Git version 2.18.0 2.21.x
sidekiq version 5.0.5 5.0.5
Go version go1.9.6 go1.11.5
gitlab version 10.8.7 11.11.5
Gitlab shell version 7.1.2 9.1.0
node version v8.9.4 v8.10.x
yarn version --- v1.10.x

  

  为了在升级过程中不影响gitlab的正常使用(升级过程中需要停机,升级时长未知,升级过程会不会出问题也未知),所以根据现有的gitlab服务器环境做了镜像和快照,然后根据镜像和快照克隆了一个完全一样的环境;这些升级操作先全在克隆的环境中进行,就算出现问题也不影响旧环境的正常使用,待这边流程跑通了后在旧的gitlab服务器上进行升级。在升级完这些软件,进行升级gitlab的时候,出现问题了。。。。。主要是在更新gitlab源码的时候由于它官网是在国外,更新的时候很慢,然后就一直报超时。还有一个问题是,我看到官网说gitlab从12版本后就不在支持mysql数据库了,这。。。。

  正好最近公司想把gitlab从腾讯云上迁移回内网,而我上次升级的时候就想把源码包安装的gitlab换成rpm包的安装方式,这样以后升级就没那么麻烦,不用升级一大堆软件了,直接yum update就好。那就借这次机会尝试下,思路:现在内网的一台服务器上直接装rpm版的11.11.5,把数据迁移过来后再升级到12版本。(这里有个难点,那就是需要把MySQL的数据迁移到postgresql,这里我百度了下,有mysql数据迁移到postgresql的成功案例,那么就说明这条路应该是行的通的)

1、内网服务器上安装gitlab 11.11.5版本:

[root@dev ~]#yum install -y curl policycoreutils-python openssh-server
[root@dev ~]#systemctl enable sshd [root@dev ~]#systemctl start sshd [root@dev ~]#firewall
-cmd --permanent --add-service=http [root@dev ~]#systemctl reload firewalld [root@dev ~]#yum install postfix [root@dev ~]#systemctl enable postfix [root@dev ~]#systemctl start postfix [root@dev ~]#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash [root@dev ~]#cd /usr/local/src [root@dev src]#wget wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm [root@dev src]#yum -y install gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm
[root@dev src]#ps -ef |grep gitlab --可以看到gitlab已经启动
[root@dev src]#cat /var/opt/gitlab/gitlab-rails/VERSION --查看gitlab的版本
11.11.5

2、修改配置:

#mkdir -p /data/gitlab/backups
#mkdir -p /data/gitlab/git-data/repositories
#chown -R git:root /data/gitlab/backups/
#chown -R git.root /data/gitlab/git-data/
#vim /etc/gitlab/gitlab.rb

a、更改gitlab的访问URL:

ps:注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口

b、更改gitlab的备份路径:

c、更改gitlab的项目默认存放路径:

3、使配置生效及重启:

#gitlab-ctl reconfigure     --这一步需要一点时间

#gitlab-ctl restart   --全部“ok: run”表示重启成功

4、访问:http://192.168.1.204     初始账户:root 密码:5iveL!fe  第一次登入会要求修改密码

 5、postgresql配置:

#cd /var/opt/gitlab/postgresql/data
#vim pg_hba.conf
host     all    all    192.168.1.0/24    trust  添加这行,192.168.1.0/24这个段的ip地址不需要密码可以连接

#vim postgresql.conf
listen_addresses = '192.168.1.204'    修改监听地址为本机ip

#gitlab-ctl restart postgresql   重启数据库

#/opt/gitlab/embedded/bin/psql -U gitlab -d gitlabhq_production -h 192.168.1.204   不用输密码可进入
psql(9.6.11)
Type "help" for help
gitlabhq_production=> alter user gitlab with password 'gitlab123#@!' 修改gitlab密码,gitalb创建的数据库超级用户为gitlab-psql,想修改密码自己通过命令修改即可
gitlabhq_production=>\q 退出

#vim /var/opt/gitlab/postgresql/data/pg_hba.conf

host all all 192.168.1.0/24 md5 修改trust为md5,即连接需要密码
#gitalb-ctl restart postgresql
#/opt/gitlab/embedded/bin/psql -U gitlab -d gitlabhq_production -h 192.168.1.204
Password for user gitlab:            输入gitlab用户的密码回车即可进入数据库

既然修改了数据库gitlab用户的密码,gitlab服务器中数据库配置文件,也需要修改,不然数据库连接不上

#vim /var/opt/gitlab/gitalb-rails/etc/database.yml

  #gitlab-ctl restart   修改完数据库配置重启下服务

 做完以上配置后,就可以使用Navicat Premium连接postgresql了,用图形界面直观些。

6、数据迁移:

这里按照之前写的一篇gitlab升级(二)文档,把keys,namespaces,users三个表的数据迁移过来就好,其他的暂且就不迁了

步骤:

a、mysql中用mysqldump把这几个表只导出数据,不要表结构,表结构安装gitlab的时候已经有了

#mysqldump -t gitlabhq_production -u gitlab -p keys >keys.sql

#mysqldump -t gitlabhq_production -u gitlab -p users >users.sql

#mysqldump -t gitlabhq_production -u gitlab -p namespaces >namespaces.sql

b、查看了下gitlab 11.11.5的postgresql的表结构和 gitalb 10.8.7的mysql 表结构差不多,无非是新版本有的表多了一些字段,或者多了一些新表,但这都不影响我们导入数据。但是有个要注意的地方是,postgresql里有些字段是用的bool类型,这在mysql里没有这个类型,故数据不能直接导入,需要把mysql里不是bool类型的字段数据改成postgresql所对应的bool型数据,然后在导入。

c、导入完后,我们检查下数据是否正确,也可以拿几个账号测试下登入是否正常,如正常的话则导入就成功了,这里贴下keys表的数据:

7、导入项目,这一步开始和之前写的gitlab升级(二)里的步骤是一样的,这里就不过多阐述了。

8、gitlab 11.11.5 升级到gitalb 12.1.0

#gitlab-rake gitlab:backup:create STRATEGY=copy  --升级前先进行备份

#yum info gitlab-ce --查看gitlab-ce的版本信息,可以看到最新的版本是12.1.0 #yum -y update gitlab-ce --升级gitlab

#cat /var/opt/gitlab/gitlab-rails/VERSION --查看gitlab版本

  注:升级完可能数据库的配置被初始化了,需要重新配置下,不然数据库会连不上

 9、访问htt://192.168.1.204

猜你喜欢

转载自www.cnblogs.com/liangyou666/p/11241455.html