GitLabはその昔、手動でRailsやらMySQLやらRedisやらUnicornやらの環境を整えてソースから手動でインストールしなければなりませんでした。しかし最近はパッケージ化されapt-get
で簡単にインストールできるようになっております。これをOmnibus版と言うわけですが、開発チームもこのOmnibus版に移行することを強く薦めておりまして。この度、様々な事情もありソースからインストールした社内のGitLabをOmnibusGitLabへ移行したのでその手順を残しておきます。
今回は新しく用意したOmnibus GitLabに古いGitLabを完全移行させるという流れで実施しました。サーバーはUbuntu Server 14.04です。
- Omnibus GitLabをインストール
- Omnibus GitLabの設定
- Non-omnibus GitLabのバックアップ
- DBダンプをMySQLからPostgreSQLに変換
- バックアップデータをOmnibus GitLabにRestore
Omnibus GitLabのインストール
Omnibus版のインストールは恐ろしく簡単になってます。
公式の手順に沿って進めればすぐにインストール完了です。
https://about.gitlab.com/downloads/#ubuntu1404
Omnibus GitLabの設定
Omnibus版では設定を以下のファイルで行うようになっています。
gitlab.yamlやinitializerに記述していたものが一つのファイルにまとめられています。
/etc/gitlab/gitlab.rb |
タイムゾーンの設定
gitlab_rails['time_zone'] = 'Asia/Tokyo' |
メールの設定
GitLabから送られるメールの設定です。
gitlab_rails['gitlab_email_from'] = '[email protected]' |
SMTP 設定
メールの環境に合わせて設定します。
Gmailなども設定できますが社内のSMTPサーバーを設定。
設定が終わったら反映
設定を変更したら反映させます。
sudo gitlab-ctl reconfigure |
Non-omnibus GitLabのバックアップ
こちらは旧環境で行います。
sudo service gitlab stop |
DBダンプをMySQLからPostgreSQLに変換
Omnibus版はメインデータベースがPostgreSQLに変更されているので、MySQL > PostgreSQLの変換が必要になります。これも公式の手順通りに進めればOK。
この時点で移行用のバックアップデータが完成したことになります。
バックアップデータの移行
作成したバックアップデータをOmnibus GitLabへ移行します。
例によって公式の手順通りでOK。
バックアップデータを所定の位置に配置 |
チェックでエラー発生
チェックかけたらリポジトリへのアクセス権がないと怒られたので修正します。
sudo chmod -R ug+rwX,o-rwx /var/opt/gitlab/git-data/repositories |
find
コマンドはsudo
してやらないと怒られるので注意。
おわりに
移行後にアクセスすると一回だけ502エラーが出てちょっと焦りましたが、reconfigure
とrestart
したら直ったのでとりあえずOKです。バックアップ、リストア周りが優秀で予想以上に移行が簡単だったので自分の作るシステムもこうありたいと思いました。