Archive
PowでRedmineを動かす その2
概要
PowでRedmineを動かすための手順です。
ポイント
手順のアウトラインは次のようになります。
- rbenv + ruby-build のインストール
- node.jsのインストール
- Powのインストール
- Redmineのためのrbenv/bundler/Powの設定
- Rackの設定
- Redmineプロジェクトの設定
RedmineはRuby/Railsのバージョンに激しく依存するため、Rubyのグローバルな空間にRedmineをインストールすることはおすすめできません。rbenvとbundlerを使ってプライベートな空間に閉じ込めるのが無難です。
rbenv + ruby-build のインストール
homebrew で簡単にインストールできます。説明は割愛します。
node.jsとPowのインストール
node.jsとPowをインストールしなければいけませんが、説明は割愛します。
ググれば情報がいっぱい出てきますので、PowでSinatraが動くあたりまで設定してください。
Redmineのダウンロード
RedmineのオフィシャルサイトからRedmineのバージョン1.3をダウンロードします。 http://www.redmine.org/
~/.pow/redmine に、Redmineのプロジェクトディレクトリへのシンボリックリンクを作成します。
これで http://redmine.dev/ にアクセスすることでRedmineが起動します。
が、まだ設定ができてないのでエラー画面が表示されると思います。
不要なシンボリックリンクを削除
早速設定をしていきたいところですが、その前に一つ雑用を。
プロジェクトルートディレクトリにあるredmineというシンボリックリンクを削除しておきます。 ファイルサーチが循環してtextmateが重くなるみたいでした。
Redmineの動作対象となるRubyのインストール
redmine 1.3 は ruby の1.9系に未対応です。 OS X Lionのデフォルトのrubyは1.8系なのでほっといても動きそうですが、ここは空気を読んでrbenvでruby 1.8.7の最新版のインストールしてください。
ruby 1.8.7をインストールするには次のコマンドを実行します
$ rbenv install ruby-1.8.7-p352
インストールができたら、redmineでruby 1.8.7を使うように設定を行います。 Redmineプロジェクトのルートディレクトリへ行き、次のようなファイルを作成します。
{RAILS.root}/.rbenv-version
1.8.7-p352
これでredmineのプロジェクトディレクトリにいるときはruby 1.8.7が使われるようになりました。
依存Gemのインストール
rubyの設定ができたので、次は依存するGemをインストールしていきます。
まずはbundlerをインストールします。
$ gem install bundler
次に依存するGemをGemfileに記述します。 redmine 1.3は次のようなGemに依存しているようです。
/var/www/redmine/Gemfile
source "http://rubygems.org" gem "rails", "2.3.14" gem "rake", "0.8.3" gem "rack", "1.1.0" gem "i18n", "0.4.2" gem "rubytree", "0.5.2", :require => "tree" gem "RedCloth", "~>4.2.3", :require => "redcloth" # for CodeRay gem "mysql2", '< 0.3' gem "coderay", "~>0.9.7"
mysqlアダプタはmysql2を使います。最新のバージョンをインストールすると以下のようなエラーが出てしまうので、0.2系を使うように指定してください。
Could not find gem 'activerecord-mysql2-adapter (>= 0) ruby' in any of the gem sources listed in your Gemfile.
Gemfileの作成が終わったらbundle installします。グローバル空間でなく必ずプライベート空間にインストールしてください。
$ bundle install --path vendor/bundle
Rackの設定
RedmineをRackアプリとして動かすためにconfig.ruが必要です。 プロジェクトのルートディレクトリに次のようなファイルを作成します。
{Rails.root}/config.ru
require "./config/environment" run ActionController::Dispatcher.new
Redmineプロジェクトの設定
ここまででRedmineをRackアプリとして動作させる準備が整いました。
次にRedmineプロジェクトの設定をしていきます。
とりあえずなにかrakeタスクを動かしてみてください。プロジェクトに必要な設定がされていなければエラーが出力されます。このエラーを全てつぶしていきます。
config/environment.rb にセッションの設定を入れろといわれたので入れます。
config/environment.rb
config.action_controller.session = { :key => "_redmine_session", :secret => "0c85e551137cc747789ddff6b6f66a5ce319219bf5cadad3e44d9eed914d7cf2f3759d4de41174d109c9b213db1e41fa48666615ecaf3a7e800ca18fc041cdee" }
次に、データベースの設定を行います。 MAMPのmysqlを利用するので次のように設定しました。developmentモードのDBを作るのは面倒なのでproductionモードと同じにしておきました。
config/database.yml
production: adapter: mysql2 database: redmine host: localhost username: root password: root encoding: utf8 socket: /Applications/MAMP/tmp/mysql/mysql.sock development: adapter: mysql2 database: redmine host: localhost username: root password: root encoding: utf8 socket: /Applications/MAMP/tmp/mysql/mysql.sock
次に、データベースのマイグレーションを行います。
$ bundle exec rake db:migrate RAILS_ENV=production $ bundle exec rake db:migrate_plugins RAILS_ENV=production
Rails2.3でBundlerを利用する設定
* 2011-12-21 21:30に追記
Rails2.3のプロジェクトでBundlerを利用する場合、次の設定が必要です。 設定しなければ vendor/bundle 以下にインストールしたgemが読み込まれません。
config/boot.rb の Rails.boot! と書かれているのすぐ上の行に以下のコードを追加します。
config/boot.rb
class Rails::Boot
def run
load_initializer
Rails::Initializer.class_eval do
def load_gems
@bundler_loaded ||= Bundler.require :default, Rails.env
end
end
Rails::Initializer.run(:set_load_path)
end
end
config/preinitializer.rb というファイルを作成し、次のコードを記述します。
config/preinitializer.rb
begin
require "rubygems"
require "bundler"
rescue LoadError
raise "Could not load the bundler gem. Install it with `gem install bundler`."
end
if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
"Run `gem install bundler` to upgrade."
end
begin
# Set up load paths for all bundled gems
ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
Bundler.setup
rescue Bundler::GemNotFound
raise RuntimeError, "Bundler couldn't find some gems." +
"Did you run `bundle install`?"
end
ここを参照しました。 Using Bundler with Rails 2.3
PowでrbenvでインストールしたBundlerを使う設定
* 2011-12-22 13:30に追記
Powでrbenv環境下のGemを使う場合、Powにrbenvのパスを教えてあげないといけないようでした。プロジェクトのルートに.powenvファイルを作成することでPowの環境変数を設定できます。次のようなファイルを作成してください。
{Rails.root}/.powenv
export PATH="/Users/cohakim/.rbenv/shims:/Users/cohakim/.rbenv/bin:$PATH"
Powの再起動
tmp/restart.txt を更新することでPowを再起動できます。
touch tmp/restart.txt
Redmineにアクセスする
以上で動作のための設定は終わりです。
http://redmine.dev/ にアクセスします。Redmineのホームが表示されていれば成功です。
Powをproductionモードで起動する
動いたのはいいのですが、なんだか非常にもっさりです・・・。どうやらdevelopmentモードで動いているようです。Powでアプリをproductionモードで起動するには.powenvに次の行を追加します。
{Rails.root}/.powenv
export RAILS_ENV=production
Powを再起動してアクセスすると・・・。
サックサクやで!!!
終わりに
以上でPowでRedmineを動かす その2 終わりです。
rbenv + Pow + bundler + rails 2.3 を組み合わせると、設定しなければならないことが沢山でてくるみたいです。
Powで動かすことに意味があるのかと問われると言葉に詰まるところではあるのですが、とりあえずやってみましたということでお願いします。
エラーがでてどうしようもない場合
まずRailsのログを確認してみましょう。 Ralisが動作しているなら logs/production.log にログが出力されているはずです。 ログ出力がない場合、Rails導入以前でつまずいている可能性があります。 また、ruckup コマンドでコンソールからサーバを起動することでエラーログを確認することもできます。
$ bundle exec rackup config.ru
エラーがでてからのゴタゴタ
* エラーの回避方法がわかりました。追記したので、「Rails2.3でBundlerを利用する設定」をみてください。
僕の環境では依存しているGem(rack 1.1.0)が見つかりませんとでました。 vendor/gems 以下に依存Gemをおかないとダメみたいです。以下のコマンドでrailsとgemをフリーズしました。
$ bundle exec rake rails:freeze:gems $ bundle exec rake gems:unpack
しかしこれもダメでした。railsはフリーズされたのですが、gemはunpackされませんでした。 しかたないので、vendor/bundle 以下のgemファイルを vendor/gems にコピーしました。
まだ起動に失敗しますが、エラーメッセージは変わりました。
config.gem: Unpacked gem coderay-0.9.8 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this.
specファイルをrefreshしろといわれたので、いわれるままコマンドを実行しました。
bundle exec rake gems:refresh_specs
この後Powを再起動して、http://redmine.dev/ にアクセス・・・。 動きました!!!
PowでRedmineを動かす その1
概要
プロジェクトにITSが欲しいなあと思いまして、Redmineの導入を検討することになりました。 Redmineを導入する方法を調べたところ、次のような方法が見つかりました。以下お手軽な順から。
- Redmineホスティングサービスを利用する
- VPSなどリモートのサーバに導入する(Redmine専用が望ましい)
- ローカル環境にオールインワンパッケージを利用して導入する
- ローカル環境に自分で導入する
結論から言うと、Redmine専用のサーバを用意することを強くおすすめします。 以下の要件はITSを運用する際の一般的な要件だと思いますが、すべて満たそうと思った場合、専用のサーバを用意するしかありません。
- Redmineを複数のプロジェクトで利用する
- Redmineのバージョンアップやプラグインのインストールなどをしたい
- いつでもすぐに使える状態であってほしい
- プロジェクトデータを長期間保存したい
- Redmineの運用/管理に手間をあまり手間をかけたくない
rbenv+bundlerを使ってアプリ毎にrubyの実行環境を作ることもできますが、環境構築に手間がかかり、数年後同じ構成を維持できてるかというとそれも非常に怪しい気がします。
以下検討時の雑感。
Redmineホスティングサービスを利用する
- お手軽に導入/安定運用
- 利用はお手軽だが手続きがめんどくさそう
- 全体的に価格が高い(月8000円くらいから)
- プラグインは利用できないっぽい?
VPSなどリモートのサーバに導入する(Redmine専用が望ましい)
- OSのインストールやRedmineを動かすための環境構築に手間がかかる
- 一度環境を作ってしまえば長期間安定運用できる
- 他のRubyプロジェクトと同居させようとすると環境構築に余計に手間がかかる
ローカル環境にオールインワンのインストールパッケージを利用して導入する
- 無料で利用できインストールもお手軽
- apache + mysql + svn + redmine を動作させるためメモリを1Gくらい持っていかれる
- プラグインの導入やRedmineのアップデートに手間がかかる
- ローカルのマシンが起動してるときにしか使えない
ローカル環境に自分で導入する
- プライベートな環境を作らないといけないのでインストールが非常にめんどくさい
- オールインワンパッケージを使うよりはリソース的に省エネ
- プラグインのインストールやRedmineのアップデートが簡単
- ローカルのマシンが起動してるときにしか使えない
今回のプロジェクトではどうしたか
今回のプロジェクトでは、BitNami というオールインワンパッケージを使いました。付属のインストーラを使ってインストールすると、apache + mysql + svn + redmine が一発で入ります。
Windows版もあるので、使ってないPCにインストールすればRedmineサーバを簡単にたてることができます。
PowでRedmineはどうしたの?
すいません。書いててまとまらなくなってきました。
BitNamiに不満が出てきたのでPowでRedmineを動かそうと思ったのでした。 開発マシンのリソースを大量に持ってかれるのがつれいというのと、Redmineのプラグインいれるのにすごい手間がかかるというのと、単純にPowでRedmineが動いたら面白いんじゃね?と思いました。
仕切り直して次の記事で導入手順書きます><





