特集:PHP on Windows Azure

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

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

Visual Studioでのクラウド・サービス・プロジェクトの作成

 Visual StudioのIDEを起動し、メニュー・バーから[ファイル]−[新規作成]−[プロジェクト]を選択する。これにより、次の画面の[新しいプロジェクト]ダイアログが表示される。

[新しいプロジェクト]ダイアログによるクラウド・サービス・プロジェクトの作成

 [プロジェクトの種類]のツリー表示から[Visual C#]もしくは[Visual Basic]−[Cloud Service]を選択し、[テンプレート]の一覧から[Cloud Service]を選択した状態で[OK]ボタンをクリックする。これにより、次の画面の[New Cloud Service Project]ダイアログが表示される。

[New Cloud Service Project]ダイアログによるロールの追加

 このダイアログでは、プロジェクトに作成するロール(Role)を追加できる。ロールとは、Windows Azure上で管理されるアプリ/プログラムの種類(=役割)である。そして、そのロールの1つのインスタンス(=実体)が、1つの仮想マシン(VM:Virtual Machine)に該当する(仮想マシンのインスタンスを自由に増やしてスケールできる)。このロールには、現時点で以下の3種類がある。

  • ASP.NET Webロール:主にASP.NET Webアプリ用
  • Workerロール:主に.NETによるバックグランド処理用
  • CGI Webロール:主にPHPなどのFastCGI Weアプリ用

 厳密には、ロールには「Webロール」(=Weアプリ用)と「Workerロール」(=バックグランド処理用)の2種類しかない。「ASP.NET Webロール」と「CGI Webロール」は、生成されるひな型コードがASP.NET向けか、FastCGI向けかという点が異なる。

 今回はPHP開発なので、[New Cloud Service Project]ダイアログの左側の[Roles:]一覧から「CGI Web Role」([Visual Basic]や[Visual C#]というグループはどちらでもよい)を選択した状態で、中央の[>]ボタンをクリックする。これにより、右側の[Cloud Service Solution:]一覧に「CGI Web Role」が1つ追加される。

 最後に[OK]ボタンをクリックすると、次の画面のようにプロジェクトが作成される。

作成されたPHP開発用クラウド・サービスのプロジェクト群([ソリューション エクスプローラ])

 この画面の例では、「CloudService1」というソリューションの中に、クラウド・サービス・プロジェクトの「CloudService1」と、CGI Webロール・プロジェクトの「WebCgiRole1」が作成されている

PHP実行環境のインポート

 Windows Azure上でのPHPアプリの実行にはPHP実行環境が使われるが、Windows Azure内にはそのPHP実行環境は含まれていない。そのため、開発者側でWindows Azure上に配置しなければならない。そこでまず、先ほどダウンロードした「php」フォルダを、WebCgiRole1プロジェクトにインポートする。

 インポートするには、次の画面のように[ソリューション エクスプローラ]の「WebCgiRole1」プロジェクトの上に、「php」フォルダをドラッグ&ドロップするだけだ。

ドラッグ&ドロップによるPHP実行環境のインポート

PHP設定ファイルの有効化と設定編集

 PHP実行環境の動作を決めるのは、設定ファイル「php.ini」の役割だ。このファイルは、「php.ini-development」(開発用)と「php.ini-production」(製品用)の2種類が提供されている。今回はこのうち、「php.ini-production」をコピーして(=[ソリューション エクスプローラ]で該当ファイルを選択して[Ctrl]+[C]キーを押して[Ctrl]+[V]キーを押し)、コピーした方のファイルの名前を「php.ini」に変更すればよい。

 そして、[ソリューション エクスプローラ]で、その「php.ini」ファイルを選択している状態で、[プロパティ]ウィンドウの[ビルド アクション]を「コンテンツ」に変更する。なお、Windows Azure上に配置すべき.EXE/.DLLファイル群はすべて、[ビルド アクション]が「コンテンツ」になっている必要がある。これらのファイルは、通常、インポート時に自動的に「コンテンツ」になっているはずだ。

 あとは、php.iniファイルの内容を状況に合わせて設定すればよい。例えば本稿では、次のコードの太字部分を追記した。

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
……省略……

; cgi.force_redirect is necessary to provide security running PHP as a CGI under
; most web servers.  Left undefined, PHP turns this on by default.  You can
; turn it off here AT YOUR OWN RISK
; **You CAN safely turn this off for IIS, in fact, you MUST.**
; http://php.net/cgi.force-redirect
;cgi.force_redirect = 1
cgi.force_redirect = 0

……省略……
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
;cgi.fix_pathinfo=1
cgi.fix_pathinfo=1

; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
; security tokens of the calling client.  This allows IIS to define the
; security context that the request runs under.  mod_fastcgi under Apache
; does not currently support this feature (03/17/2002)
; Set to 1 if running under IIS.  Default is zero.
; http://php.net/fastcgi.impersonate
;fastcgi.impersonate = 1;
fastcgi.impersonate = 1

……省略……
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo

……省略……
PHP設定ファイル(php.ini)の編集例
「cgi.force_redirect」「cgi.fix_pathinfo」「fastcgi.impersonate」ディレクティブについては後述。「date.timezone」ディレクティブはdate関数群で使われるデフォルトのタイムゾーンを定義している。

 さらに、PHPプログラムを動作させるためには、いくつかの設定が必要となる。


 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 マーケティング」新着記事

生成AIを業務で使わないマーケターはもはや3割以下 御社はどうする?
HubSpot Japanが日本で実施した調査によると、日本のマーケターの8割以上が従来のマーケ...

新富裕層の攻略法 「インカムリッチ」の財布のひもを緩めるマーケティングとは?
パワーカップルの出現などでこれまでとは異なる富裕層が生まれつつあります。今回の無料e...

ブラックフライデーのオンラインショッピング 日本で売り上げが大幅に増加した製品カテゴリーは?
Criteoは、日本国内のブラックフライデーのオンラインショッピングに関する分析結果を発...