Windows版Redmineをサービスに登録してブート時に起動させる(宿題あり)

[Ruby][備忘録][Windows][Redmine]Windows版Redmineをサービスに登録してブート時に起動させる(宿題あり)

あらすじ

タイトル通り、サービスに登録してよろしく起動してほしい。mongrelを使えばサービスから起動できる……らしいが、名前は聞いたことあるけど、mongrelが何かは知らない……。

Ruby + C(拡張ライブラリ) で書かれた httpd。

http://d.hatena.ne.jp/keyword/mongrel

なるほど。

環境

  • Windows XP
  • Ruby 1.9.3
    • Bundler 1.0.21
    • Mongrel 1.2.0.pre2
  • Redmine 1.4

手順

前提

  • Redmineの環境構築が完了している事
    • bundle exec ruby script/server -e production で起動できる事

インストールから起動まで

  • まずはRedmineデフォルトのGemfileにmongrelを追加し、bundle install
gem "mongrel"

$ bundle install
Fetching source index for http://rubygems.org/
Using rake (0.9.2.2)
Using activesupport (2.3.14)
Using rack (1.1.3)
Using actionpack (2.3.14)
Using actionmailer (2.3.14)
Using activerecord (2.3.14)
Using activeresource (2.3.14)
Installing cgi_multipart_eof_fix (2.5.0)
Using coderay (1.0.6)
Installing gem_plugin (0.2.3)
Using i18n (0.4.2)
Installing mongrel (1.1.5)
Using mysql2 (0.2.18)
Using net-ldap (0.3.1)
Using pg (0.13.2)
Using rails (2.3.14)
Using ruby-openid (2.1.8)
Using sqlite3 (1.3.6)
Using tzinfo (0.3.33)
Using bundler (1.0.21)
Your bundle is complete! It was installed into ./vendor/bundle
  • bundle exec ruby …で起動…しようとするとエラー
msvcrt-ruby18.dll が見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールし直すとこの問題は解決される場合があります。
$ gem list
...
json (1.5.4)
...

$ gem uninstall json
Successfully uninstalled json-1.5.4
  • で、再起動……だめだった!!
  • http://simultechnology.blendmix.jp/blog/archives/1248:title によると、さっきいれてたmongrel 1.1.5 はRuby 1.8のモジュールを使っているという事らしい
  • 新しいバージョン(今はプレリリース版)を入れることで解決できる。Gemfileを修正しbundle install
-gem "mongrel"
+gem "mongrel", ">= 1.2.0.pre2"

$ bundle install
...
Installing mongrel (1.2.0.pre2)
  • 起動! 起動した! WEBrickで起動していたのがMongrelに変わった!
=> Booting WEBrick

=> Booting Mongrel

に変わった!

サービスに登録

  • mongrel_serviceをGemfileに登録
gem "mongrel_service"
  • インストールできたらmongrel_railsというコマンドが追加される(今回はbundlerでインストールしたので、Redmineのrootまで行ってbundle exec mongrel_rails)
[C:\redmine-1.4.0]
$ be mongrel_rails
Usage: mongrel_rails <command> [options]
Available commands are:

 - restart
 - start
 - stop
 - service::install
 - service::remove
  • Serviceに追加
オプション 意味
-N サービス名
-c Redmineのルート
-p 起動ポート
-e Railsの起動モード
$ be mongrel_rails service::install -N "Redmine" -c C:\redmine-1.4.0 -p 3000 -e production
** Copying native mongrel_service executable...
Redmine service created.
  • 登録に成功したのでWin+rからservices.mscを呼び出して確認……
  • あった!
    • スタートアップの種類が手動になっていたので自動に変更
  • マシン再起動!

起動しない……だと……?

サービスから起動できなかった

  • Redmineフォルダ内のlogにmongrel.logがあるので見てみると
C:\RUBY_ROOT\bin\ruby.exe: No such file or directory -- C:/RUBY_ROOT/bin/mongrel_rails (LoadError)

うーん。RUBY_ROOTのbin下にmongrel_railsを探しに行ってる? ……でも今回はbundlerで入れたからREDMINE_ROOT/vendor/bundle下を見に行ってほしいんだけどなぁ。

ちょっと試しにbundlerからmongrel, mongrel_serviceをはずして、gemで直接Mongrelをインストールしてみる。

$ gem install mongrel --pre
$ gem install mongrel_service

これで

  • REDMINE_ROOTのvendor/bundleにMongrelはなくなった
    • つまり、REDMINE_ROOTでbundle exec ruby …したらWEBRickで起動するようになった
  • RUBY_ROOTにmongrelが入った

ということになり、RUBY_ROOTにMongrelがあるので、再起動すればサービスから起動してくれるはず……。

再々起動…起動した!

まとめ

  • 一応、サービスから起動させる事はできた
  • ただし、直接gem installしたものに限る。サービスから起動させるとRUBY_ROOTを見にいってしまうようなのでbundlerで入れるとLoadErrorになってしまう

宿題

mongrel_railsコマンドのオプションとかでbundlerから起動するように変えられないかな?

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/09/07 [Ruby] [Redmine] [SQLite3] [Windows] Redmineのプラグイン作成のための備忘録と、時々SQLite3
  2. 2011/05/01 [Ruby] [Redmine] [Windows] Redmineインストール備忘録(Windows)
  3. 2012/10/01 [Ruby] [Bundle] [Windows] bundle execを省略したいのでバッチを作った(Windows版)
  4. 2012/05/28 [Ruby] [イベント] [Jenkins] [Redmine] Jenkins,Redmine使いこなし勉強会に参加しました と、ちょっとプラグイン作ってみた #jen_red
  5. 2012/04/20 [Ruby] [Windows] ZenTestで実行したRSpecの結果をGrowlで通知してくれるようにした
  6. 2012/03/27 [Windows] [Jenkins] [Ruby] simplecovとsimplecov-rcovを使ってJenkinsでカバレッジを確認
  7. 2012/03/20 [Windows] [Jenkins] [Ruby] Windows環境用にrcovをビルドしなおす手順
  8. 2012/02/29 [Ruby] [Rails] [Windows] Rails3レシピブックを読みながらRailsを学ぶ モデル、コントローラ、ビュー、Railsの規約など
  9. 2012/02/28 [Ruby] [Windows] [Rails] Rails3レシピブックを読みながらRailsを学ぶ
  10. 2012/02/20 [Ruby] [Windows] Rubyの実行ファイルを作成するExerbとOcraを試してみた
  11. 2013/08/20 [Ruby] [Rails] [Redmine] Rails3のログ出力にANSIカラーコードを使用しない設定
  12. 2013/08/09 [Ruby] [Redmine] [MySql] [StartUp] WindowsにRedmine2.3をインストールする手順と、プラグイン作成用メモ
  13. 2011/12/15 [Ruby] [Solaris] [Redmine] RedmineとApacheを連携させるPassengerをインストールできなかった
  14. 2011/12/05 [Ruby] [Redmine] RedmineでプラグインインストールしたらTemplateErrorが出た
  15. 2011/09/30 [Java] [Windows] [Ruby] .msgファイルをパースして中から添付ファイルを抜き出す