[検証]
WindowsでインターネットWebサーバ

第2回 WindowsでもPHP

5.PukiWikiサーバの導入

デジタルアドバンテージ 打越 浩幸
2008/10/30

 Zend Coreの導入が終わったら、次はPukiWikiシステムをインストールする。以下のページの情報も参考にしていただきたい。

ファイルのダウンロードとインストール先への展開

 原稿執筆時点でのPukiWikiの安定バージョンの最新版はPukiWiki 1.4.7_notbである。PukiWikiの公式ページのダウンロード先からpukiwiki-1.4.7_notb.zipという.ZIPファイル(サイズはわずか389Kbytes)をダウンロードし、エクスプローラ上でダブルクリックして展開する。

 PukiWikiには特にインストーラは付属しておらず、展開したファイル群を適当なインストール先フォルダへコピーしてWebサーバを設定すればすぐに利用できる。例えば「C:\APPS\PukiWiki」というフォルダへインストールするなら、展開した.zipファイルの内容をすべてその中へコピーすればよい。.zipファイルを開くとpukiwiki-1.4.7_notbという名前のフォルダがあるが、このフォルダの内容をC:\APPS\PukiWikiフォルダへコピーしておくこと(C:\APPS\PukiWikiフォルダの中にattachやbackupなどのフォルダが存在するようにコピーすること)。コピー後のファイルの状態は次のようになる。

PukiWikiファイルの展開
PukiWikiには特にインストーラは付属していないので、展開した.ZIPファイルの内容を、インストール先のフォルダへ直接コピーすればよい。
ここではC:\APPS\PukiWikiフォルダへインストールすることにする。このフォルダの中に、attachやbackup、cacheなどのファイルやフォルダが置かれるように展開すること。
インストール・ドキュメント。日本語ファイルであるが、文字コードはEUCなのでメモ帳ではそのまま開けない。Internet Explorerを開き、このファイルをドラッグ&ドロップすると読むことができる。
PukiWikiのREADMEドキュメント。やはり日本語EUCコードのファイルなので、Internet Explorerにドラッグ&ドロップすると読むことができる。

 ファイルを展開したら、次はこのフォルダをIISに仮想ディレクトリとして登録する。デフォルトのWebサイトを選択して右クリックし、ポップアップ・メニューから[仮想ディレクトリの追加]を選択する。

PukiWiki仮想ディレクトリの追加(1)
PukiWikiを展開したフォルダを仮想ディレクトリとして追加する。
デフォルトで作成されているWebサイト。これを右クリックする。
新しい仮想ディレクトリを追加する。

 すると[仮想ディレクトリの追加]ダイアログが表示されるので、PukiWikiを展開、コピーしたフォルダを追加する。

PukiWiki仮想ディレクトリの追加(2)
PukiWikiをインストールしたフォルダを仮想ディレクトリとして追加する。
エイリアス。URLで使用される。
実際のパス。

 以上で仮想フォルダの設定は完了である。次は追加したPukiWikiフォルダのセキュリティ設定を行う。IISの管理ツールで「PukiWiki」仮想ディレクトリを右クリックし、ポップアップ・メニューから[アクセス許可の編集]を選択する(エクスプローラでC:\APPS\PukiWikiのプロパティを表示させても同じ)。すると次のような画面が表示されるので、[編集]ボタンをクリックしてIISに対するアクセス権を追加する。

アクセス権を追加する
IUSRアカウントに対する読み出し許可を追加する。IUSRはWebサーバからのアクセスを表す。
このタブを選択する。
これをクリックして、IUSRアカウントに対するアクセス許可を追加する。

 ここで編集ボタンをクリックすると次のようなアクセス許可の画面が表示されるので、IUSRに対して「読み取りと実行」「フォルダの内容の一覧表示」「読み取り」の3つを許可する。IUSRアカウントはIIS 7.0から導入された新しい組み込みアカウントで、従来のIIS 6までの「IUSR_<コンピュータ名>」に代わるものである。コンピュータ名といった、環境に依存する要素を取り除くことにより、どのコンピュータ上でも同じように使えるというメリットがある。詳細については、以下の情報を参照していただきたい。

アクセス許可の追加
IUSRアカウントに対して読み取りと実行を許可する。
このエントリを追加する(これは追加後の画面)。
これをクリックしてIUSRアカウントを追加する。
この3つの権利を許可する。

 次はPukiWikiの直下にあるフォルダに対して、書き込みの権限を追加する。PukiWikiでは外部のデータベースなどを利用せず、各ページの情報などをこれらのフォルダの中にファイルとしてすべて保存するようになっているからだ。書き込み権限を追加するフォルダはattach、backup、cache、counter、diff、image、skin、trackback、wikiの各フォルダである。

 UNIX/Linux+Apache Webサーバといった環境では、アクセス権は各フォルダに置かれた.htaccessというファイルで制御されるが(そのためPukiWikiの各フォルダには、.htaccessというファイルが用意されている)、Windows OS+IISでは各ファイルやフォルダに対して直接アクセス権を指定することによって、Web経由のアクセス制御を実現している。そのため、必要に応じて各ファイルやフォルダに書き込みの禁止や許可といったアクセス権を付与する必要がある。

 ところで本来ならば、これらのフォルダを全部まとめて選択してアクセス許可の編集を行えばよいのであるが、Web Server 2008では(Windows VistaやWindows Server 2008も同様だが)、なぜか2つ以上のファイルやフォルダを選択していると、セキュリティの変更ができない(複数選択時は、プロパティ・ダイアログに[セキュリティ]タブが表示されない)。ここでは、取りあえず先頭のattachフォルダを編集してみよう。attachフォルダを選択して[アクセス許可の編集]を実行するか、エクスプローラでattachフォルダのプロパティを表示させる。そして[セキュリティ]タブを選択して[編集]ボタンをクリックすると、次のような画面が表示される。

attachフォルダに対する書き込み許可権限の追加
PukiWikiではattachなどのサブフォルダ中にデータを保存する。そのため、これらの」フォルダに対して書き込みを許可しておく必要がある。
IUSRアカウントを選択する。このIUSRは先ほどの親フォルダで追加したもの。
この[変更]をオンにする。
このグレーの部分は、上位フォルダ(C:\APPS\PuwiWikiフォルダ)から継承した権限。適用ボタンをクリックすると、この部分はオンに変わる。
これをクリックすると、の3つと、さらにその下にある[書き込み]チェック・ボックスがオンになる。

 以上の操作をbackupからwikiまでの各フォルダに対して行えばよいが、いちいちGUIで操作するのが面倒なら、コマンド・プロンプト上でicaclsコマンドを使うと簡単である。icaclsはアクセス権を編集するためのコマンドであり、以下の例では、指定したフォルダに「変更(M)」の権限を追加している。詳細はicaclsコマンドのヘルプを参照していただきたい。

※管理者権限のあるコマンド・プロンプトを開き、以下のコマンドを順に実行する

cd C:\APPS\PukiWiki
icacls attach  /grant IUSR:(OI)(CI)(M)
icacls backup  /grant IUSR:(OI)(CI)(M)
icacls cache   /grant IUSR:(OI)(CI)(M)
icacls counter /grant IUSR:(OI)(CI)(M)
icacls diff    /grant IUSR:(OI)(CI)(M)
icacls image   /grant IUSR:(OI)(CI)(M)
icacls skin    /grant IUSR:(OI)(CI)(M)
icacls trackback /grant IUSR:(OI)(CI)(M)
icacls wiki    /grant IUSR:(OI)(CI)(M)

PukiWikiの初期設定ファイルの編集

 PuwiWikiで制作するサイトのタイトルや管理者のメール・アドレスなどの情報は、PukiWikiの設定ファイルに書き込まれているので、次はこれを変更しておく。PuwiKiwiをインストールしたフォルダ中に「pukiwiki.ini.php」というファイルがあるので、これを編集すればよいのだが、残念ながらこのファイルはメモ帳で簡単に開いて編集するというわけにはいかない。まず行末の改行コードがDOS/Windows形式ではなく、UNIX/Linux形式になっているので(行末の文字コードが0x0d−0x0aの組ではなく、0x0aのみとなっている)、メモ帳で開くと、折り返しのない、つながった文字列になってしまうからだ。またタイトルなどに日本語文字を使おうとすると、EUCコードで入力しなければならない(Windowsのメモ帳ではShift JISかUnicodeしか扱えない)。

 そのため、このファイルを編集したければ、EUCコードをサポートしたエディタを用意するか、UNIXなどへ転送してから編集する必要がある。

 今回は応急措置的な方法として、少々手間はかかるが、Web Server 2008上だけで作業できる方法を紹介する。

 まず改行コードの問題であるが、実はPukiWikiはWindows形式の行末コードであっても問題なく動くようなので、まずはメモ帳で編集できる形式に変換してみよう。といってもその方法は非常に簡単である。Windows VistaやWindows Server 2008にはedit.comというコマンド・プロンプト上で動作するスクリーン・エディタが付属しているので、これを使ってファイルを保存し直すだけである(かなり昔のMS-DOSに付いていた、あのeditコマンドがなぜか復活したようだ)。これだけで行末コードがWindows形式になる。ただしeditコマンドは英語モードでしか利用できず(コンソールは自動的に英語モードに切り替わる)、日本語は入力できないが、設定ファイルには英語は含まれていないのでこれでも問題ないだろう。

 まずコマンド・プロンプト上で「copy pukiwiki.ini.php backup-pukiwiki.ini.php」などとしてオリジナル・ファイルのバックアップを取っておき、次に「edit pukiwiki.ini.php」としてエディタを起動する(長いファイル名も利用可能だ)。エディタ画面が起動するので、[Alt]キー、[F]キーと押して、[File]メニューを表示させる(マウスでメニューを選んだりできない)。そして[S]キーを押してファイルをすぐに保存し直す。これでWindows形式の改行コードに変換される。後は[Alt][F][X]キーと順に押してエディタを終了する。後は「notepad pukiwiki.ini.php」とすればメモ帳で編集できる。

 一般的な変更場所(変数名)は次のとおりである。例えば「$page_title='PukiWiki Server';」などのように変更すれば、ページ・タイトルが変更される。

設定内容 設定場所 元の内容
PukiWikiのページ・タイトル。全ページのタイトルに使用される 114行目 $page_title = 'PukiWiki';
サイトのURL。先頭の//を外して設定する。デフォルトは自動設定 117行目 //$script = 'http://example.com/pukiwiki/';
サイト管理者名 123行目 $modifier = 'anonymous';
管理者の連絡先のURLもしくはメール・アドレス 126行目 $modifierlink = 'http://pukiwiki.example.com/';
管理用パスワード(後述) 193行目 $adminpass = '{x-php-md5}!';
pukiwiki.ini.phpの変更場所
これらの変数の値を変更することにより、タイトルなどをカスタマイズできる。ただし文字列中に日本語を入れる場合は、EUCコードで記述すること。各変数の意味については、設定ファイル中のコメントも参照のこと。

 なおこれらの文字列中に日本語を使いたければ、EUCコードで記述する必要がある(英語のみなら文字コードは気にしなくてもよい)。メモ帳を使って日本語を入力した場合は、いったんpukiwiki.ini.php.txtなどというファイル名で保存し、それをInternet Explorerで開く。そして[ファイル]−[名前を付けて保存]で[エンコード]形式として[日本語(EUC)]を選択すればEUCコードに変換できるので、それを元のpukiwiki.ini.phpというファイルに上書きすればよい。

管理者用パスワードの変更

 PukiWiki(Wiki)では、誰でもページの内容などを書き換えることができるが、いくつかのページは「凍結」されていて編集できないようになっている。これを解除するにはパスワードを入力する必要がある。またバックアップなど、いくつかの操作でもパスワードで保護されている。このパスワードはデフォルトでは未設定なので(つまり凍結解除などができない状態になっている)、これを設定しておこう。

 パスワードは平文ではなく、md5などでハッシュ化してpukiwiki.ini.phpファイルに記入することになっている。

 パスワード文字列をms5でエンコードするには、Webブラウザで「http://localhost/PukiWiki/index.php?plugin=md5」を開き、PukiWikiのプラグインを呼び出す(ここまでの設定でPukiWikiはすでに動作しているはずである)。

md5エンコードされたパスワードの計算
パスワードはmd5でエンコードしてから設定ファイルに書き込む。エンコードはPukiWikiのプラグインを呼び出して行う。
ここにパスワード文字列を入力する。
[PHP md5()]を選択する。
これをクリックするとパスワード文字列が算出される。

 [Compute]をクリックするとmd5でエンコードされたパスワード文字列が計算され、次のように表示される。

計算されたパスワード文字列
パスワードはmd5でエンコードされ、元のパスワードが分からないようになっている。
これが計算された文字列。「{x-php-md5}af2……b1c」全体をコピーして、pukiwiki.ini.phpの193行目にある「$adminpass = '………'」の部分に記入すること。

 表示された文字列全体を、先ほどのpukiwiki.ini.php設定ファイルの193行目にある「$adminpass = ……」の部分にコピーし、ファイルを保存しておく。

 以上でPukiWikiの設定は完了である。「http://localhost/PukiWiki」をブラウザで表示させると、PukiWikiのトップ・ページが表示されているだろう。また[凍結解除]などの操作も、パスワードの入力によって可能になることを確認しておいていただきたい。

PukiWikiの起動画面
インストールされたPukiWikiシステムのトップ・ページ。派手なビジュアルもなく、非常にシンプルな画面だが、ユーザーの要望に応じて自由にカスタマイズできる。

 今回はWeb Server 2008の上にPHPとPukiWikiシステムをインストールする例を紹介した。インストール後、PukiWikiはすぐにでも使える。安全なイントラネット内なら、情報共有サーバとしてすぐに実運用しても問題ないだろう。

 次回は、Server CoreにPHPをインストールする方法を解説する。End of Article


 INDEX
  [検証]WindowsでインターネットWebサーバ
  第2回 WindowsでもPHP
    1.WindowsでPHP+PukiWiki
    2.IIS 7.0の準備
    3.Zend Coreの導入
    4.Zend Core/PHPの設定
  5.PukiWikiサーバの導入

 「検証」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間