gitab的升级的前置条件就是已经安装好了和旧的gitab服务器相同版本的Omnibus gitlab。source源码安装的gitlab升级到最新的gitlab的Omnibus版本,操作步骤是:
1.source源码安装的gitlab更改成相同版本的Omnibus版本的gitlab。
source源码安装的gitlab的版本是gitlab 7.14.3;MySQL是5.6。
2.Omnibus版本的gitlab升级到最新版本。
下载最新版本的gitlab的CE的rpm包,然后直接yum localinstall安装即可。
一.旧服务器,source源码安装的gitlab的备份。
1.关闭gitlab服务
su - git
sudo /etc/init.d/gitlab stop
2.备份最新的数据
su - git
cd /home/git/gitlab/
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
#上述命令执行完成之后会在gitlab下的tmp/backup/目录下面获取一个前缀是时间戳的tar.gz压缩文件,这个文件就是备份了数据库信息已经git仓库,wiki信息。
3.备份数据库,以postgresql的格式备份出来
mysqldump --compatible=postgresql --default-character-set=utf8 -r gitlabhq_production.mysql -u gitlab gitlabhq_production -p
4.mysql转postgresql。
a).下载mysql转postgresql的工具集
git clone https://github.com/gitlabhq/mysql-postgresql-converter.git -b gitlab
b).mysql的sql语句转换成postgresql的sql语句
python mysql-postgresql-converter/db_converter.py gitlabhq_production.mysql db/database.sql
#因为备份之后的压缩文件解压之后,mysql的sql文件是放在一个db目录下面的database.sql文件,之所以创建db目录就是因为为了替换压缩文件里面的db/database.sql文件
c).转储
ed -s db/database.sql < mysql-postgresql-converter/move_drop_indexes.ed
#上述命令的执行需要在python2.7或者以上的环境才能够执行
d).替换压缩文件中的db/database.sql
gzip db/database.sql
tar rf 1448859844_gitlab_backup.tar db/database.sql.gz
二.新服务器的恢复
1.安装好Omnibus gitlab 7.14.3
2.拷贝备份到新服务器的备份目录
scp 1448859844_gitlab_backup.tar root@new_gitlab:/home/gitlab/git-data/backup
3.更改压缩文件权限
chown git 1448859844_gitlab_backup.tar
4.恢复备份
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
LC_ALL="en_US.UTF-8" sudo gitlab-rake gitlab:backup:restore BACKUP=1448859844
#加上这个变量,否则执行到gitlab:shell:setup重新生成authorized_keys时会报错
5.更改git仓库权限信息
sudo chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories
sudo chmod -R ug-s /var/opt/gitlab/git-data/repositories
find /var/opt/gitlab/git-data/repositories -type d -print0 | sudo xargs -0 chmod g+s
6.恢复git和项目信息
sudo gitlab-rake gitlab:satellites:create RAILS_ENV=production
7.启动gitlab
sudo gitlab-ctl start
8.gitab检测
sudo gitlab-rake gitlab:check
三.新服务局升级到最新版本的gitlab
yum localinstall gitlab-ce.*.rpm
#yum安装会自动升级和清除原来旧版本的gitlab信息
当执行rpm进行升级时Gitlab会自动执行以下命令:
1. 关闭gitlab服务。
2. 使用当前的旧版本Gitlab创建备份(轻量级备份,仅备份数据库)
3. 运行gitlab-ctl reconfigure,进行必要的数据库更新迁移。
4. 重新启动Gitlab服务。
四.更改配置文件信息:
1.更改gitlab的仓库文件目录。
cd /etc/gitlab/
vi gitlab.rb
# git_data_dir "/var/opt/gitlab/git-data"
git_data_dir "/home/gitlab/git-data"
2.更改gitlab的backup仓库
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_path'] = "/home/gitlab/backups"
3.更改捆绑的Nginx的主配置文件nginx.conf信息
nginx['custom_nginx_config'] = "include /var/opt/gitlab/*.conf;"
4.更改捆绑的Nginx的子配置文件gitlab-http.conf文件信息
nginx['custom_gitlab_server_config'] = " location = /wiki { \n return 301 http://git.moumentei.com/other/wiki/wikis/home; \n}\n"
5.使用公司内部的SMTP邮件服务器
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_authentication'] = false
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
#所有在/etc/gitlab/gitlab.rb配置文件里面的修改都需要执行gitlab-ctl reconfigure,重新读取配置文件信息。
升级完成之后,若是在web见面创建项目失败,可以执行以下命令,清除缓存信息
sudo gitlab-rake cache:clear
五.关于hosts和known_hosts映射问题。
因为更换了新的gitlab服务器,所以之前所有基于git-clone过的服务器在重新提交或者拉去的时候会报错,提示Host key verification failed.需要在knwon_hosts文件里面把包含旧的服务器信息的公钥删除,在重新ssh一次。