Manual:Installing MediaWiki on Windows Server 2003/ja

このガイドではWindows Server 2003 SP2を稼働させているコンピュータ上でMediaWikiをインストールする方法を示します. Internet Information Services (IIS)がインストールされているのであれば(コントロールパネル、プログラムの追加/削除、Windowsコンポーネントの追加/削除をご覧下さい)これはWindows XP Professionalでも動作します.

このインストレーションで利用されるWAMPスタックです:


 * Windows Server 2003
 * IIS 6
 * MySQL 5.0.24 (2006年11月22日時点でMySQL 5.0.26とそれ以降では問題があります)
 * Win2K Advanced Server SP4の元でMySQL5とPHP5を問題なく稼働できました. SMF 1.1RC3も動作しました. - Slamlander 23:04, 25 November 2006 (UTC)


 * PHP 5.2.3
 * MediaWiki 1.10

MediaWiki (最新の安定版)
2007年2月20日の最新の安定版:MediaWiki 1.10.0

PHP 5.2.3
最新バージョン: 古いバージョン: PHP 4.3.12

MySQL 5.0.24
MySQL 5.0.24

DBTools 3.03 (optional)

 * DBTools 3.03
 * MySQL db Administration

MySQL 5.0.24をインストールする
MySQLをデフォルトのディレクトリにデフォルトのオプションでインストールします:
 * 1) "Next"を押すことでインストレーションを完了します
 * 2) “Detailed Configuration”を選択します
 * 3) “Developer Machine”を選びます
 * 4) “MultiFunctional Database”を選びます
 * 5) データのパスを選択します. このコンフィギュレーションはデフォルトの位置に使われます.
 * 6) “Decision Support (DSS)/OLAPを選択します
 * 7) 3306上のTCP/IPネットワーキングとStrict Modeを有効にします
 * 8) standard character setを有効にします
 * 9) Windowsサービスとしてインストールして自動的に起動するように設定します. “Include Bin Directory in Windows PATH”をチェックします
 * 10) rootのパスワードを入力します
 * 11) セットアップを作成します

PHP 5.2.3をインストールする [推奨]
'''注: session.save_pathとupload_tmp_dirの他のインスタンスのためにPHP.INIを探して下さい. 見つけたらコメントアウトして下さい. ''' これでお終いです. 再起動は必要ありません.
 * 1) C:\PHPへのインストールフォルダを変更します
 * 2) ウェブサーバのリストからIIS CGIを選択します
 * 3) エクステンションを拡張して“MySQL”をインストールするように選択して下さい. ただし他のエクステンションは便利かもしれませんが後で追加して下さい. ヒント: 後で有効にするActive Directory認証を利用している場合、“LDAP”、“OpenSSL”と“MCrypt”を有効にして下さい. それらを後で追加した場合、一部のファイルがコピーされません. 再インストールすることでこれらのファイルをコピーすることもできますが、php.iniファイルをごちゃごちゃにします:
 * 4) すべてのエクストラをインストールします(PHP ManualとPEAR)
 * 5) エクスプローラでC:\PHP\sessiondataとC:\PHP\uploadtempフォルダを作成して下さい.
 * 6) 両方のフォルダを選択して、右クリックをしてプロパティを選択して下さい. パーミッションタブ上でユーザーのIUSR_  “Modify”の権限を両方のフォルダに付与して下さい
 * 7) NotepadでC:\PHP\php.iniを開きます
 * 8) “;cgi.force_redirect = 1”の行を見つけてアンコメントし、値を“1”から“0”に変更して下さい
 * 9) “upload_tmp_dir="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\php\upload"”の行を見つけて“upload_tmp_dir=C:\PHP\uploadtemp”に変更して下さい
 * 10) 読み込みできるように次の行を変更して下さい: “session.save_path="C:\php\sessiondata"”
 * 1) PHP.INIを保存します

wikiで電子メールを利用出来るようにしたい場合、PHPをインストールした後でPEARのMailとNet_SMTPモジュールをダウンロードします. c: cd \php .\php pear\go-pear.bat pear install mail pear install net_smtp
 * 1) Explorerから次のサイトに行きます: http://go-pear.org
 * 2) ウェブサイト全体をコピーしてファイルにペーストします: c:\php\pear\go-pear.bat
 * 3) コマンドラインから次のことを行います:

代替的なPEARインストレーションメソッド: .batファイルの代わりにPHPエンジンを利用してPHPスクリプトを試して下さい. ウェブサイトの内容をC:\php\pear\go-pear.phpとして保存して下さい. c: cd \php\pear php go-pear.php pear install mail pear install net_smtp
 * コマンドラインから、次の内容を行います:
 * 新しいPEAR_ENV.regをダブルクリックして実行をして同じくコマンドラインから次のことを行って下さい:

IISでMediaWikiをインストールする

 * 1) ダウンロードしたファイルからMediaWikiを展開してC:\Inetpub\wwwroot\mediawikiに設置します
 * 2) このフォルダを右クリックして下さい. IUSR_ を"Read & Execute"と一緒にパーミッションリストに追加して下さい
 * 3) IIS Managerを開きます
 * 4) デフォルトのウェブサイトを停止させます
 * 5) “Web Sites”を右クリックをして新しいウェブサイトを選択して下さい
 * 6) 新しいウェブサイトの名前として“MediaWiki”を使います.
 * 7) “C:\Inetpub\wwwroot\mediawiki”パスを選択します
 * 8) Read and Executeパーミッションを許可します
 * 9) MediaWikiを右クリックしてPropertiesを選択します
 * 10) Documentsタブ上で“index.php”をデフォルトのコンテントページとして追加してリストのトップに移動します
 * 11) 設定を保存してIIS Managerを出ます
 * 12) C:\Inetpub\wwwroot\mediawiki\configフォルダ上で書き込みパーミッションを有効にします(少なくともセットアッププロセスの間).
 * 13) “iisreset”を実行します
 * 14) ほかのマシンから、http:// /にアクセスします. 注: 私のマシンは仮想のWindows 2000 Professional SP4でドメインユーザーアカウントを利用してドメインに参加してログインしているものでした.
 * 15) 必要に応じてMediaWikiを設定して下さい
 * 16) LocalSettings.phpをC:\Inetpub\wwwroot\mediawiki\configからC:\Inetpub\wwwroot\mediawikiにコピーします
 * 17) http:// /に戻ります
 * 18) You are good to go…

注: 私に関しては、Windows 2003 SP2上でMediaWikiを稼働させるために必要なことはこのこと以外ありませんでした. 他のことに対して便利であるかもしれないので他のステップはそのままにしました.

検証
IIS v6に関してはhttp://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5adfcce1-030d-45b8-997c-bdbfa08ea459.mspx?mfr=true をご覧下さい、それ以前のIISバージョンに関してはhttp://support.microsoft.com/kb/172138 をご覧下さい. このセクションで説明されたメニューはWindows XP Professional SP2では表示されません. その場合、このステップをスキップしても安全です. さもなければPHPのために無効にする必要のある制限が最初の場所に現れないからです. XP Pro SP2において、"Web Service Extensions"フォルダは存在しません.
 * バーチャルディレクトリで.php拡張子が有効になっていることを確認して下さい. (注: PHPインストレーションは既にこれを設定しています. ) これをするために、ウェブサイトとvirdirの上で右クリックをしてプロパティを選択して下さい. 結果ダイアログで、"Virtual Directory"タブを選択して、最後に"Configuration..."ボタンをクリックします. "Application extensions"ウィンドウで、スクロールダウンして.phpがリストされていることとphp-cgi.exeへのパスが正しいことを検証して下さい.
 * デフォルトのドキュメントがindex.phpに設定されていることを確認して下さい. これを行うために、virdirを右クリックしてProperties/を選択します. Propertiesウィンドウにおいて、"Documents"タブを選択して、"Enable default content page"においてindex.phpの検証はリストのトップになります.

"Internet Information Services (IIS) Manager"の範囲で システムは同じ要求されたファイル(C:\PHP\php-cgi.exe)を参照する2つの拡張子を許可しますが、それらが動作しないことを報告する人もいます. 執筆時点でこの問題に対する確実な修正方法はありません...動作を報告して下さる以外に...可能な次善策はphp-cgi.exeをphp-cgi2.exeをコピーして代わりにphp-cgi2.exeを利用します.
 * 1) 広げます
 * 2) *(+) Internet Information Services
 * 3) **(+) Hostname <-- サーバの名前
 * 4) ***(+) Web Service Extensions
 * 5) 右クリックをして"Add a new Web service extension..."を選択します
 * 6) "New Web Service Extension"というタイトルが付加された新しいウィンドウ:
 * 7) "Extension name:"フィールドにおいて、"cgi"を入力して下さい(引用句は無し)
 * 8) "Add..."をクリックします
 * 9) "Add file"のタイトルの新しいウィンドウと"Path to file:"フィールドで、"C:\PHP\php-cgi.exe" (引用句無し)を入力
 * 10) "OK"をクリックします
 * 11) "Set extension status to Allowed"にチェックを付けます
 * 12) "OK"をクリックします

MySQL 4.1をインストールする

 * セットアップファイルを使用します. デフォルトの"Complete"インストレーションを実行します.
 * 'configure now'ボックスをチェックして'detailed configuration'を選択します.
 * 選択するオプションです: サーバ、多機能、OLTP, Latin1照合を有効にする、TCP/IPネットワーキングを有効にする、'strict mode'を無効にする、BINをPATH変数に追加する、アカウントを変更しない(mediawikiインストレーションが吐き出します) [NB this probably means mySQL will install with blank root password]、サービスとして起動する
 * インストレーションが動作するのか確認して下さい:

C:\>mysqlshow -u root -p Enter password: *********** +---+  | Databases | +---+  | mysql     | | test     | +---+

MySQLに16バイトのパスワードの暗号化を強制する

 * C:\Program Files\MySQL\MySQL Server 4.1\my.iniファイルを開きます
 * 次の行を[mysqld]セクションに追加します:

#Use old password encryption method old-passwords


 * MySQLサービスを再起動します (NET STOP mysqlを入力して、次にNET START mysql)

NB: この理由は次のURLで説明されています http://dev.mysql.com/doc/refman/4.1/ja/old-client.html

次のコマンドを実行する必要もあります:

C:\>mysql -u root -p Enter password: ***** -> UPDATE mysql.user SET Password = OLD_PASSWORD('new_password') [set this to whatever you want your root password to be] -> WHERE Host = 'localhost' AND User = 'root'; -> FLUSH PRIVILEGES;

以前作成したvirdirを利用してMediaWikiをインストールする
NB: ウェブサイトがlocalhostとしてアクセス出来ない場合、IIS設定に移動してvrootを選択して右クリックをしてブラウザを選択して下さい.


 * ブラウザでvirdirにアクセスします
 * サイト名: demowiki
 * コンタクトする電子メール: root@wikihost [望む電子メールなら何でも]


 * 管理者: WikiSysop
 * パスワード: S3cur3Passw0rD
 * キャッシングはしない
 * MySQL SERVER: wikihost [or 'localhost']
 * データベース名: wikidb
 * wikiuser S3cur3Passw0rD2
 * rootパスワード: S3cur3Passw0rD3 (ステップ6で設定したMySQLのパスワードならなんでも)

ルートディレクトリでLocalSettings.phpを作成する

 * http:// /config/index.php に訪問した後で次の内容がブラウザに表示されます. の間のすべての内容をwikiのルートディレクトリにあるファイルにコピーして下さい : LocalSettings.phpと呼ばれます

下記はセクションの始まりです:

Warning: fopen(LocalSettings.php): failed to open stream: Permission denied in C:\Inetpub\wwwroot\wmobilewiki\mediawiki-1.5.4\config\index.php on line 687 LocalSettings.phpを完全に書くことは出来ませんでした. ディレクトリのパーミッションが正しいことと既に同じ名前のファイルが存在しないことを確認して下さい... 書き込まれたファイルで、これを手作業で貼って試して下さい: <?php
 * 1) このファイルはMediaWikiインストーラによって自動的に生成されました.
 * 2) 手作業で変更する場合は、必要に応じて調節して下さい
 * 3) 後でそれらを再び作り直します.

$wgEnableUploads		= true; $wgUseImageResize		= true;
 * 画像のアップロードを可能にするために'images'ディレクトリを書き込み可能して次の内容をアンコメントして下さい:
 * またサムネイルを有効にするために、上記のインストラクションに従って、次の変数をtrueに設定して下さい:

MySQLインスタンスのルートパスワードを変更する！
コマンドラインかDBツールを利用して下さい.

スクリプトエラーを修正する
"Undefined index REQUEST_URI"エラーメッセージを取得する場合、次のことを試して下さい: この問題はWindowsに関するPHPの問題です. the REQUEST_URI memberへのすべての参照をSCRIPT_NAMEを伴う_SERVER配列に置き換えて下さい. 同じ値の変数の名前はWindowsとUNIXのPHPによって異なります.

前: Old: $_SERVER['REQUEST_URI'] 変更後: New: $_SERVER['SCRIPT_NAME']

次の範囲で見かけました:
 * "includes/Setup.php"、90、96、97行
 * "includes/WebRequest.php"、284行
 * "includes/Skin.php" 574行
 * "includes/GlobalFunctions.php"、232行
 * "includes/wiki.php"、388行
 * "index.php"、228行
 * "includes/HttpFunctions.php"、33行 (MediaWiki 1.7.1)

注目: $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']をLocalSettings.phpに追加することも出来ます

しかしながら、とりわけrewriteモジュールが採用されかつ/もしくはディレクトリ名がデフォルトのファイル名の代わりに利用されるときは、$_SERVER['SCRIPT_NAME']は$_SERVER['REQUEST_URI']に常に等しくありません. 100%のApacheと互換性のある $_SERVER['REQUEST_URI']を得る唯一の方法はISAPIフィルタを利用することです. 手順は|ここに示されています.

a. Windows 2003ドメインコントローラでホストされたときにページへのアクセスを修正する
Domain Controllerとして振る舞うWindows 2003サーバ上でMediaWikiをホストする場合、ページを開こうとするときに次のようなエラーを受け取ることがあります. これはデフォルトのドメインコントローラのセキュリティポリシがCGIスクリプトの実行を防止するからです.

Microsoft KB904056上の解決方法を試して下さい.
 * 警告: 自己責任でドメインコントローラをIISホストとして利用して下さい. セキュリティブリーチによって潜在的に攻撃者がアクティブディレクトリデータベースにアクセスする可能性があります.
 * 注: 最初にメソッド 1: Set the CreateProcessAsUser metabase setting to falseを試して下さい. これは複数のインストレーションで成功しました.

b. IIS SMTP中継/交換を利用するときの電子メール問題を修正する
電子メール通知の動作問題を抱えていてInvalid Address 5.5.4というエラーメッセージを受け取る場合 (MediaWiki 1.6.5を利用している場合)、includes/userMailer.phpの45行周辺を編集します:

編集前: class MailAddress { /** 	 * @param mixed $address String with an email address, or a User object * @param string $name Human-readable name if a string address is given */ 	function MailAddress( $address, $name=null ) { if( is_object( $address ) && is_a( $address, 'User' ) ) { $this->address = $address->getEmail; $this->name = $address->getName; } else { $this->address = strval( $address ); $this->name = strval( $name ); } 	}

編集後: class MailAddress { /** 	 * @param mixed $address String with an email address, or a User object * @param string $name Human-readable name if a string address is given */ 	function MailAddress( $address, $name=null ) { #To get round IIS SMTP Invalid Address Problem $this->name = ""; if( is_object( $address ) && is_a( $address, 'User' ) ) { $this->address = $address->getEmail; } else { $this->address = strval( $address ); } 	}

c. IIS上でパーミッションが否定される問題 (Windows XP)
次の記事をご覧下さい: http://www.ekhoury.com/2007/01/15/permission-denied-php-on-iis/

d. 他の問題は？
(Brion Vibberの投稿より)

インストレーションが正しかったことを確認していますか？ データベースへのGRANTが正しかったことを確認していますか？ インストーラへのユーザー名とパスワードが正しいですか？ 出力チェックを追加するためにコードを探っていますか？MySQLエラーログを確認していますか？

まだ問題を抱えている場合、次の内容を行ったことを確認して下さい:

フレッシュインストールを試しましたか？異なる設定を試しましたか？異なるサーバを試しましたか？ 異なるポートを試しましたか？複数のサーバ間の差異がありますか？

IIS上で空白ページの門だ井を抱えていて切り替えできない場合、バグレポートで提案された次善策を試して下さい:1763 TODO: fix for --
 * 1) Turck MMCache not installed, can't use object caching functions

 documented by mailto:ian@library.du.edu ian 12:57, 24 May 2005 (Mountain Daylight Time) mailto:wiki@laurent.ca laurent 08:31, 07 November 2005 mailto:josh@coady.us joshcoady 11:54, 24 December 2005