公司的gitlab是一年多前安裝的镜廉,還是比較老的7.6.2版本签餐,各種問題導(dǎo)致迫切需要升級到較新的版本寓涨。為了保證平時的正常使用盯串,只能在假期進(jìn)行升級氯檐。所以利用端午節(jié)假期搞了2天,折騰了幾次才搞明白体捏。不過升級過程中的辛苦還是值得的冠摄,不僅新的版本在各種功能、UI上有優(yōu)化几缭,而且我對gitlab也更加熟悉了河泳。
根據(jù)gitlab官網(wǎng),升級采用Omnibus的自動安裝方式年栓。由于是升級拆挥,只要更新yum的庫并下載最新包即可。
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
這種更新方式相當(dāng)于對源碼做了一層包裝,可以通過更改gitlab.rb文件更新所有的配置纸兔,而不是直接去修改gitlab.yml, 數(shù)據(jù)庫的config.yml等文件惰瓜。如果是通過源碼編譯安裝/更新,相信會更加復(fù)雜汉矿。
安裝的過程比較順利崎坊,但肯定不是一下子搞定的,下面一步步的記錄錯誤的原因和解決方案洲拇,希望對別人有幫助奈揍。
PostgreSql的庫結(jié)構(gòu)問題
自動安裝提示完成,但數(shù)據(jù)庫不可用赋续,用status查看是處于down狀態(tài)男翰,看了日志(/var/log/gitlab/postgresql/current),如下報錯
The data directory was initialized by PostgreSQL version 9.2.18, which is not compatible with this version 9.6.2.
大意是新版數(shù)據(jù)庫結(jié)構(gòu)不兼容老的蚕捉。這個問題解決還算順利奏篙,網(wǎng)上不少資料,主要參考的是這篇
http://blog.10ninox.com/2015/01/psql-database-incompatible/
處理后不再顯示該錯誤迫淹,而出現(xiàn)以下的錯誤秘通。
PostgreSql的IPv6問題
還是同樣的日志,顯示如下錯誤
Address family not supported by protocol
一般這種都是IPv6導(dǎo)致敛熬,查了些資料肺稀,解決辦法是在/var/opt/gitlab/postgresql/data中修改postgresql.conf文件
將listen_addresses改為127.0.0.1
完全調(diào)試完成后,發(fā)現(xiàn)該值被改為了空字符串应民,說明也沒問題话原。
PostgreSql的Migrate問題
解決上述問題后,需要執(zhí)行數(shù)據(jù)庫的migrate命令诲锹,如下
gitlab-rake db:migrate
這時會出現(xiàn)一個pg_trgm問題繁仁,大意是沒有創(chuàng)建extension記錄。參考這里官方的文檔
https://docs.gitlab.com/ce/install/installation.html
不過注意創(chuàng)建extends時归园,數(shù)據(jù)庫不是template1黄虱,而是gitlabhq_production
重新整理這個步驟如下
step 1: sudo -u gitlab-psql psql -d template1 -c "CREATE USER git CREATEDB;"
step 2: sudo -u gitlab-psql psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"(可能不需要)
step 3: sudo -u gitlab-psql psql -d gitlabhq_production -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
之后再次運(yùn)行migrate腳本,問題解決庸诱。
unicorn的啟動權(quán)限問題
unicorn線程是用git用戶啟動的捻浦,必須遞歸的給
/opt/gitlab/embedded/service/gitlab-rails/
目錄的訪問權(quán)限,否則啟動會失敗桥爽,或者界面出不來(具體現(xiàn)象我記不清了)朱灿。
gitlab-shell的check問題
在做系統(tǒng)檢查(gitlab-rake gitlab:check)時,會出現(xiàn)一個找不到.gitlab_shell_secret的問題钠四,貌似不影響啟動和使用盗扒,解決也不叫簡單,調(diào)用以下命令
ln -s /var/opt/gitlab/gitlab-shell/gitlab_shell_secret ../gitlab-rails/.gitlab_shell_secret
增加軟連接即可。
reconfigure不生效問題
這是這次升級最大的坑侣灶,更新gitlab.rb文件后习霹,根據(jù)各種文檔描述都是要執(zhí)行reconfigure命令,我也執(zhí)行了很多次炫隶。但是就是感覺各種配置沒有改淋叶,命令行運(yùn)行也不報錯。偶然發(fā)現(xiàn)這個命令是有日志的伪阶,目錄是
/var/log/gitlab/reconfigure
查看日志才發(fā)現(xiàn)所有的嘗試都沒有執(zhí)行煞檩,又是一個地址族不支持。查了資料讓改源代碼的localhost或者看/etc/hosts的配置栅贴,打開后者一看斟湃,乖乖,居然把ipv4的localhost注釋掉了檐薯,只留了ipv6的凝赛,打開注釋,一切正常坛缕。
至此基礎(chǔ)配置完成墓猎,我們需要修改git庫位置,能夠reconfigure就一切順利了赚楚,所有功能基本恢復(fù)毙沾。
總結(jié)
這次升級時間緊,原庫升級幾乎沒給自己留后路宠页,在問題的解決中發(fā)現(xiàn)gitlab本身的管理還是非常完善的左胞,特別是這種Omnibus的自動安裝方式。發(fā)現(xiàn)的這些錯誤網(wǎng)上基本都有解決方案举户,沒有的一般也要從自己的環(huán)境上找原因烤宙。
gitlab比較重要的目錄/文件
主配置文件:/etc/gitlab/gitlab.rb
程序安裝目錄:/opt/gitlab
程序配置和運(yùn)行目錄:/var/opt/gitlab
程序日志目錄:/var/log/gitlab
gitlab重要的命令
升級數(shù)據(jù)庫:gitlab-rake db:migrate
顯示配置環(huán)境:gitlab-rake gitlab:env:info
檢查gitlab運(yùn)行環(huán)境:gitlab-rake gitlab:check
gitlab安裝(慎用,會清數(shù)據(jù)庫):gitlab-rake gitlab:setup
gitlab啟動/停止/重啟:gitlab-ctl start/stop/restart
新的ui還是不錯的俭嘁,管理頁面將信息都放到了上面躺枕,如下圖所示:
有些問題可能我也沒有碰到,可以一塊研究兄淫,有問題給我留言哈屯远!
【補(bǔ)充:2018-1-16】訪問出現(xiàn)forbidden的現(xiàn)象蔓姚,換用4G網(wǎng)絡(luò)問題解決捕虽。參考以下文章,可以解決問題:
http://www.cnblogs.com/jianxuanbing/p/7661306.html
【補(bǔ)充:2018-02-16】9.2.2升級到10.4.3
- 使用本文開頭的命令用yum升級坡脐;中途升級數(shù)據(jù)庫可能有問題泄私,提示里又一個skip的命令,可以執(zhí)行,然后升級安裝包成功晌端;
- 要使用
gitlab-ctl reconfigure
命令做一次重新更新捅暴。之前用status看,有幾個命令沒有服務(wù)沒有起來咧纠,unicorn還有目錄權(quán)限的問題(這里chmod了一下蓬痒,估計要是先做reconfigure就不需要了) -
restart服務(wù)后,所有服務(wù)都起來了,界面也變成了新的,這次更新比較順利囊嘉,開心拴疤!