LAMP開発者のためのWindows Azure講座

第7回 Azure上でのMySQLの起動[その4]

この記事を読むのに必要な時間:およそ 5 分

Visual Web Developer 2010 Expressによる開発

今回は,アップロードしたVHDをマウントし,MySQLが起動できることを確認してみます。VHDをマウントするには,WebRoll.dll(やWorkerRole.dll)内にマウントするための処理を記述しておく必要があります。WebRole.dllは,C#ソースコードのWebRole.csをビルドして作成します。

ただ,これまで利用してきたWindows Azure PDT(Windows Azure Tools for Eclispeを組み込んだEclipse PDT)では,WebRole.csの作成やビルドができません。また,Windows Azure PDTには,プロジェクト作成時にAzureドライブを利用するための設定画面があるのですが,そこで設定を行なっても,エラーが出てうまく動きません。

そこで,今回は,第2回でインストールしたVisual Web Developer 2010 Express(VWD)を利用して,WebRole.csの作成と,Azureへデプロイするパッケージの作成を行います。基本的な操作やファイル構成はWindows Azure PDTと大きく変わりありません。また,VWDでPHPを利用する際に必要となるファイルもこれまで利用していたものを流用することができます。

IISでPHPを動作させる

まず,PHPをIIS上で動作させるように設定します。VWDを起動し,ファイルメニューから,新規プロジェクトを作成します。プロジェクトには,⁠Visual C#」「Cloud」から「Windows Azure Project」を選択します図1)⁠

図1 Visual Web Developer 2010 Expressで,Windows Azure Projectを作成

図1 Visual Web Developer 2010 Expressで,Windows Azure Projectを作成

すると,図2のような画面が表示されるので,⁠ASP.NET Web Role」を選択し,OKを押します。

図2 Windows Azure Project(ASP.NET Web Role)を作成

図2 Windows Azure Project(ASP.NET Web Role)を作成

しばらくするとVWDの画面が表示されますので,画面右側のソリューションエクスプローラーにPHP関連フォルダを追加します。具体的には,以下のように,第5回で作成した,phpフォルダをWebRole1下に配置します(Windows Explorerで各フォルダをコピーし,ソリューションエクスプローラー上でペーストします)⁠

また,今回はMySQLの動作確認のために,phpMyAdminよりも軽量な管理ツールであるAdminerを利用してみます。AdminerのWebサイトからファイルをダウンロードし,ファイル名をindex.phpに変更して,admnierフォルダ下に保存し,プロジェクトに追加します。

図3 プロジェクトにphpとAdminerフォルダを追加

図3 プロジェクトにphpとAdminerフォルダを追加

フォルダをコピーしたら,php.iniのプロパティから,ビルドアクションをコンテンツに変更します。

また,PHPをCGIとして動作させるための設定ファイルとなるWeb.config,Web.roleconfig,および,index.phpを追加します。これらもWindows Azure PDTが自動生成したものが流用できます。phpフォルダを追加したのと同じように,WebRole1にコピー&ペーストし,図4のように配置します。

図4 Web.config,Web.roleconfig,index.phpを追加

図4 Web.config,Web.roleconfig,index.phpを追加

それぞれのファイルは以下のような内容です。index.phpについては,MySQLへのログインで必要になるIPアドレスを知るために,サーバ変数LOCAL_ADDRを出力するように設定しておきます。

リスト1 Web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <fastCgi>
      <application fullPath="%RoleRoot%\approot\php\php-cgi.exe" />
    </fastCgi>
  </system.webServer>
</configuration>

リスト2 Web.roleconfig

<?xml version="1.0"?>
<configuration>
  <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,
                 Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral,
                 PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
  <system.webServer>

    <!-- DO NOT REMOVE: PHP FastCGI Module Handler -->
    <handlers>
      <clear />
      <add name="PHP via FastCGI"
           path="*.php"
           verb="*"
           modules="FastCgiModule"
           scriptProcessor="%RoleRoot%\approot\php\php-cgi.exe"
           resourceType="Unspecified" />
      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
    </handlers>

    <!-- Example WebRole IIS 7 Configation -->
    <defaultDocument>
      <files>
        <clear />
        <add value="index.php" />
      </files>
    </defaultDocument>

  </system.webServer>
</configuration>

リスト3 index.php

<html>
<body>
<p>LOCAL_ADDR: <?php echo $_SERVER["LOCAL_ADDR"]; ?></p>
</body>
</html>

IISでPHPを動作させるための設定は以上です。

著者プロフィール

齋藤公二(さいとうこうじ)

インサイト合同会社

『月刊Computerwold』『CIO Magazine』(IDGジャパン)の記者,編集者などを経て,2011年11月インサイト合同会社設立。エンタープライズITを中心とした記事の執筆,編集のほか,OSSを利用した企業Webサイト,サービスサイトの制作を担当する。

コメント

コメントの記入