(2011-02-14) ImageMagick の Windows 向けバイナリをサイレントモードでインストールすると、Image::Magick モジュールをインストールできないことを確認しました。ということで、Windows 向けのバイナリをインストールする際は、/VERYSILENT や /SILENT オプションを指定しないでください。申し訳ないです。
以前、CentOS 環境で yum を使って構築する方法を解説しました。最近、Windows Server 2008 R2 の環境で利用されるケースが増えてきているので、整理しておこうと思います。
ActivePerl ではなく Strawberry Perl を使ってみる
Windows 環境の Perl といえば、ActivePerl。シックス・アパートの検証環境でも ActivePerl を使っています。しかし、以下のような制約事項があることも事実であり、環境の構築に苦労することも事実です。
- ビルドによっては不具合のあるモジュールが同梱されている。
- 開発元の ActiveState が提供する ppm リポジトリに無いものがあって、別のリポジトリを登録しないといけない。
- ImageMagick のバイナリに含まれる Perl モジュールは、ActivePerl のパージョンを限定する。
- 安定している過去のビルドを利用するためには、有償のパッケージを購入していないといけない。
これらの制約を回避する方法は、Strawberry Perl を利用することです。Strawberry Perl の最大のメリットは、コマンドプロンプト上で CPAN シェルを経由してモジュールのコンパイルができる点にあるからです。
これから、Strawberry Perl を利用してサーバーを構築する方法をご紹介していきます。既に、Windows Server 2008 R2 の環境に IIS7.5 が有効になっており、DB も用意されていることを前提とします。
最初にインストールするのは、以下のソフトウェアです。これらは、ImageMagick の各機能の実行に必要なソフトウェアです。
次にインストールするのは、ImageMagick です。ホームページから Windows 用のバイナリーをダウンロードします。今回は、ImageMagick-6.6.7-6-Q16-windows-dll.exe にしました。インストールする際は、開発用のライブラリやヘッダーをインストールしてください。ImageMagick のインストールを以下のように、コマンドプロンプトから実行すると、サイレントモードでインストールされます。サイレントモードとは、ユーザーインタラクションが無くインストールできるモードです。
ImageMagick-6.6.7-6-Q16-windows-dll.exe /VERYSILENT /DIR="C:¥ImageMagick"ImageMagick-6.6.7-6-Q16-windows-dll.exe /DIR="C:¥ImageMagick"
次にインストールするのが、Strawberry Perl です。リリースページにいくと、5.12 系と 5.10 系のビルドがありますが、Movable Type は 5.12 系をサポートしていないので、5.10 系でいきます。今回は、strawberry-perl-5.10.1.4.msi にしました。Strawberry Perl も ImageMagick と同様に、コマンドプロンプトからサイレントモードでインストールできます。
msiexec /i strawberry-perl-5.10.1.4.msi /q
あとは、Movable Type 5 ドキュメントの Movable Type の設置 (Windows) を参考に、以下の作業を実施するだけです。
- Movable Type を展開したディレクトリに対して、IIS_IUSRS がアクセス可能になるように権限を設定する。
- IIS マネージャーで、Movable Type を展開したディレクトリを、仮想ディレクトリとして設定する。
- 拡張子 .cgi に対して Strawberry Perl で処理するように、スクリプト マップを設定する。
Strawberry Perl は、デフォルトで DBD::mysql、DBD::ODBC、DBD::SQLite をインストールします。ですので、このままでも OK なのですが、いくつかのオプションモジュールがインストールされていません。これらのオプションモジュールを、CPAN シェル経由でインストールする方法について次回に解説します。
そうそう、忘れてはいけないのですが、mt.cgi を実行する前に、サーバーを再起動することを忘れないでください。