Apache の設定
Apache HTTP サーバー (httpd) はMediaWiki に使用される率が最も高いウェブサーバーです。
モジュール
PHP
Apache モジュールとしての PHP
MediaWiki は、PHP を Apache モジュールとして使用するように書かれています。以下のような URL で始まる場合は、おそらく PHP はモジュールとして設定されています:
example.com/index.php/Main_Page
PHP の設定とバージョンは、ウィキの Special:Version ページを見るか、または phpinfo() を使用して確認できます。
Install PHP, Apache, and the PHP module for Apache. Afterwards, make sure that the Apache service is running. For specific commands, refer to the documentation of your operating system or distribution.
CGI としての PHP
PHP が CGI として動作している場合は、既定では「醜い」URL になるでしょう。それでも短い URL にすることはできます。
CGIWrap
ご利用のサーバで Apache を採用していて、PHP を CGI として稼働させている場合は CGIWrap をインストールします。このツールで CGI ごとにユーザーを切り替えて Apache サーバーを稼働させることができます。
そうすると MediaWiki ページに新しいユーザーを作れます。CGIWrap のインストールは、ご利用のサーバごとにコンパイルする必要があるため、この文書では説明しません。ただし簡単な目安として以下のルールに従います。
- ウィキメディアの利用者を作成します
useradd -M -s /sbin/nologin wikiuser
- cgi-bin フォルダーを作り CGIWrap を保存します (サンプルは /home/myuser/cgi-bin を参照)。構成が完了した段階でこのフォルダーに cgiwrap のみ残し、デバッグ版が必要なときに備えるなら他のフォルダーに移動します。cgiwrap ファイルは Apache からのアクセスのみ許可します (chown と chmod も同様)。
chown apache:apache cgiwrap
chmod 500 cgiwrap
- cgi-bin フォルダー内に、ウィキメディアのルートへのシンボリック リンクを作成します。
ln -s /home/myuser/public_html/wiki /home/myuser/cgi-bin/wikilink
- ウィキの .htaccess ファイルに、以下の定義を追加します:
AddHandler php-wrapper .php Action php-wrapper /cgi-bin/cgiwrap/wikiuser/wikilink
- 最後に Wikimedia フォルダ内のすべての .php ファイルを chown と chmod 処理しアクセス権を wikiuser に限定します。
find . -name \*.php -exec chown wikiuser:wikiuser {} \;
find . -name \*.php -exec chmod 500 {} \;
ファイルへは通常通りアクセスできます。パスで cgi-bin を特定しなくても、透明に処理されます。
ご利用のPHPラッパーとして、実際の処理を明確に示す /cgi-bin/cgiwrapd/... を使うよう強く推奨します。またこれはまさに試行錯誤のプロセスで長い時間がかかるため、すべてが完璧に動作するまで、CGIWrapのソースフォルダを削除しないことを強くお勧めします。しかしながら、ご利用のMediaWikiは他のuidを妨害することなく、独自のuidを使い独自のプロセスで実行されるため、それだけの時間を費やす価値が十分にあります。逆もまた真ですが、rootを除くと、どこでも何でも読み取れます。
mod_alias / mod_rewrite
URL を美しくするためのお勧めの方法には mod_alias が必要です。他の方法では代わりに mod_rewrite を使います。
mod_security
ModSecurity は MediaWiki との共存で問題を起こすことが知られています。一見、エラーが不規則に起こっているような場合は、それが問題を引き起こしているかどうかを見るために、エラー ログを確認してください。
VisualEditorと下位ページ
Parsoid サーバへの問い合わせエラーを防ぐために、AllowEncodedSlashes NoDecode
をウィキのVirtualHost設定ブロックに追加しなければなりません (VirtualHostが使われていない場合は一般的なサーバ設定に追加します)。[1]
スレッドのスタックサイズ
各 Apache スレッドのスタック サイズは設定可能で、その既定値はオペレーティング システムごとに異なります。Windows 環境で MediaWiki を動作させるためには、(問題があるならば)スタック サイズを増やす必要があるかもしれません。標準の 1MB は小さく、PHP スクリプトの実行中にスタック オーバーフローを引き起こす可能性があるためです。以下の httpd.conf 設定はスタック サイズを約 8MB(ほぼ、標準的な Linux の既定値)に設定します:
<IfModule mpm_winnt_module>
ThreadStackSize 8388608
</IfModule>
スパイダーとボット
悪意のないスパイダーに指示し、動的に生成されたページをダウンロードさせないためには、必ず robots.txt ファイルを使用します。 これによりウェブサーバーの負荷軽減と帯域幅の維持、検索エンジンでコンテンツが重複する問題を防ぐことができます。 しかし悪意のあるボットによってウェブサーバーを拘束されると、大量のページを非常に迅速にダウンロードさせられてしまい、帯域幅を無駄にする可能性があります。 その防止に役立つのが Request throttling です。