WindowsでRails (ThinをWindowsサービスとして動かす)

はじめに.
某件でWindows上でRailsアプリをバックグラウンドプロセスで起動させる必要があったので、その実現までの履歴を残しています。
試したOSはWindows7Windows Server 2008 R2 の2種類のみ。
.NET4.0が既にインストールされていることを確認してください。
 
1.Ruby1.9.3 をインストール
http://rubyinstaller.org/downloads/
上記サイトでWindows用のRuby1.9.3インストーラーをダウンロード&実行。
 
Rubyの実行ファイルへの環境変数PATHを設定する」をチェックON

$ ruby -v
$ gem -v

バージョンが表示されていればOK。
 
2.Devkitをインストール
http://rubyinstaller.org/downloads/
「DevKit-tdm-32-***********.exe」をダウンロード
解凍フォルダを作成して解凍(ダウンロードしたEXE実行)
解凍ディレクトリにて以下を実行

$ ruby dk.rb init
$ ruby dk.rb install

 
3.RubyGemsを最新アップデート

$ gem update --system

 
4.Rails、Thinインストール

$ gem install rails -v 3.2.13
$ gem install thin

 
5.Git for Windows をインストール
※5.〜8.はGit関連なので不要であれば9.までジャンプしてください。

http://msysgit.github.io/
上記サイトから「Download」リンククリックし、最新のインストーラーEXEをダウンロード&実行。
インストール途中、以下の画面のみ注意。
「Git Bash」「 Git GUI」をチェックON

 
「Run Git from the Windows Command Prompt」をチェックON

 
6.Git Bash で認証鍵を生成

$ ssh-keygen.exe -t rsa

生成された鍵情報をGitLab(or GitHub)に登録
 
7.hostsファイルにGitLabホストを登録(GitHubの場合は不要)
 
8.GitクローンでRailsアプリを取得

$ git clone git@gitlabhost:railsapp.git

 
9.Railsアプリのセットアップ
Rails.Rootにて
Gemfileに「thin」が記載されていることを確認のうえ、

$ bundle install
$ rake db:migrate

 
10.Rails起動

$ rails s
=> Booting Thin
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

とThinでRailsが起動されていればOK。

以下のコマンドでも起動確認。(Rubyのbinディレクトリにて)

$ ruby.exe thin -e development -p 3000 -c {Rails.Root} start

 
11.RailsWindowsサービスとしてインストール
「ThinServiceManager.zip」を任意ディレクトリに解凍
https://github.com/tokumura/thin_service_manager

「ThinServiceManager.exe」を実行
各項目を設定(Rubyパス、Thinパス、Railsルートパス、Rialsポート」
「インストール」でサービスインストール
「サービスマネージャー」で「Thin_service」があることを確認。
「Thin_service」サービス起動後、netstatでListen確認。
ブラウザで「localhost:[port]」をアクセスできることを確認。
 
余談.
Railsインストールの段階でバージョンを指定しなかったため、最新の4.0.0が入ってしまった。
その影響で bundle install した際に依存したGemが入ってしまい、Railsを正常に起動するまで色々と手間取った。
※4.0.0を削除して必要だった3.2.13を入れた後に苦労した。
 
まず rails -v で消したはずの4.0.0が表示されてしまう。
以下で解決

$ gem uninstall railties

削除候補が複数出たら4.0.0を削除
※railsties とタイプミスしないように。「rails」ではなく「rail」
 
次にrack。thinでrails起動の際に以下のようなエラーが表示。
"you have already activated rack 1.5.2 but your Gemfile requires rack 1.4.5"

$ gem uninstall rack

削除候補が複数出たら1.5.2を削除
 
最後に jquery-rails
ブラウザでアクセスした際、Railsが以下のようなエラーを表示。
"couldn't find file 'jquery-ui'"
これもやはり jquery-rails が新しすぎたためにでた模様。(rails4.0.0を入れたばっかりに)

$ gem uninstall jquery-rails

削除候補が複数出たら3.*.*を削除
 
以上を行ったうえで、Gemfile.lockの内容をクリアして bundle install。
Rails4を入れてしまったことで色々と躓いたが、勉強になった。