nginx を Windows Azure で使ってみます。
動かすだけなら、Windows Azure ワーカーロール のスタートアップタスクで nginxを実行するだけなので簡単ですからね。

1.下記のサイトから    nginx/Windows-x.x.xとなっている Windows 版の nginx をダウンロードし展開します。

nginx: download
http://www.nginx.org/en/download.html
※今回は nginx/Windows-1.1.5 をダウンロードして使用しています。

 

2.Windows Azureのワーカーロールプロジェクトを作成し、ダウンロードしたファイルを追加します。Azure SDK 1.5 から サービス定義ファイル(ServiceDefinition.csdef) で Contents タグが使えますので下記のように記載するだけです。コピー不要なのでラクですね。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="nginx" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WorkerRole name="WorkerRole1" vmsize="ExtraSmall">
	<!-- 省略 -->
    <Contents>
      <Content destination="nginx">
        <SourceDirectory path="C:\temp\nginx-1.1.5" />
      </Content>
    </Contents>
</WorkerRole>
</ServiceDefinition>

上記の例では、パッケージ作成時に「C:\temp\nginx」のファイルが「%ROLEROOT%\approot\nginx」にコピーされます。

 

3.アクセス権の都合でデフォルトのままだとlogやtempフォルダを作成できません。そのためnginxフォルダの中に事前に下記フォルダを作成しておきます。また、ファイルがないとデプロイ時にフォルダが作成されないので、作成したフォルダの中に適当なファイルを入れておきます(例:dummy.txt)。

logs
temp
	client_body_temp
	fastcgi_temp
	proxy_temp

 

4.nginx.exeを実行する下記スタートアップタスクを秀丸などで作成します。作成後、プロジェクトに追加し、出力ディレクトリにコピーを「常にコピーする」に変更します(今回は「startup.cmd」というファイル名で作成)。

@echo off

netsh advfirewall firewall add rule name="nginx" dir=in action=allow program="%~dp0nginx\nginx.exe" enable=yes
cd "%~dp0nginx"
"%~dp0nginx\nginx.exe"

 

5.上記で作成したstartup.cmdをbackgroundで実行するように、ServiceDefinition.csdefに設定を追加します。

 <WorkerRole name="WorkerRole1" vmsize="Small">
・・・・省略・・・・
   <Startup>
     <Task commandLine="startup.cmd" taskType="background" executionContext="elevated">
     </Task>
   </Startup>
 </WorkerRole>

 

6.ワーカーロールのプロパティを開いて、エンドポイント(Internal, tcp, 80)を追加します。ポート番号は、nginx.confに記載されていますので合わせてください。

20111009-001

 

これで完了です。デプロイして問題なければ下記のようなページが表示されます。

20111009-002

Tagged with:
 

Comments are closed.