redmine2.0.1のherokuへの移行を断念するまで
さくらVPSで回していたredmineをherokuに移行させたら安くつくんじゃないかと思い、試してみました。結果問題が発覚して断念しましたので、その経緯をまとめておこうと思います。
db:push
まずherokuにアプリケーションを作成して、postgresqlアドオンを追加します。
# heroku create asanoboy-redmine # heroku addons:add heroku-postgresql:dev Adding heroku-postgresql:dev on asanoboy-redmine... done, v2 (free) Attached as HEROKU_POSTGRESQL_AQUA_URL Database has been created and is available Use `heroku addons:docs heroku-postgresql:dev` to view documentation.
これでHEROKU_POSTGRESQL_AQUA_URLという環境変数にPostgreSQLのURLが設定されました、heroku configで中身を確認可能です。これをpg:promoteします。
heroku pg:promote HEROKU_POSTGRESQL_AQUA_URL
次にさくらVPSのmysql上にあるデータをherokuのDBにコピーしますが、Ruby1.9.2のtapsを使わないと、heroku db:push したときに以下のエラーが出てうまくいきません。
Taps Server Error: PGError: ERROR: time zone displacement out of range:
以下がdb:pushまで
rvm use 1.9.2 gem install taps sqlite3 mysql heroku db:push mysql://[username]:[password]@localhost/db_redmine --app asanoboy-redmine
アップロードの確認のため、アプリ名の再入力を求められるので、入力すればアップロードがスタートします。
users: 100% |==========================================| Time: 00:00:00 versions: 100% |==========================================| Time: 00:00:00 watchers: 100% |==========================================| Time: 00:00:00 wiki_content_: 100% |==========================================| Time: 00:00:00 wiki_contents: 100% |==========================================| Time: 00:00:00 wiki_pages: 100% |==========================================| Time: 00:00:00 wiki_redirect: 100% |==========================================| Time: 00:00:00 wikis: 100% |==========================================| Time: 00:00:00 workflows: 100% |==========================================| Time: 00:00:00 Resetting sequences #
ここまで終了。
redmineのデプロイ
githubから落としてきたredmineではGemfile.lockが.gitignoreに含まれているので、外しておきます。
またGemfile内にsqlite3の記述をコメントアウトしておきます。 herokuではインストールできません。
- Gemfile
# group :sqlite do # gem "sqlite3" # end
Gemfile.lockを新しくしておきます。
# bundle install
次にconfig/enbironment.rbのexit 1をコメントアウトします。これは以下のソースを参考にしました。これしないとheroku側に怒られて、デプロイ後アプリがクラッシュします。
http://stackoverflow.com/questions/11444170/redmine-deploy-on-heroku-cedar
準備が出来たのでgit pushします。
# git add . # git commit -m "hoge" # git push heroku master:master # heroku run rake assets:precompile
-----> Preparing app for Rails asset pipeline
辺りで何かエラーをはいてうまくいかない場合は、以下の記事を参考にprecompileの設定を追加して再度pushしてください。
http://codenote.net/heroku/1050.html
- config/application.rb
config.assets.initialize_on_precompile = false
これでredmineがherokuで動き始めます。
が、アクセスしようとするとInternal Errorでredmineがうまく見れません。
ログを見るとsecret_token.rbがどうたら、で怒られます。
断念した理由
herokuではローカルディレクトリへのファイル書き込み権限はアプリケーション側にはありません。以下はredmineの.gitignoreですが、
https://github.com/edavis10/redmine/blob/master/.gitignore
secret_token.rb、session_store.rbなどはredmineが書き出すファイルで、herokuに持っていくなら予め別環境で作ってデプロイしないといけません。
redmineの中身まで掘り下げるのはコストは割に合わないと思い、断念しました。
この辺りのherokuとredmineの相性が改善される日まで、さくらVPSでいいやということになりました。それでも十分安いですからね。