環境
- 移行元: Fedora22上のソースからインストールしたGitLab 8.9.3
- 移行先: CentOS7 (1511)上のGitLab 8.9.3 (omnibus版)
データの移行方法
移行先の環境に公式の手順通りGitLabをインストール後,gitlab-ctl reconfigure
してからgitlab-rake gitlab:backup:restore
で移行元の環境でバックアップしたデータをリストア.
(この辺はあまりちゃんと覚えてない)
現象
GitLabを別サーバに移行後,一部のプロジェクトページを開いた時に500エラーが発生してプロジェクトの情報が見れなくなる.
production.logには以下の様な内容が記録される.
Parameters: {"namespace_id"=>"...", "id"=>"..."}
Completed 500 Internal Server Error in 71ms (ActiveRecord: 5.5ms)
OpenSSL::Cipher::CipherError (bad decrypt):
app/models/project.rb:456:in \`import_url'
app/models/project.rb:486:in \`external_import?'
app/models/project.rb:478:in \`import?'
app/models/project.rb:494:in \`import_in_progress?'
app/controllers/projects_controller.rb:93:in \`show'
lib/gitlab/middleware/go.rb:16:in \`call'
対処法
移行前の環境からdb_key_base
をコピーして持ってくる.
- とりあえず
gitlab-ctl stop
でGitLabを止める. - ソースからの移行の場合は移行元の環境の
/home/git/config/gitlab_secrets.yml
にそれっぽいキーがあるのでその値をメモする.(後述の通りomnibus版の場合は/etc/gitlab/gitlab-secrets.json
にある) - 移行先の環境で
/etc/gitlab/gitlab-secrets.json
を開き,gitlab_ci
のdb_key_base
の値を2.でメモした値に書き換える. - CE版であれば
gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"
を実行して不要になったデータを削除する? (あまりよくわかってない) -
gitlab-ctl start
でGitLabを起動する.
これでちゃんと表示されるようになるはず.