- WEBサイトを作成します。
- Webサイトの作成-ウィザード1 – 名前とリージョンとデータベースにMySQLを選択
- Webサイトの作成-ウィザード2 – データベースの確認
- Webサイトの作成-ウィザード3 – リポジトリの選択
- Bitbucketとの接続を許可します
- リポジトリを選択します
今回はbitbucketのリポジトリを利用しました。
チェックボタンをクリックするとWebサイトの作成が始まります。
- 新しいWebサイトが追加されました
- デプロイを確認
fuelblogを選択し[デプロイ]タブを開くと、gitからcloneされたことを確認できます。
デプロイはされていますが、まだデータベースの設定やmigrationはされていないので動きません。
- データベースの設定
データベースのホスト名、データベース名、接続ユーザの情報は[構成]タブの[接続文字列]で確認できます。
<?php
// fuel/app/config/production/db.php
/**
* The production database settings. These get merged with the global settings.
*/
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=ja-cdbr-azure-east-a.cloudapp.net;dbname=fuelphpAC9JPSbeW',
'username' => 'b075b5148a0559',
'password' => 'f4f0edcd',
),
),
);
編集した db.php はコミットしておきます。
- production環境に設定する
[構成]タブの[アプリケーション設定]に FUEL_ENV を追加します。
- デプロイスクリプトの準備
デプロイ時に、Composer updateとマイグレーションを実行するように設定します。
deploymentscriptの作成するために、Winsows Azure SDKを http://www.windowsazure.com/ja-jp/downloads/ からPHP / Mac のインストール を選択してダウンロードし、インストールします。
以下のコマンドでスクリプトを生成します。
$ azure site deploymentscript --php
info: Executing command site deploymentscript
info: Generating deployment script for Web Site
info: Generated deployment script files
info: site deploymentscript command OK
以下の2つのファイルができます
- .deployment
- deploy.sh
deploy.shの最後にComporserとマイグレーションの処理を記述します。
...
echo Running Composer.
cd $DEPLOYMENT_TARGET
"D:\Program Files (x86)\PHP\v5.4\php.exe" composer.phar update --prefer-dist -v
echo Running FuelPHP migration.
"D:\Program Files (x86)\PHP\v5.4\php.exe" oil refine migrate
cd $DEPLOYMENT_SOURCE
echo "Finished successfully."
oilの実行は、FUEL_ENV=productionを指定しなくても、[アプリケーション設定]が適用されます。
git add してpushします。
$ git add .deployment deploy.sh
$ git commit -m "deployment script"
$ git push origin master
新たにデプロイが実行されます。
[Running deployment command…]のログを表示してみるとComposer updateとマイグレーションが正しく実行されたことが確認できます。
Command: bash deploy.sh
Handling Basic Web Site deployment.
KuduSync.NET from: 'D:\home\site\repository' to: 'D:\home\site\wwwroot'
Copying file: 'fuel\app\config\development\db.php'
Running Composer.
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing psr/log (dev-master a78d650)
Downloading: connection... Downloading: 0% Downloading: 15% Downloading: 30% Downloading: 45% Downloading: 60% Downloading: 75% Downloading: 100%
Extracting archive
- Installing monolog/monolog (1.5.0)
Downloading: connection... Downloading: 100%
Extracting archive
- Installing fuelphp/upload (2.0.1)
Downloading: connection... Downloading: 100%
Extracting archive
monolog/monolog suggests installing mlehner/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
Writing lock file
Generating autoload files
Running FuelPHP migration.
Performed migrations for app:default:
001_create_posts
Finished successfully.
- 動作確認
動いた。
- publicフォルダをルートディレクトリに設定する
上記の動作確認は、http://fuelblog.azurewebsites.net/public/posts にアクセスしていたので、publicディレクトリをルートディレクトリとして指定し直します。
プロジェクト直下に、以下のWeb.configを作成して、pushするとpublicなしでアクセスできるようになります。
<?xml version="1.0" encoding="utf-8"?>
<!-- Web.config -->
<!--
For more information on how to configure your ASP.NET application, please visit
[url=http://go.microsoft.com/fwlink/?LinkId=169433]http://go.microsoft.com/fwlink/?LinkId=169433[/url]
-->
<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>
<appSettings>
<add key="EMULATED" value="true" />
</appSettings>
<system.webServer>
<httpErrors errorMode="Detailed"/>
<defaultDocument>
<files>
<clear />
<add value="index.php" />
<add value="index.htm" />
<add value="index.html" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Redir Subdir" stopProcessing="false">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{URL}" pattern="^/public" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/public/{R:1}" appendQueryString="true" />
</rule>
<rule name="RegleFichierPublic" stopProcessing="true">
<match url="^\/public\/(.*)$" ignoreCase="false" />
<conditions>
<add input="{URL}" pattern="^/public" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/public/index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
補足
SDKのアンインストール手順メモ。
This package will install the Windows Azure SDK into /usr/local/bin/azure/
To use the command line interface after installation, type `azure` in the Terminal.
To uninstall, type `azure-uninstall` in the Terminal.
.gitmodulesは、Windowsのパス区切り文字に置き換えなくても動く。
submodule updateが失敗する(かなり頻発)が、そのときは何回か再試行または同期しなおすと正常実行される。
FuelPHP関連のsubmoduleは、FuelPHP自体をアップデートするとき以外はsubmoduleを外しておいた方が良さそう。
git submoduleの解除方法
参考
PHP and MySQL on Windows Azure: Getting Started and Deploying with Git – site point
Azure Web site で FuelPHP を動かして migration までやってみた
無料で使えるWindows Azure Webサイトの新モードを試す
[IIS][Azure]Configure FuelPHP – FuelPHP Forums
Getting started on Windows Azure with PHP on Mac OS. (youtube)