gitbucket サーバの引っ越し
はじめに
gitbucket を運用していたサーバマシンが不調なので、新サーバマシンへ引っ越しを行う。
その作業手順をここに備忘録として残す。
サーバ環境とファイル構成
旧サーバ
OS: CentOS6
Repos: $HOME/.gitbucket/
Port: 9999
- ユーザ maintainer の $HOME に環境を構築していた.
- WEBサーバにデプロイせず、crontab の
@reboot
タイミングで gitbucket.war を起動し、組み込みサーバで実行していた. - gitbucket のデフォルトポート番号8080は、実験用途に空けておきたいので 9999 を使っていた.
新サーバ
OS: Ubuntu18.04LTS
Repos: $HOME/.gitbucket/
Port: 9999
- クライアント側の設定を変えたくないので、ポート番号は旧サーバと同じにする.
- gitbucket をサービスとして実行する
元サーバのDB内容をバックアップする
- Gitbucket-Webをブラウザ開き、adminでログインする
- 右肩のユーザアイコンメニュー>System adminnistration>左サイドバー>DataExport/import>Export
- ブラウザにてダウンロードして保存する
次の「データ全体を吸い出す」にてDBも含めて取り出せるが、念のための処置である。
移行に失敗しても、このDBバックアップと、cloneしたgitリポジトリがあれば復元できる。
元サーバからデータ全体を吸い出す
# gitbucket の運用を停止する. 完全に止まるまでちょっと待つ.
pkill -f gitbucket.war
sleep 1
# データをtar.gzに固める.
tar -zcf gitbucket.tar.gz ~/.gitbucket
# 新サーバにデータを転送する.
scp -p gitbucket.tar.gz maintainer@newserver:.
新サーバに実行環境を構築する
- 旧サーバをシャットダウンし、新サーバを旧サーバの名前に変える.
- 以下の構築を行い、最後にリブートする.
# open port 9999
# CentOS6: sudo iptables -A INPUT -p tcp -m tcp --dport 9999 -j ACCEPT
# Ubuntu: nothing to do.
# install Java8 or later
sudo apt install openjdk-11-jre-headless
# get gitbucket
wget https://github.com/gitbucket/gitbucket/releases/download/4.31.1/gitbucket.war
mkdir $HOME/install
mv gitbucket.war $HOME/install/
# recover datas to $HOME/.gitbucket
tar -xzvf gitbucket.tar.gz
# make gitbucket service
sudo vim /etc/systemd/system/gitbucket.service
sudo systemctl enable gitbucket
sudo systemctl start gitbucket
- 旧サーバとユーザ名が変わっている場合は、$HOME/.gitbucket/* のオーナーを chown で修正する.
service設定
/etc/systemd/system/gitbucket.service
[Unit]
Description = git bucket
[Service]
User=maintainer
## ExecStart = /usr/bin/printenv
# USER=maintainer
# HOME=/home/maintainer
# LOGNAME=maintainer
# JOURNAL_STREAM=9:294136
# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# INVOCATION_ID=18b629bd82f5412b86ba9698a84edd8c
# LANG=ja_JP.UTF-8
# SHELL=/bin/bash
# PWD=/
#
ExecStart = /usr/bin/java -Xms512m -Xmx512m -jar ${HOME}/install/gitbucket.war --port=9999
Restart = always
Type = simple
## default output to syslog.
# StandardOutput=null
# StandardError=file:/var/log/gitbucket.log
[Install]
WantedBy = multi-user.target
- 旧サーバと同じく、ポート番号9999を使う
- maintainer ユーザで実行する
- メモリ不足な感じなので、下記参考資料に倣って java -Xms512m -Xmx512m で起動する
保守用スクリプト
gitbucket-ctrl.sh
# !/bin/bash
# vim: set filetype=sh tabstop=4 softtabstop=2 shiftwidth=2 expandtab cindent:
case $1 in
status)
echo === in crontab
crontab -l | grep --color gitbucket.war
echo === current process
pgrep -af gitbucket.war
echo === systemctl
systemctl status gitbucket
;;
stop)
sudo systemctl stop gitbucket
;;
restart)
sudo systemctl restart gitbucket
;;
start)
sudo systemctl restart gitbucket
;;
install)
cd $HOME/install
[ -f gitbucket-$2 ] || wget https://github.com/gitbucket/gitbucket/releases/download/$2/gitbucket.war -O gitbucket-$2 || exit 1
ln -f gitbucket-$2 gitbucket.war ;;
*)
echo "usage: gitbucket-ctrl.sh [restart|start|stop|status|install VERSION]"
;;
esac
参考資料
- [CentOSに gitbucket をインストールする] (https://qiita.com/okadabasso/items/c19fb23c384beebcc903)
- [任意のログをlogrotateを使って管理する] (https://qiita.com/Esfahan/items/a8058f1eb593170855a1)
- https://gist.github.com/tmaeda/4723371c3fd913670c52