Gitlab 4.1 upgrade to Gitlab 6.0超偷懶方法

Gitlab官方網站已經釋出Gitlab 6.0了,我的版本卻還在4.1。所以忍不住手癢,試試看4.1升級到6.0,但是這中間的版本實在...

Gitlab官方網站已經釋出Gitlab 6.0了,我的版本卻還在4.1。所以忍不住手癢,試試看4.1升級到6.0,但是這中間的版本實在太多啦。要一個一個升級,不知道又會遇到什麼問題。所幸愛亂搞的我,想到了妙招,如果我重新安裝6.0但是使用的是原本的4.1資料表,是不是也可以正常運作呢? 因為Gitlab的migrate應該是不會影響到以前的資料。

備份以下東西,以防止不能運作後,還能回復成4.1的版本

  1. Mysql中的gitlabhq_production資料庫
  2. /etc/init.d/gitlab

再來就先停止Gitlab的運行

$ service gitlab stop

然後依照官網的安裝步驟。但只執行到bundle install。因為要使用到原本的資料庫。

bundle install --deployment --without development test postgres aws

再來依照官網5.4升級到6.0的文件,執行下列程序。

sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_groups RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_global_projects RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production
sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production
sudo -u git -H bundle exec rake gitlab:satellites:create RAILS_ENV=production

# Clear redis cache
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production

# Clear and precompile assets
sudo -u git -H bundle exec rake assets:clean RAILS_ENV=production
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

取得啟動腳本

curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab
chkconfig --add gitlab
chkconfig gitlab on
chmod +x /etc/init.d/gitlab

因為我的gitlab是掛在apache上的所以還要修改httpd-vhosts.conf

$ vim /etc/httpd/conf.d/httpd-vhosts.conf
<virtualhost>
  ServerName git.ocomm.com.tw
  DocumentRoot /home/git/gitlab/public

  # !!! Be sure to point DocumentRoot to 'public'!
  <directory>
    # This relaxes Apache security settings.
    AllowOverride all
    # MultiViews must be turned off.
    Options -MultiViews
  </directory></virtualhost>

重新啟動apache

$ service httpd restart

重新啟動gitlab

$ service gitlab start

真的成功了…哈!!

gitlab 6.0

這中間遇到了一些問題,因為redis我有另外使用,所以沒有bind IP,也開了requirepass致使我的redis一直無法被gitlab正常使用,最後修改redis.conf才可以正常安裝。

$ vim /etc/redis/redis.conf
bind 127.0.0.1 #加回來
#requirepass *redis* #註解起來否則gitlab無法正常使用

以及升級完6.0後在clone一直會問git這個使用者的密碼,在這邊也有提到這個問題。必須在authorized_keys加上這一段就不會再問了。

$ vim /home/git/.ssh/authorized_keys
command="/home/git/gitlab/apps/gitlab/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty

Alan

Read more posts by this author.