Windows Web Server 2008 構築と運用のポイント
PHP on IISのクイックステップ
今回はWindows Web Server 2008でサーバー構築を行う際のポイントについて解説していきます。まずは前回までのまとめとして、IISでPHPアプリケーションをインストールしていく際のステップをまとめました。
1)PHP(非スレッドセーフ版)をダウンロードし解凍、サーバー内に配置してphp.iniを作成
2)IISの設定を行う
(IISにCGI機能を追加、phpとIISをFastCGIでモジュールマッピング、既定のドキュメントにindex.phpを追加、64bit OSの場合はアプリケーションプールの32bitアプリケーションの有効化)
3)権限付与は「IUSR」に対して付与する
IIS経由のファイルアクセス時の権限は「IUSR」というユーザー(正確にはユーザーではありませんが)へのアクセス権の設定が評価されます。
4)動かしたいPHPアプリケーションはダウンロード・解凍後に「コピー > 貼り付け」を行う(「切り取り > 貼り付け」は移動元の権限設定状態を保持したまま移動先に配置されてしまうことがあるため、お勧めできません)
コピーして貼り付けると、貼り付け先の上位フォルダの権限設定を引き継ぐことができるのでアクセス権の設定が楽になります。解凍先が直接アプリケーションの配置先の場合は問題ありません。
5)必要に応じてPHPのextensionを利用する
多くのextensionはphp.iniでアンコメント(行頭の「;」を外す)して、アプリケーションプールをリサイクルするだけで利用可能になります。特にmbstring関連は変更するケースが多いでしょう。
6)困ったらWebで検索する
私が参加したインストールマニアックスの影響で、Web上にIISでOSSを動かすためのドキュメントがあふれています。これを利用しない手はありません。100種類以上あるアプリケーションのインストールドキュメントを見つけて有効活用しましょう(いくつかのドキュメントではセキュリティー的に甘い方法を記述していることもあるため、その点は注意が必要です)。
7)Webで検索しても解決しない場合はバージョンの低いアプリケーションで同様のエラーが出るか確認してみる、または異なるブラウザを使ってみる
筆者の経験上、PHPのバージョンよりもアプリケーションそのもののバージョンを下げたほうが動くことが多いです。また、IEでしか動かないもの、FireFoxでしか動かないものなど多種多様ですので、異なるブラウザで確認してみることも必要です。
また、動作確認を終えて実稼働に入る際にはphp.iniでdisplay_errors=Offとするのを忘れないでください。
Windowsでパーミッションを444にせよ!?
多くのオープンソースWebアプリケーションでは、インストール中やインストール後の画面で、そのアプリケーションの設定ファイルのパーミッションを読み取り専用にするようにセキュリティー警告が出ます。
中にはパーミッションを変更しないと動作しないアプリケーションもあります。その警告はほとんどが「パーミッションを444に変更せよ」などのようにUnix形式のパーミッション表記での指定になっていてWindowsではどうすればいいのか戸惑ってしまうかもしれません。
ここではWindows上でのオープンソースWebアプリケーションにあったセキュリティー設定方法を説明します。
権限を読み取り専用(444)に変更する場合は、該当ファイルで「右クリック > プロパティ」を表示し、属性の所にある「読み取り専用」にチェックを入れ「適用 > OK」で対応可能です。この設定により権限設定対象のファイルは書き込みモードで開くことができなくなるため、Webアプリケーションのセキュリティーチェックをパスできます。
プロパティのセキュリティータブから詳細な設定ができそうに見ますが、読み取り専用かどうかのチェックはまずはこの「右クリック > プロパティ」の個所の「読み取り専用」が評価されるようですので、必ず設定する必要があります。