読者です 読者をやめる 読者になる 読者になる

しばやん雑記

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

Windows Azure Web サイトで Movable Type 6 を動かしてみた

尊敬する田口さんから以下のようなツイートを受け取ったので、Perl 5.14.x を Web サイトにインストールして Movable Type 6 をインストールしてみました。

これまでの経験から、Perl ではバージョンを推奨環境に合わせておかないと詰むことがわかっていたので、公式ドキュメントをしっかり読んで作業を進めていきました。

必要インストール環境と、ブラウザ動作環境 : Movable Type 6 ドキュメント

Perl のバイナリは前回と同じく Strawberry Perl を使いました。ポータブル版を Web サイトに展開するだけで Movable Type 6 を動かすのに必要なライブラリは揃います。

この後の作業は基本的に公式のドキュメントを読んで行っていけば問題ないです。

Movable Type の設置 (Windows) : Movable Type 6 ドキュメント

公式のドキュメントが思っていた以上に Windows と IIS で動かすケースについて記述があったので、今回は本当にドキュメントそのまま作業を行いました。なので、仮想ディレクトリも以下のようにポータルから設定してあります。

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

app/mt60x ディレクトリに Movable Type 6 の展開が終わったら以下のような Web.config を同じディレクトリに入れておきます。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="CGI"
           path="*.cgi" verb="*"
           modules="CgiModule" scriptProcessor='D:\home\perl\bin\perl.exe "%s" %s'
           resourceType="Unspecified" />
    </handlers>
    <cgi createProcessAsUser="false" />
  </system.webServer>
</configuration>

そして、またまた前回と同じように Site Extension を使って、isapiCgiRestriction にパスを追加します。これで Movable Type が CGI で動作するようになります。

これもドキュメント通りの作業となるのですが、IIS にはデフォルトで json の MIME マッピングが定義されていないので、mt-static ディレクトリの中に以下のような内容の Web.config を入れておきます。

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>
</configuration>

これで /mt 以下にブラウザでアクセスをすると、Movable Type のスタート画面が表示されるのでボタンをクリックしていけばインストールが完了します。

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

途中で DB を選択する画面がありますが、Web サイトでは作成時に ClearDB を一緒に追加できるので、今回はそれを利用しました。テンポラリディレクトリに関してもエラーになりますが、Kudu のトップページに記載があるので問題ありませんね。

と、色々と省略しましたが、無事に Movable Type 6 を Windows Azure Web サイト上で CGI ですが動かすことが出来ました。

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

やはり CGI のままだと管理画面の操作や再構築が非常に遅いので、FastCGI 化も試してみたところ格段にパフォーマンスが改善されました。再構築は 1/10 以下で終わるようになって割と満足のいく結果が得られました。

Movable Type は静的な HTML を吐き出すので、案外 Web サイト上で実用的かもしれませんね。