距离上次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版本:
[[email protected] ~]#yum install -y curl policycoreutils-python openssh-server[[email protected] ~]#systemctl enable sshd [[email protected] ~]#systemctl start sshd [[email protected] ~]#firewall-cmd --permanent --add-service=http [[email protected] ~]#systemctl reload firewalld [[email protected] ~]#yum install postfix [[email protected] ~]#systemctl enable postfix [[email protected] ~]#systemctl start postfix [[email protected] ~]#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash [[email protected] ~]#cd /usr/local/src [[email protected] src]#wget wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm [[email protected] src]#yum -y install gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm[[email protected] src]#ps -ef |grep gitlab --可以看到gitlab已经启动[[email protected] 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 helpgitlabhq_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.204Password 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
原文地址:https://www.cnblogs.com/liangyou666/p/11241455.html