MediaWikiのカスタマイズ(9) sitemapの作成(cronが使える場合)

  • 投稿日:
  • by
  • カテゴリ:

MediaWikiでサイトマップを出力する方法には,MediaWiki標準機能を利用する方法とエクステンションを利用する方法がある。
ただし,標準機能によるサイトマップの出力は,コマンドラインからphpのコマンドを実行できる環境が必要なので,レンタルサーバーによっては利用できないことがある。

本ブログを運用しているエックスサーバーはcronによるコマンド実行が可能なので,標準機能によって,サイトマップを出力することができる。

方法

maintenanceの中にあるgenerateSitemap.phpを実行する。

参考:http://www.mediawiki.org/wiki/Manual:GenerateSitemap.php

具体的手順

エックスサーバーでの導入手順を紹介する。 他のサーバーでのcronの設定方法や,絶対パスのディレクトリ構成などは適宜読み替えて参照されたい。

1. Adminsettings.phpの作成

メンテナンススクリプトの実行にはAdminSettings.phpが必要となる。
AdminSettings.sampleにデータベースのユーザー名とパスワードを指定してリネームすればよい。

参考:http://www.mediawiki.org/wiki/Manual:Maintenance_scripts/ja


2. cronによる実行の指定

サーバーパネルからcronの設定を選び,開いた画面からcronの追加をさらに選択する。
スケジュールを適当に設定し,コマンド欄に絶対パスでコマンドを入力。
ホーム直下のwikiディレクトリにMediaWikiをインストールしている場合は次のようになる。

php5 /home/サーバーID/ドメイン名/public_html/wiki/maintenance/generateSitemap.php --fspath=/home/サーバーID/ドメイン名/public_html/wiki/sitemap/

コマンドはphpではなくphp5を使用することがポイント。
エックスサーバーではドメインごとにphpのバージョンを4と5で切り替え可能になっているが,ドメインごとの設定に関わらず,cronでは4系列のphpが利用されている(2009年6月現在)。generateSitemap.phpはphp4では動かないため,phpコマンドでは次のようなエラーが出てしまう(最終行のphpのバージョンに注目)。

PHP Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/サーバーID/ドメイン名/public_html/wiki/maintenance/generateSitemap.php on line 167 Content-type: text/html X-Powered-By: PHP/4.3.9

明示的にphp5コマンドを使用することで,正常にサイトマップを出力させることができる。

なお,上記例では--fspathオプションでサイトマップを出力する場所を指定している。
指定しなければgenerateSitemap.phpと同じ場所(maintenanceディレクトリ内)に出力される。
指定する場合はあらかじめ出力先のディレクトリを作成しておく。


インデックス用のファイルと具体的なサイトマップの内容の書かれたファイル(標準だと圧縮されている。--compressオプションで圧縮しない設定も可能)の2つのファイルが作成される。
google等へはインデックス用のファイルを登録すればよい。

-->