AzureでPHPって動くんですか?

2011年5月23日(月)
田口 一博小木 ナツキ

FastCGIを利用してPHPを実行

[小木] プロジェクト作成、PHPダウンロード、PHP設定。全て終わりました。さあ、次は何をしましょうか!
 

[田口] 頼もしいですね。では、続いてPHPをFastCGIで実行する設定と、「.php」で終わるURLのときにPHPプログラムとして処理されるようにハンドラマッピングを設定してください。

[小木] FastCGIとハンドラマッピングの設定ですね。やってみます!
 
 

FastCGI の設定

PHPをFastCGIとして実行するように設定を行います。Webロール構成ファイルWeb.roleconfigのfastCgiに php-cgi.exeを追加します。

1<?xml version="1.0"?>
2<configuration>
3  <system.webServer>
4    <fastCgi>
5      <application fullPath="%RoleRoot%\approot\php\php-cgi.exe" />
6    </fastCgi>
7  </system.webServer>
8</configuration>

ハンドラマッピングの設定

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

01<?xml version="1.0"?>
02<configuration>
03  <system.web>
04    <compilation debug="true" targetFramework="4.0" />
05  </system.web>
06 
07  <system.webServer>
08    <modules runAllManagedModulesForAllRequests="true"/>
09    <handlers>
10      <add name="PHP Handler"
11        verb="*"
12        path="*.php"
13        scriptProcessor="%RoleRoot%\approot\php\php-cgi.exe"
14        modules="FastCgiModule"
15        resourceType="Unspecified" />
16      </handlers>
17 
18      <defaultDocument>
19        <files>
20          <clear/>
21          <add value="index.php"/>
22        </files>
23 
24        </defaultDocument>
25 
26    </system.webServer>
27</configuration>

[小木] FastCGIとハンドラマッピングの設定が終わりました~。
 
 

Full IIS から HWCに変更

[田口] 最後にWeb ロールはデフォルトだとFull IIS と言われる通常のIISで動くのですが、今回は設定が簡単なIIS Webエンジンのコンポーネントを利用した HWC(ホスト可能なWebコア)を使うことにしましょう。

[小木] また難しそうなことを・・・
 
  

[田口] いやFull IIS から HWC に変更は簡単で、ServiceDefinition.csdef にあるの部分を削除するだけですよ。
  

[小木] おお、なんだ簡単に変更できるんですね。ServiceDefinition.csdefを修正してを削除しました!
 

01<?xml  version="1.0" encoding="utf-8"?>
02<ServiceDefinition  name="WindowsAzureProject2"  xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
03  <WebRole name="WebCgiRole1"  enableNativeCodeExecution="true">
04    <Endpoints>
05      <InputEndpoint  name="Endpoint1" protocol="http" port="80" />
06    </Endpoints>
07    <Imports>
08      <Import  moduleName="Diagnostics" />
09    </Imports>
10  </WebRole>
11</ServiceDefinition>

FastCGIを利用してPHPを実行

[田口] よくできました。これでPHPプログラムが動くようになりましたね。PHPの動作確認でよく使われるphpinfoを使って、PHPが動くか確認してみてください。問題なければ、環境設定情報が表示されます。

[小木] 了解です!じゃあ早速PHPプログラム作って実行してみます。
 
 

PHPプログラムの追加

[CGI Webロール]プロジェクトを右クリックして、[追加]-[新しい項目]を選択します。表示された [新しい項目の追加] ダイアログの左側(インストールされたテンプレート)で [Visual C#] を選択し、真ん中(項目)で [テキストファイル] を選択します。名前にindex.phpと入力して、[追加]ボタンをクリックします(画面16)。

画面16:プロジェクトにindex.phpを追加(クリックで拡大)

作成したindex.php に下記のコードを記述します。

1<?php phpinfo() ?>

PHPプログラムの実行

[小木] 準備完了しましたので、デバッグ実行開始します。ブラウザで確認っと・・・、PHP環境情報表示されました!(画面17)

画面17:実行画面(index.php)

[田口] これでPHPのアプリケーションを動かすことができますね。今日はこの辺にしましょう。お疲れさま。次回は、プログラムを本番環境で動かしてみましょう。
 

[小木] お疲れさまでした。次回から大変そうですね~。まあ…とりあえず、お茶飲みましょっか。
 

【参考文献】

PHP on IIS

PHP on Windows Azure ガイドライン

PHP公式サイト

<最終アクセス:2011.05>

スカイコード株式会社

主にマイクロソフトの技術を中心としたプログラマ兼システム管理者兼コンサルタント兼雑務係として従事。Microsoft Azureで少しでもラクに楽しく生きていこうと企む毎日。基本怠け者。

株式会社タクシーサイト

タクシーサイト開発担当。業務システムの開発に4年間従事。PHP、Object Pascal、C#などでプログラムの基礎の基礎を学び、その後他業種へ転職。ブランク後現在の会社に入社し、クラウドを一から勉強中。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています