特集:PHP on Windows Azure

PHP開発者もクラウド開発を始めよう!

デジタルアドバンテージ 一色 政彦
2009/07/28
Page1 Page2 Page3 Page4

PHPアプリをWindows Azureに乗せるコツ

PHPアプリをWindows Azureに乗せた例

 セッションでは、開発手順の紹介の後、世の中に広く普及しているPukiWikiをWindows Azureに乗せた例がデモされた。次の写真はそのときの様子である。

Windows Azure上で動作するPukiWikiの例

PHPアプリをWindows Azureに乗せるコツ

 亀本氏いわく、「先ほどの開発手順の内容に加え、次の2つのポイントをしっかりと押さえれば、ほとんどのPHPアプリはWindows Azure上に配置可能」である。

(1).htaccessファイルからWeb.configファイルへの移行
(2)php.iniファイル(PHP設定ファイル)のCGI設定

 それぞれについて簡単に説明しよう。

(1).htaccessファイルからWeb.configファイルへの移行

 Apacheで使われる.htaccessファイル(=ディレクトリ単位のWebサーバ構成ファイル)は、Windows Azure上ではIISで使われるWeb.configファイルに置き換える必要がある。特にオープンソースのPHPアプリは、Linux/Apache環境を前提としているため、(そのPHPアプリが.htaccessファイルを使用していれば)移行しようとすると、この移行作業が発生する。

 例えば、.htaccessファイルの「mod_rewriteルール」(例:RewriteRuleディレクティブなど)は、Web.configファイルの「URL書き換えモジュール」(例:<rewrite>/<rules>/<rule>タグなど)に書き換える必要がある。具体的な、置き換え方法は次のサイトをご覧いただきたい。

(2)php.iniファイル(PHP設定ファイル)のCGI設定

 IIS向けのFastCGIを使ってPHPアプリを動かす場合、(基本的に)次の3つの項目の設定が必要になる。

cgi.force_redirect = 0
cgi.fix_pathinfo = 1
fastcgi.impersonate = 1
php.iniファイルで必要な3つのCGI設定
「cgi.force_redirect」ディレクティブは、CGIとしてPHPを実行する際のセキュリティを確保するためのもの。IISでは、セキュリティがすでに確保されているので、このディレクティブは「0」(=オフ)に設定する必要がある。デフォルト値は「1」。
「cgi.fix_pathinfo」ディレクティブは、PATH_INFOの本来の仕様に沿った動作にするためのもの(昔のPHPはPATH_INFOの仕様を誤って解釈しており、PATH_TRANSLATEDの代わりに、SCRIPT_FILENAMEを使用していた)。このディレクティブは「1」(=オン)に設定する必要がある。デフォルト値は「1」。
「fastcgi.impersonate」ディレクティブは、呼び出し元クライアントのセキュリティ・トークンを偽装して、リクエスト処理を行うセキュリティ・コンテキストをIIS側で定義できるようにする。IIS向けのFastCGI環境では、「1」(=オン)に設定する必要がある。デフォルト値は「0」。

 以上がセッションのほぼ全内容だ。Windows Azure自体がまだ正式リリースされておらず、ましてやPHP開発となると実例がほとんどない。しかしながら、今回のPukiWikiの動作などを見ると、ほとんどのPHPアプリはWindows Azure上でも動作しそうである。

 Windows Azureは、インスタンス数の数値を変えるだけで簡単にスケールを調整できるので、「格安な料金でスモール・スタートして、人気のあるサイトになれば、臨機応変にスケールアウトする」という運用形態が可能である。サーバOSのパッチ管理などは、自動的に面倒を見てくれる。この点では、Amazon EC2などではなく、Windows Azureをクラウド・プラットフォームとして使用する理由になるだろう。

 開発環境も無償で使えるものがある。Windows Azure自体も2009年11月中旬までは無償だ。「百聞は一見にしかず」で、まずは一度、どんなものか試してみてはいかがだろうか。End of Article

 

 INDEX
  [特集] PHP on Windows Azure
  PHP開発者もクラウド開発を始めよう!
    1.PHP開発でWindows Azureを利用する理由
    2.PHPによるWindows Azureクラウド・サービスの開発(1)
    3.PHPによるWindows Azureクラウド・サービスの開発(2)
  4.PHPアプリをWindows Azureに乗せるコツ
Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

.NET未来展望台

未来展望台コーナースポンサーからのお知らせ


- PR -
- PR -
ソリューションFLASH

「ITmedia マーケティング」新着記事

米司法省がGoogleに「Chrome」売却要求 広告業界への影響は?
米司法省によるGoogleへのChrome売却要求は、リテールメディアネットワークに恩恵を与え...

トランプ氏勝利で追い風 ところでTwitter買収時のマスク氏の計画はどこへ?――2025年のSNS大予測(X編)
2024年の米大統領選挙は共和党のドナルド・トランプ氏の勝利に終わった。トランプ氏を支...

AI導入の効果は効率化だけじゃない もう一つの大事な視点とは?
生成AIの導入で期待できる効果は効率化だけではありません。マーケティング革新を実現す...