しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Azure Web サイトの Kudu だけを使って baserCMS をインストールしてみた

修羅の街で Windows Azure Web サイトについて語りつくしてきました - しばやん雑記 に参加した時に baserCMS を Windows Azure Web サイトで動かした時にリライト周りで不具合が出るという話を聞きましたので、Kudu だけを使って baserCMS をインストールしてみました。

baserCMS は CakePHP をベースにした福岡発の企業向け CMS らしいです。

baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』

CakePHP で作られているとのことで、Web サイトでも割とあっさり動くはずなので、実際にインストールしていきます。

f:id:shiba-yan:20140313004512p:plain

baserCMSダウンロード | baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』

まずは baserCMS の公式サイトから zip をダウンロードしてきます。そしてダウンロードした zip を Kudu の Debug Console を使って wwwroot 以下にアップロードしておきます。

アップロードが完了したら unzip コマンドを使って wwwroot 以下に zip を展開しておきます。

index.php などのファイルが wwwroot の直下になるように cp や mv コマンドを使って移動も一緒にしておきましょう。ついでに app/webroot の中身を wwwroot 直下にコピーさせます。

f:id:shiba-yan:20140313005338p:plain

既にスクリーンショットでは app/webroot の中身を wwwroot 直下にコピー済みとなっています。

この状態で Web サイトの URL にアクセスすると baserCMS のインストール画面が表示されるので、後は画面の指示に従って MySQL の情報を入れたりするだけですが、このままだと URL が /index.php/news といったようなフォーマットになってしまい不格好です。

これは IIS の場合 baserCMS のスマート URL が有効にならないため発生しているので、手動でスマート URL を有効にしてあげる必要があります。有効にするために /app/Config/install.php に以下の記述を追加します。

Configure::write('App.baseUrl', '');

そして付属の Web.config では上手くリライトが行えないので、以下のようなシンプルなリライトルールに変更しておきました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite baserCMS" stopProcessing="false">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php?url={R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

スマート URL を有効にしてみたので、実際に動作確認をしておきます。ルート以外のページを表示させて、アドレスバーに表示されている URL を確認しましょう。

f:id:shiba-yan:20140313011421p:plain

index.php という表示が消えてスッキリしましたね。これで baserCMS を Windows Azure Web サイト上で、さらにスマート URL を有効にした状態で動作させることが出来ました。

ちなみに baserCMS はウェブマトリクスマン 2 号が Windows Azure Web サイトのギャラリーに乗せるように作業中らしいので、今後は数クリックでインストールできるようになると思います。期待して待ちましょう。

追記

前回は app/webroot の中身を wwwroot に移動させて配置を行いましたが、wwwroot に baserCMS の zip を展開した後に、管理ポータルから仮想アプリケーションのパスを変更するだけで動かすことも出来ました。

f:id:shiba-yan:20140910153651p:plain

仮想アプリケーションのパスはドキュメントルートとほぼ同じなので、導入マニュアルに近い形でのインストールとなります。

スマート URL を有効にした場合には、以下のような内容の Web.config を app/webroot に置いておく必要があります。リライトルールもシンプルになりましたね。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewrite baserCMS" stopProcessing="false">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

多分ですが、この方法が一番インストールが簡単だと思いました。