更新情報

こんにちは、トランスネットの友村です。

Azure Web サイト上で一足先にリリースされていた、「HttpPlatformHandler」が本年(2015)の2月にIIS8以降の拡張機能として正式にリリースされました。

Announcing the Release of the HttpPlatformHandler Module for IIS 8+

HttpPlatformHandler

HttpPlatformHandlerの役割を公式サイトを参考にまとめてみます。

1. Process management of HTTP Listeners – this could be any process that can listen on a port for HTTP requests,
for example Tomcat, Jetty, Node.exe, Ruby etc.2. Proxy requests to the process it manages.

2. Proxy requests to the process it manages.

HttpPlatformHandler」は指定されたポートで待ち受けるプロセスの管理を行い、HTTPリクエストを様々なプロセスへプロキシをします。
つまり、実行されるアプリケーション側は、IISを意識することなく動作させることが出来ます。

Ruby on Railsを用いた場合のイメージ図
001
それでは実際にRuby on RailsをIIS8+上で動作させてみましょう

HttpPlatformHandlerを使用して、Ruby on Railsを動作させる

以下からは、Windows + IIS + Ruby on Railsの環境が整っていることを前提とします。

1. Railsのプロジェクトを作成する

まずは実際に動作させるRailsのプロジェクトを作成します。
IISではデフォルトのWebコンテンツの置き場所として、「C:\inetpub」というディレクトリを使用しているため、今回はこのディレクトリを使用します。
コマンドプロンプトを開き、「C:\inetpub\wwwroot」へ移動した後に下記のコマンドを実行し、Railsプロジェクトを作成し、テスト用の画面をgenerateしましょう。

> rails new rails_on_iis
> cd rails_on_iis
> rails g scaffold book title:string

 

2. IISマネージャーでディレクトリ以下をアプリケーションへ変更する

まず、IISマネージャーを立ち上げ、先ほど作成したRailsプロジェクトが認識されているかを確認します。
認識されていない場合は、フォルダ構成を見なおしてみてください。
002

次に、このディレクトリのタイプをアプリケーションへ変更します。
「rails_on_iis」の上で右クリックをして、「Convert to Application」を選択します。
003

表示されたダイアログの中身を確認して、「OK」を押下します。
004

最後に、「rails_on_iis」のアイコンが変更されたことを確認して完了です。

005

3. HttpPlatformHandlerの設定を行う

次に「HttpPlatformHandler」の設定を行います。
rails_on_iis」のルートディレクトリに「Web.config」という設定ファイルを設置し、環境に合わせ以下のような設定を行います。

<?xml version=1.0encoding=UTF-8?>
<configuration>
<system.webServer>
<handlers>
<add name=httpplatformhandlerpath=*verb=*
modules=httpPlatformHandler
resourceType=UnspecifiedrequireAccess=Script/>
</handlers>
<httpPlatform stdoutLogEnabled=true
startupTimeLimit=20
processPath=C:\Ruby21\bin\ruby.exe
arguments=C:\inetpub\wwwroot\rails_on_iis\bin\rails server -p %HTTP_PLATFORM_PORT% -b 127.0.0.1 -e production>
</httpPlatform>
</system.webServer>
</configuration>
view rawgistfile1.xml hosted with ❤ by GitHub

設定している項目は以下になります。

  • processPath
    • プロセスが起動される際に実行される、実行可能ファイルのパス
  • arguments
    • 実行可能ファイル、もしくはprocessPathに渡す引数
  • startupTimeLimit
    • アプリケーションが起動するまでの最大時間

その他設定事項に関しては、こちらを参照してください。

以上で、設定は完了です。
ブラウザを起動して、http://localhost/rails_on_iis/booksへアクセスをしてみましょう。
以下のような表示になれば完了です。
006

いかがでしたでしょうか?今回は標準のWEBricを使用しましたが、WEBricはあくまでも導入の簡単さや、
シンプルさを追求したサーバですので、本番環境で運用するには力不足です。

Ruby on Railsでは通常、WebサーバとRailsの間にアプリケーションサーバを置き、本番運用を行います。
下記の表をご覧下さい。

 アプリケーションサーバ  Linux  Windows
 Passenger  ◯  ×
 Unicorn  ◯  ×
 Puma  ◯  ◯  *インストール手順
 Thin  ◯  ◯

このように、いわゆるメジャーで、実績のある「Passenger」「Unicorn」はWindowsでは使用することが出来ません。
ですので、「Puma」「Thin」に絞られてはきますが、なかでも「Puma」は真にconcurrentなサーバとして注目を集めています。
次回はアプリケーションサーバに「Puma」を用いてIIS8+でRuby on Railsを動作させてみましょう。

次回もお楽しみに!