BitnamiGitLab升级以及Troubledshooting

来源:互联网 发布:听说桐岛要退部 知乎 编辑:程序博客网 时间:2024/06/11 19:18

目前GitLab已经成为最流行的使用Git工具托管代码的软件,有开源和企业版本的。本文介绍GitLab的升级方式,用的是Bitnami的一键安装包,安装包地址

https://bitnami.com/stack/gitlab/installer

文章介绍从版本7.13.5升级到 8.1.0,8.2.0也可以。

步骤如下:

1.停掉Gitlab服务器,启动 postgresql 和 redis,ctlscript.sh 就在安装目录下,默认是在/opt/gitlab-7.13.5/ctlscript.sh  ,注意下面的路径中的“bitnami”都换成你安装的路径

sudo /opt/bitnami/ctlscript.sh stopsudo /opt/bitnami/ctlscript.sh start postgresqlsudo /opt/bitnami/ctlscript.sh start redis

2.切换到Git用户,(注意一下均使用git用户,这一点非常重要,以免后面各种权限问题)升级 Gitlabshell

sudo su git
cd /opt/bitnami/apps/gitlab/gitlab-shellgit stashgit fetch https://github.com/gitlabhq/gitlab-shellgit pull  #拉取远程库的更新,由此命令可以知道 gitlab-shell文件夹下面是一个git库
git checkout v2.6.3  [replace it with the latest version]  #在这里checkout 最新版本即可,通过 git branch -a 可以查看 pull了哪些版本git stash apply
3.备份GitLab,此处略去。

4.   在Github上找到你想要升级到的版本,链接为 https://github.com/gitlabhq/gitlabhq/releases

运行自动升级命令 cd /opt/bitnami/apps/gitlab/htdocs

ruby -Ilib -e 'require "gitlab/upgrader"' -e 'class Gitlab::Upgrader' -e 'def latest_version_raw' -e '"v8.1.0"' -e 'end' -e 'end' -e 'Gitlab::upgrader.new.execute'  #v8.1.0替换成你需要的版本即可
然后屏幕输出类似于于下:
GitLab 7 upgrade toolYour version is 7.13.5Latest available version for GitLab 7 is 8.1.0Newer GitLab version is availableDo you want to upgrade (yes/no)? yesStash changed files -> git stashSaved working directory and index state WIP on (no branch): 489b413 Version 7.13.5HEAD is now at 489b413 Version 7.13.5 -> OKGet latest code -> git fetch -> OKSwitch to new version -> git checkout v8.1.0Previous HEAD position was 489b413... Version 7.13.5HEAD is now at b725318... Version 8.1.0 -> OKInstall gems -> bundleFetching source index from https://rubygems.org/
注意 "->"符号后面跟的除了OK之外都是可以单独运行的命令,如果自动升级命令中间断开,那么调试错误之后,可以手动运行命令,以继续。这一步自动升级有
一些Ruby 的 gems依赖需要下载可能会涉及包下不下来后面后文会有 troubleshooting
5.注意步骤4最后一步是 bundle这个命令如果,这个命令顺利运行,则会输出一下类似内容:
Your bundle is complete!Gems in the groups development, test, sqlite, test and sqlite were not installed.It was installed into ./vendor/bundlePost-install message from httparty:When you HTTParty, you must party hard!
6.版本7到8的一个最重要的变化是 使用http clone代码的模块改动了,但是公司内部一般使用ssh协议,所以本文不涉及这一模块的升级
安装一些 libs,bitnami使用的是 postgresql,
bundle install --without mysql development test --deployment
数据库迁移
bundle exec rake db:migrate RAILS_ENV=production
清除升级所产生的缓存
 bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
7.升级 config files
不同版本的不同功能模块在gitlab.yml文件中 这个文件一般在 /opt/gitlab-x-x-x/apps/gitlab/htdocs/config/下面 进入这个文件夹
运行命令
git diff origin/7-13-stable:config/gitlab.yml.example origin/8-0-stable:config/gitlab.yml.example
查看7.13版本与8.1的config文件有哪些不同,减号开头的删除,加好开头的添加即可。
8.升级后校验
按照上面的步骤运行完成之后,就可以重启gitlab服务器了,使用 ctlscript.sh restart 命令即可
如果升级有误,调试又无法解决那就使用备份恢复到之前的版本,按照上面的步骤,除了新版本中的http协议模块没有升级,其他模块都可以升级
(1)检查升级后的版本以及模块是否运行
bundle exec rake gitlab:env:info RAILS_ENV=production
(2)
检查各种权限以及gems包等细节部分是否安装正确
bundle exec rake gitlab:check RAILS_ENV=production
这里会显示一些没有正确升级的或安装的部分,有些是不用改的如果可以在升级之后完整执行clone push 等一些操作,没有报错日志,就没有必要修改
因为使用的是Bitnami的安装包,而这个命令检查的是使用源码安装的gitlab所以检查结果有一些出入。在这里,我推荐使用官网的Omnibus安装包或者
源码编译安装,不要使用Bitnami的安装包,这个安装包不好维护。

Troubleshooting

1.在步骤4的 bundle命令,经常会出现从 ruby方网站下不下来gems包,只要换成淘宝的镜像即可替换命令如下,注意还是git用户,在htdocs文件夹下面,这个文件夹下面还有一个Gemsfile文件,
查看现在的源:
gem sources -l 显示当前的源
一般为 
https://rubygems.org/
gem sources -r https://rubygems.org/  #去掉官网的源
gem sources -a https://ruby.taobao.org/ #添加淘宝的源
将htdocs下面的Gemfile的以source开头的一行后的url也改为淘宝的源
然后bundle应该是可以成功了
2.升级之后,如果在网页上不能看到仓库的服务器路径可能是权限问题,将repositories文件夹的权限给git用户即可,repositories文件夹下面为GitLab上托管的所有项目代码库一般在/opt/gitlab-7.13.5-0/apps/gitlab/下面
3.升级之后无法使用 ssh协议clone,查看 production.log日志可能是 gitlabshell的日志 gitlab-shell.log文件夹git没有权限,将这个文件夹的权限给git即可,因为客户端在使用 git命令clone的时候是调用 服务器端的 gitlab-shell来执行相关的命令,服务器端需要记录操作信息,必须写入日志。

参考资源:

Bitnami官网的升级步骤:https://wiki.bitnami.com/Applications/BitNami_GitLab#How_to_upgrade_Gitlab.3f 这里只执行到bundle命令即可

Gitlab官网的升级步骤:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/7.14-to-8.0.md 这里给出的是7.14到8.0其实7.13也可以,在这个链接下面
有http server的升级方法,对于使用 http协议的可以参考这里。
如果只是按照Bitnami的官网的升级方式是不能正常升级7到版本8的,因此处在寻找Git版本管理软件开始的阶段,我推荐使用官网的Omnibus安装包和源码安装,便于维护等。

1 0