Azure の Worker Role で Ruby を使う(HWC版)

以前、AzureでHWCを使ってPerlを実行してみましたので、今回はRubyを実行してみます。Perlのときと同じくWindows Azure Hosted Web Core Worker Roleを使いますので、ほとんど同じですけど。

Windows Azure Hosted Web Core Worker Role
http://code.msdn.microsoft.com/hwcworker
 

1.HWCWorker_source.zipをダウンロードし、展開すると HWCWorkerフォルダの中に HWCWorker.sln があるので、Visual Studio などで開きます。SDK1.3がインストールされている環境だと、Visual studio 変換ウィザードが起動するはずなので、指示に従って変換します。
 

2.HWCWorker_Workerのプロパティを変更して、インスタンス数を1にしておきます。
 

3.Rubyをダウンロードして展開し、プロジェクトに追加します。今回はRuby-mswin32 のバージョン1.9.2-p136(32bit)をダウンロードし、展開した中にあるbinフォルダをHWCWorker_Workerプロジェクトのrubyフォルダを作成して追加しています。

Ruby-mswin32 (ja) – Release
http://www.garbagecollect.jp/ruby/mswin32/ja/download/release.html
 

4.追加したファイルのプロパティにある出力ディレクトリの値を「常にコピーする」に変更します。
 

5.設定ファイルでRubyを使うように変更します。
HWCWorker_Workerプロジェクトの直下にある applicationHost.config に下記を追記します。

<isapiCgiRestriction>
	-- 省略 --
	<add path='{approot}rubybinruby.exe "%s" %s' allowed="true" />
</isapiCgiRestriction>

 
「.rb」を ruby.exeが処理するように設定ファイル Websites フォルダにあるWeb.configの handlers に設定を追加します。また、既定のドキュメントの設定に index.rb を追加します。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <defaultDocument>
      <files>
        <clear />
        <add value="index.rb" />
        <add value="index.html" />
      </files>
    </defaultDocument>
    <handlers>
      <add name="Ruby" path="*.rb" verb="*" modules="CgiModule" scriptProcessor='%RoleRoot%approotrubybinruby.exe "%s" %s' resourceType="Unspecified" />
    </handlers>
  </system.webServer>
</configuration>

 
6.index.rbを追
下記のような感じでindex.rbを適当な場所に作成して、ビルドアクションを「コンテンツ」にします。

print "Content-type: text/html; charset=utf-8nn"
print "テストn"

 
7.デバッグを開始して準備が完了したら、ブラウザを起動して http://localhost:81/index.rb にアクセスすれば確認できます(※自動でブラウザは起動しません。ポート番号は違う場合もあります)。

結果

Comments are closed.

Post Navigation