Heroku に redmine 1.3 を設置して、トライアル感覚で動かす

Rails アプリケーションのホスティングサービス Heroku に Redmine を設置する。

無料プランでは 5MB の Postgresql しか使えないが、試験運用や少人数で使う分にはお手軽でよさそう。

トライアル感覚で使ってみよう。

* Heroku の仕様変更などで記事通りでは一部対応できなくなる可能性があります。

* redmine からフォークした chiliproject というのもあるのでちょっと試してみました。こちらもどうぞ。

というか、もっと簡単なのはfluxflexという PaaS ではワンクリックでセットアップできるので、

以下の手順がめどいひとはこっちの方がオススメです。

Redmine準備

svn export  redmine-1.3
cd redmine-1.3

ほかのバージョンを設置する場合は適宜アドレスを変更してください。以下 1.3 で進めます。

Herokuにgemをインストールする準備

Heroku では .gems(rails2) や Gemfile(rails3) に必要な gem を記述することで、デプロイ時にインストールを行ってくれます。

redmine は rails2 なので {Rails.root}/.gems を作成して以下の内容を記述する。

# .gems
rails --version 2.3.14
rack --version 1.1.1

記述例は 1.3 用。他のバージョンの場合には適宜変更してください。

ここでインストールする redmine のバージョンに対応した gem を確認できます。

ただし古いバージョンを使う場合に、以下の手順通りではうまくいかないかもしれません。

ファイルの保存先を書き換える

Heroku では {Rails.root}/tmp にしかファイルを書き込めないので、保存先を設定する。

config/configuration.yml.sample を config/configuration.yml にコピーして、

default: attachments_storage_path: の項目で /tmp パスを設定します。

また、public/plugin_assets/README というディレクトリとファイルを作ってコミットします。

初期化時に、このファイルを作成しようとして、書き込みエラーがでるので、それを回避するためです。

mkdir public/plugin_assets
touch public/plugin_assets/README

これで初期化時に、heroku 上でこのファイルを生成しようとすると、書き込めないのでエラーになってしまうのを回避します。

ただし、tmp/ は何かの拍子に削除されてしまう可能性があるので、永続化はできなさそうです。

Amazon S3 と連携する方法もあるようですが、1円もかけないというのがコンセプトですのでそれはスキップ(相当お安いようですけどね)

セッション用のシークレットキー設定

rake generate_session_store

rake コマンドで生成できます。

手動で作る(rake を入れてない)場合は、手動で作って以下の内容を記述してください。

# config/initializers/session_store.rb
ActionController::Base.session = {
  :key => '_redmine_session',
  :secret => 'over-30-length-unforeseeable-string'
}

secret にはコレ以外の適当な文字列で書き直してください。

おまけ:ランダムな文字列を生成する。80 のところで長さを調節できます。

cat /dev/urandom | tr -cd '[:alnum:]' | fold -w80 | head -n1

エラーログを確認できるようにする

heroku logs でアプリケーションのログを確認できるにはできますが、500 エラーの内容など表示されないものがあります。

問題があって動かない場合に分かりにくいので、ログに出力できるように追記します。

# config/environments/production.rb
config.logger = Logger.new(STDOUT)
config.logger.level = Logger::INFO

Heroku へデプロイ

git リポジトリとして初期化してファイルを追加しておく。

git init
git add .
git add -f config/initializers/session_store.rb
git commit -m 'initial commit.'

session_store.rb が redmine 1.3 プロジェクトの .gitignore に記述されているので、強制的に追加しています。

.gitignore の該当行を削除して追加してもよいでしょう。

gem install heroku

Heroku に新しくアプリケーションを作り、プッシュして、DB の初期化を行う。

stack は ree-1.8.7 に切り替えます。デフォだとたぶん 1.9.2 になってしまうので。

heroku create --stack bamboo-ree-1.8.7
git push heroku master
heroku rake db:migrate

動作確認

heroku open

エラーが出る場合は heroku logs などで確認する。

admin:admin でログインしてみよう!

アドオン

無料アドオンを使ってもうすこし便利にしてみる。

アドオンを有効にするためにはクレジットカードの登録が必要です。

Logging

リアルアイムログがとれるように logging アドオンをアップグレード

heroku addons:upgrade logging:expanded
heroku logs --tail

うまく動かないと思ったらログで確認して問題を消化する。

*2012/04/04 確認

Logging は廃止されたので、この作業は不要です。デフォルトで tail できました。

Sendgrid

Redmine のメール通知に利用する。無料版は 200通/一日。

heroku addons:add sendgrid:starter
heroku config

config/configuration.yml に heroku config で表示された SENDGRID_USERNAME と SENDGRID_PASSWORD の定数で記述する。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "smtp.sendgrid.net"
      port: 25
      authentication: :plain                                                                                          
      domain: 'heroku.com'
      user_name: 'appXXXXXX@heroku.com' # SENDGRID_USERNAME
      password: 'password' # SENDGRID_PASSWORD

config/configuration.yml も .gitignore に記述されているので、git add -f か、該当行を削除してコミットする。

heroku-sendgrid-stats を導入して、送ったメールの量を確認しやすくしておく。

heroku plugins:install git://github.com/hone/heroku-sendgrid-stats.git
heroku sendgrid 

PG Backups

データベースのバックアップを取る。無料版は2世代まで保持できる。

heroku addons:add pgbackups:basic
heroku pgbackups:capture # バックアップを取る
heroku pgbackups # バックアップの一覧
heroku pgbackups:restore {id} # リストアする({id}は一覧で確認できる)

他にもいろんなアドオンがあるのでいろいろ試してみるといいかも。

ファイルアップロードをどうにかできれば、実運用にも使えちゃうかも?

ただチケット切ったりするだけじゃ Redmine の魅力は激減だけど、雰囲気掴むには良いかもしれませんね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする