gitlab升級遷移---源碼包安裝轉成rpm包安裝(三)


      距離上次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.4.4p96 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、停止服務:
service gitlab stop

2、升級ruby:
#mkdir /tmp/ruby && cd /tmp/ruby
#curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.gz
#tar xvf ruby-2.5.3.tar.gz && cd ruby-2.5.3
#./configure --prefix=/usr/local/ruby ----disable-install-rdoc && make && make install

3、升級bundler:
#gem install bundler --no-document --version '< 2'

4、檢測gitlab環境基礎:
$bundle exec rake gitlab:env:info RAILS_ENV=production

注:此時會提示rake-12.3.1沒有安裝,按報錯信息進行安裝,bundle install(耗時會比較久)
此步安裝rbnacl-libsodium 1.0.11會報錯 解決辦法:https://gitlab.com/Fenlly/gitlab-ce/commit/2af2140ceeb2e8dff7c15a23195f5050a11a6ab4
可能會報:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

解決辦法:
#gem install rdoc-data

5、升級go:
yum -y update golang

6、升級node:
#npm install -g n
#n stable
#node -v --查看node版本

7、安裝yarn:
#wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo
#yum -y install yarn
#yarn -v

8、升級git:
#cd /usr/local/src
#curl --remote-name --location --progress https://www.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz
#tar xvf git-2.21.0.tar.gz -C /tmp/git
#cd /tmp/git/git-2.21.0 && ./configure --prefix=/usr/local/git
#make && make install
#git --version  --查看升級后的git版本


9、更新gitlab遠程分支:
#su - git
$git fetch --all --prune  --這一步會很慢,可以給服務器掛上代理在嘗試(掛代理的方法可看我的另一篇博客:https://www.cnblogs.com/liangyou666/p/11231743.html)

下面則是轉為rpm包安裝的操作記錄:

1、內網服務器上安裝gitlab 11.11.5版本:

[root@dev ~]#yum install -y curl policycoreutils-python openssh-server
[root@dev ~]#systemctl enable sshd [root@dev ~]#systemctl start sshd [root@dev ~]#firewall
-cmd --permanent --add-service=http [root@dev ~]#systemctl reload firewalld [root@dev ~]#yum install postfix [root@dev ~]#systemctl enable postfix [root@dev ~]#systemctl start postfix [root@dev ~]#curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash [root@dev ~]#cd /usr/local/src [root@dev src]#wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm
--國內清華大學源站下載地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ [root@dev src]#yum -y install gitlab-ce-11.11.5-ce.0.el7.x86_64.rpm
[root@dev src]#ps -ef |grep gitlab --可以看到gitlab已經啟動
[root@dev 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 help
gitlabhq_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.204
Password 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  --升級前先進行備份

#gitlab-ctl stop unicorn

#gitlab-ctl stop sidekiq

#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

 

10、配置郵箱:QQ exmail (騰訊企業郵箱)其他郵箱可去官方文檔里查看 Docs: https://docs.gitlab.com/omnibus/settings/smtp.html

#vim /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
gitlab_rails['smtp_domain'] = "exmail.qq.com"

 配置完成后執行:

  #gitalb-ctl reconfigure     --使配置生效

  測試配置是否成功:

執行 gitlab-rails console進入控制台。 然后在控制台提示符后輸入下面的命令 發送一封測試郵件:Notify.test_email('收件人郵箱', '郵件標題', '郵件正文').deliver_now

測試成功,添加gitlab用戶就可以收到郵件了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM