WS2008 R2と最新OS Azureでのサーバー構築
PHP on Azureの概要と構築クイックステップ
サーバー構築にはWindows Server 2008も良いのですが、クラウドOSのWindows Azure(以下Azure)という選択肢も出てきました(余談ですが、マイクロソフト本社訪問時は皆さん「あじゅー」のような発音をされていました。ご参考になれば……)。
そこで、最後にPHPアプリケーションをAzureに乗せるための概要を皆さんに知ってもらうために、ステップを簡単に説明します。なお、前提としてAzureアカウント作成のためにはWindows Live IDが必要になります。Live IDを持っていない方は事前に取得してください。
1)Azureアカウントの作成とトークンの取得
アカウント登録ページ(http://www.microsoft.com/azure/register.mspx)からアカウントを作成して、マイクロソフトよりメールでトークンが送付されてくるまで待つ。
※トークンが送られてくるまで時間がかかる場合があるようです。
2)AzureのHosted Servicesを作成する
登録後http://www.microsoft.com/azure/signin.mspxより「Windows Azure」にサインインし、「New Project」より「Hosted Services」を選択し情報を入力しプロジェクトを作成する。作成が完了するとApplication IDが表示されるのでメモしておく。
3)Microsoft Visual Web Developer 2008 Express Edition(http://www.microsoft.com/japan/msdn/vstudio/express/)をダウンロード・インストールする
※Azure用のパッケージングを行うだけなので本バージョンで十分です。
4)Azureパッケージ作成用にツールをインストールする(http://www.microsoft.com/downloads/details.aspx?FamilyID=11b451c4-7a7b-4537-a769-e1d157bad8c6&displaylang=en)
PHP on Azure構築クイックステップ ~VisualStudioの起動から
5)Visual Studioを起動し「ファイル > 新しいプロジェクト > Visual Basic > Blank Cloud Service」を選びプロジェクト名とソリューション名を入れプロジェクトを作成する。
6)「ファイル > 新しいプロジェクト > Visual Basic/Cloud Service/Roles > Cgi Web Role」を選択し、ソリューションで「ソリューションに追加」を選択し「OK」をクリック。
7)Visutal Studioの右ペインから「Roles右クリック > Add > Web Role Project in solution」で作成したCgi Web Roleを選択し「OK」をクリック
8)プロジェクト内のServiceDefinition.csdefを開き、「Web Role」の属性に「enableNativeCodeExecution="true"」を追加
変更後:
9)既にIISで動かしているphpをフォルダごと作成したCgi Web Roleにドラッグ&ドロップする(本記事ではC:直下からphpフォルダをドラッグ&ドロップしました)
10)ドロップしたphpフォルダ内のphp.iniを選択、プロパティ内の「ビルドアクション」を「コンテンツ」に変更する
※php.iniの内容はAzureにあわせた設定が必要です。php.iniの設定が面倒な方はこの変更のステップを省略してください。Azure内に準備された既定のphp.iniが読み込まれます。
11)Cgi Web RoleプロジェクトのWeb.roleconfigを開き、FastCgiの子要素として以下を追加する
12)Cgi Web RoleプロジェクトのWeb.configを開き、handlersの子要素として以下を追加する
verb="*"
modules="FastCgiModule"
scriptProcessor="%RoleRoot%\php\php-cgi.exe"
resourceType="Unspecified" />
13)作成したPHPアプリケーションをCgi Web Role直下にドラッグ&ドロップする
14)「デバッグ > デバッグ開始」を選択し、起動したブラウザから動作確認をする
15)Visual Studioの右ペインからクライドサービス名を右クリックして「プロパティ > Portal」を選択するとApplication IDが入力できるので、Azureでプロジェクトを作成した際にメモしたApplication IDを入力する
16)Visual Studioの右ペインから「クラウドサービス名を右クリック > 発行」をクリックするとIEが起動し、Live IDの認証画面が表示されるのでLive IDとパスワードを入力しログイン。またアップロードしなければならないパッケージが保存されたフォルダも開くので、次のステップで利用する
17)作成したパッケージをAzureのステージング環境にアップロードする
http://www.microsoft.com/azure/signin.mspxから「Windows Azure」にサインインし、作成したHosted Services を選択して、「Staging」という記述の下の「Deploy」ボタンをクリックしてパッケージを選択の上、適当なラベルを入力し「Deploy」をクリックする
18)それぞれ前のステップで自動的に開かれたフォルダから以下の拡張子のファイルをアップロードする
・App Package → *.cspkg
・Configuration Settings → *.cscfg
19)「Run」をクリックしサービスを起動させる。動作確認用のURLが表示されるので、ブラウザでアクセスし動作確認する。
※アップロード後、しばらくは準備中というステータスで「Run」などは表示されません。待ちましょう
20)Azureのステージング環境上で動作確認後、「Production」と「Staging」の間にあるボタン(swapボタン)をクリックする事でプロダクション環境にパッケージを移行できる。
21)プロダクションへの移行後は、アカウント取得時のドメインでブラウザから実際にアクセスして確認できる
これで「WindowsサーバーでOSSを使おう」のシリーズは終了です。いかがだったでしょうか?
この所、ニュースなどでマイクロソフトのオープンソースに対する積極的な関与が頻繁に見られています。WindowsサーバーでOSSを動かす(特にPHP)というのは、マイクロソフトの中で精力的に対応しているようで今後も期待できそうです。筆者はそんな流れを今後も追っていきたいと考えています。最後までお読みいただきありがとうございました。
【参考文献】
「Windows Server 2008 R2 ホーム」(http://www.microsoft.com/japan/windowsserver2008/r2/default.mspx)(アクセス:2009/07)
「IIS 7.5 updates to custom errors and compression」(http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx)(アクセス:2009/07)
「Improvements to FastCGI in IIS 7.5」(http://blogs.iis.net/ksingla/archive/2009/01/22/improvements-to-fastcgi-in-iis-7-5.aspx)(アクセス:2009/07)