| « 入り組んだテーブルを書いてみようと思ったが… | firefoxの検索ボックスの消し方 » |
MediaWikiのインストール メモ
以下は、FreeBSDにMediaWikiをインストールした際のメモです。データベースとWebサーバは、別々のjail環境下において動作させることにしています。
|
||||||||||||||||||
|
||||||||||||||||||
|
||||||||||||||||||
Follow up:
ホスト側の設定
まず、Webサーバとデータベースサーバ用に使う2つのjail環境を用意しておくことが前提です。jail環境の構築方法等はjailのマニュアルページ等が参考になるでしょう。また、このサイト内にも、jail環境の構築ノートがありますので、興味があれば参照してください。
なお、jail環境内で、SystemVの共有メモリを用いる場合は、ホスト側の/etc/rc.confに
jail_sysvipc_allow="YES"
を追加して、jailを起動するように設定しておきます。
mysql側の設定
mysqlを動作させる側のjail環境に入り、databases/mysql41-serverをportsから導入することにします。領域を節約するためmount_nullfs(8)を利用して、ホスト側の/usr/ports/等を使い回すと便利です。ちなみに、jail内に入って作業する場合は、ホスト側で/usr/sbin/jlsを実行して得られるJIDを控え、
# jexec ${JID} su -
のようにして入れば、最初から、余計な環境変数を引き継がずに作業が出来るので便利です。
mysqlサーバのインストールが済むと、mysqlというユーザとグループが追加され、/usr/local/share/mysql以下に、
- my-huge.cnf
- my-large.cnf
- my-medium.cnf
- my-small
等といった設定サンプルがインストールされます。この中から、自分の環境の規模にあったものを選び、/etc/my.cnfという名前でコピーします。ここでは、my-medium.cnfを/etc/my.cnfとしてそのままコピーしました(これらは後からでも選び直すことができます)。
次に、/etc/rc.confに
mysql_enable="YES"
を追加して、mysqlサーバを起動できるようにします。なお、jail内では、ホスト側で使用しているループバックインターフェース lo(4)が使用できないので、
mysql_args="--bind-address=192.168.0.20"
も追加して、mysql用のjailに割り当てたIPアドレスをバインドするようにします。
以上の設定を終えて、
# /usr/local/etc/rc.d/mysql-server.sh start
を実行すると、mysqlサーバが起動され、最初の起動では、/var/db/mysql/以下でデータベースの初期化が行われます。
mysqlのrootユーザのパスワードを設定
mysqlサーバを起動したら、まず、コマンドmysqlを実行してサーバに接続し、最初に、mysqlサーバにおけるrootユーザのパスワードを設定した方が安全です。
# mysql -u root
mysql> SET PASSWORD FOR root@localhost = password('your_password');
以降は、
# mysql -u root -p
もしくは、
# mysql -u root -pyour_password
として、rootユーザでログインできます(後者は履歴に残るので注意)。
なお、上記の場合は、UNIXドメインのソケットでの通信でしたが、パスワードを設定した後でも、
# mysql -h 192.168.0.20 -u root
とすれば、パスワードなしでサーバに接続できてしまいます(root@'ホスト名'という別ユーザになってしまうので)。同様に、
mysql> SET PASSWORD = password('your_password');
を実行してください(あるいは権限を取り上げる)。
wiki用データベースの作成
続いて、wiki用に使用するデータベースを作成します。ここでは、wikidbという名前で、デフォルトの文字コードをutf8として作成しました。
mysql> CREATE DATABASE wikidb CHARACTER SET utf8;
データベースユーザの設定
次に、作成したwikidbにパスワードを使って接続できるユーザwikiuserを作成します。Webサーバ側から接続することになるので、Webサーバ側に割り当てたIPアドレスを明示します。
mysql> GRANT ALL TO wikidb.* wikiuser@192.168.0.21
-> IDENTIFIED BY 'your_password';
以上で、データベース側の準備は出来ました。
MediaWikiのインストール
ApacheやPHPの設定方法については、ここでは触れません。ただ、jail内で起動させることから、ApacheがListenするIPアドレスは、そのjailに割り当てたものを明示すべきです。
インストールするportsの中には、依存関係から、一緒に、Xのライブラリ等をインストールしてしまうものがあります。通常、これらは不要だと思われるので、インストールしないように、予め/etc/make.confに、
WITHOUT_X11=yes
を追加しておきます。
www/mediawikiのportを使うと、標準では、/usr/local/www/data-dist/mediawiki/以下にインストールされました。好きな場所にコピーしたり、エイリアスを使っても良いのですが、いずれにしても、ここでは、
- http://ホスト名/mediawiki/
からアクセスできるものとします。実際にアクセスする前に、以下のいくつかの設定をしておきます。
mediawiki/config/index.php
- http://ホスト名/mediawiki/config/
にアクセスすると、MediaWikiの実行に必要な設定やアプリケーションを確認してくれますが、なぜか、diff3の認識に失敗していた追記2ので、
--- mediawiki/config/index.php.orig Mon Jan 23 02:52:44 2006
+++ mediawiki/config/index.php Sat Feb 4 17:49:18 2006
@@ -321,7 +321,7 @@
$diff3locations = array("/usr/bin", "/opt/csw/bin", "/usr/gnu/bin", "/usr/sfw/bin") + explode(":", getenv("PATH"));
$diff3names = array("gdiff3", "diff3");
-$diff3versioninfo = array('$1 --version 2>&1', 'diff3 (GNU diffutils)');
+$diff3versioninfo = array('$1 --version 2>&1', 'diff3 - GNU diffutils');
foreach ($diff3locations as $loc) {
$exe = locate_executable($loc, $diff3names, $diff3versioninfo);
if ($exe !== false) {
と事前に修正しておきます。
以下、mediawikiのパフォーマンス向上のために、インストールしておくと便利かも知れないportsについて、若干触れます。
www/eaccelerator
PHP 4.3までは、ionCubeのPHP Acceleratorを使っていましたが、FreeBSDでは、現在のところ、PHP 4.4に対応しているバージョンのバイナリが配布されていなかったので、代わりに、eaccelerator(Turck MMCacheから名称変更)を使用することにしてみました。
PHPは他のスクリプトをインクルードすると、途端にパフォーマンスが落ちてしまうので、PHPのアクセレータは是非、入れておきたいものです。eacceleratorの方も申し分なく、体感できるほどパフォーマンスが上がります(何より、ソース配布なのが良い)。
ただし、注意点として、eacceleratorは、www/php4-sessionに依存して(PHP4使用時の場合)、php4-sessionをインストールすると自動的に
/usr/local/etc/php/extensions.ini
に追加される
extension=session.so
の行が、eacceleratorをロードするのに必要な
extension=eaccelerator.so
の記述よりも、後ろに来ていると*4、Apacheが起動できなくなってしまうので、php4-sessionのアップグレード時などでは気を付けて下さい。
- *4 独自に、
/usr/local/etc/php/extension.iniの方にを追加した場合を言っています。インストール時に表示されるメッセージ通り、eaccelerator.so
/usr/local/etc/php.iniの方に、
zend_extension="/usr/local/lib/php/20020918/eaccelerator.so"
等と追加している場合は、上記は留意する必要はありません。
なお、eacceleratorのデフォルトの設定では、デバッグが有効になっており、キャッシュがヒットする度に、その旨がエラーログに出力されます。通常、不要と思われるので、
php.ini内に、eaccelerator.debug = "0"
の行を追加しておくとよいでしょう。
databases/memcached
mediawikiは一旦、解析されたページをmemcachedにキャッシュして、同じページへのアクセスがあった際、このキャッシュされた内容を用いる事で、パフォーマンスの向上をはかることが出来ます。
ただし、memcachedは、IPベースの通信でデータのやり取りを行うことに加え、jail内ではホスト側で使用しているループバックインターフェースを用いることが出来ないため、否応なくmemcachedに、jail固有のIPアドレスに割り当てなければなりません。これは、外部からも接続される可能性があることを意味します。信頼できないネットワークの場合は、eacceleratorの共有メモリの使用で同様の処理を行うように設定した方が良いでしょう。
memcachedを起動させるためには、memcachedをインストールした環境の/etc/rc.confに、
memcached_enable="YES" memcached_flags="-l 192.168.11.21 -p 11211"
を加え、
# /usr/local/etc/rc.d/memcached.sh start
を実行します。
初期設定
以上、必要な準備が整ったら、
- http://ホスト名/mediawiki/config/
のURLにアクセスして、mediawikiの設定を行います。
主に設定する項目は、
- 言語のロケール
- 接続するデータベースへのアドレス、及び、そのユーザ名とパスワード
- MediaWikiのコンテンツを管理するための管理者のユーザ名とパスワード
です。データベースの文字コードは、MySQL 4.1以降のUTF-8を選択しました。
設定が反映されると、データベースサーバに接続し、選択したデータベース上に、wikiで使用するために必要なテーブルが作成され、Webサーバ側の方にも、
mediawiki/LocalSettings.php
という設定ファイルが作成されます。この設定ファイルがある限り、再度、上記URLにアクセスしても、先程のような設定画面は現れません。しかし、セキュリティ上、設定を済ませてしまえば、mediawiki/configディレクトリは、別の場所に移動するなりして、アクセスできないようにしておいた方が安全かも知れません。
以上の設定を終えれば、
- http://ホスト名/mediawiki/
にアクセスすると、MediaWikiのメインページにリダイレクトされ、MediaWikiが使用できるようになります。
その他
時刻表示の調整
wiki内の時間の表示がUTCになっていたので、
を参考に、
$wgLocaltimezone = "Asia/Tokyo";
$oldtz = getenv("TZ");
putenv("TZ=$wgLocaltimezone");
$wgLocalTZoffset = date("Z") / 3600;
putenv("TZ=$oldtz");
をmediawiki/LocalSettings.phpに追加。
数式
MediaWikiのTeXサポート機能を利用すると、wiki中で数式が表現できるようになります。
に書いてるportsが必要なようでしたが、ghostscript-gnuやImageMagick等は、MediaWikiをインストールした際、既にインストールされていましたので、
- lang/ocaml
- print/dvipsk-tetex
- print/teTeX-base
のportsだけ、個別にインストールしました。
機能させるためには、
# cd mediawiki/math # gmake
を実行し、同じディレクトリ内に、texvcという実行ファイルが生成されれば、使えるようになります。
例えば、wiki中に、
<math>\int^{\infty}_{-\infty}f(x)\,dx = 1</math>
と書くだけで、
のように変換してくれて面白いかも。
関連情報
MediaWikiについて、理解を深めたい場合は、
が参考になります。
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
5 comments, 2 trackbacks
PHPからImageMagickのライブラリを使用するための拡張モジュールgraphics/pecl-imagickのportに変更があって、デフォルトで使用するライブラリがGraphicsMagickのものに切り替わりました。
MediaWikiを標準のままportsからインストールした場合、ImageMagickは導入されなくなったようです。
MediaWiki中で、数式を表記する場合、convertというImageMagickのコマンドが必要になります。この場合、別個にgrahics/ImageMagickのportも導入する必要があります。
なお、pecl-imagickをインストールする際、GraphicsMagickを選択せず、従来通りにImageMagickのライブラリを選択することも可能ですが、現在のところ問題が存在するので、これはデフォルトのGraphicsMagickのままで構わないでしょう。
この記事の投稿時は、www/mediawikiのportが使用しているバージョンは、1.5系列のものでしたが、現在、1.6系列のものに切り替わっています。
1.6系列では、テーブル構造が1.5系列から若干、変更されたようで、データベースの作成、もしくは、データベースを1.5系列のものからアップグレードする時、
failed with error code "Specified key was too long; max key length is 1024 bytes
のようなエラーが出て、作業が中断してしまう場合があります(複数バイトの文字コードで、データベースを使用する場合)。
既に、
にも書いていますが、従来のバージョンに特化したports
www/mediawiki13www/mediawiki14www/mediawiki15
を使用するか、もしくは、1.6系列のバージョンで上記エラーが出る原因である
maintenance/archives/patch-job.sqlmaintenance/tables.sql
のスクリプト内のjob
テーブルの「列」のバイト数を変更するか、あるいは、「インデックスに使用する長さ」を変更してみて下さい。
【追記 2006/7/20】 現在、www/mediawikiのportは、1.7系列に切り替わっているので、PHP4では動作しません。PHP4では、www/mediawiki16のportを使用するのが良いでしょう。
20060629の更新で、mediawikiのインストールされる場所は、
${PREFIX}/www/data-dist/mediawik
から、
${PREFIX}/www/data/mediawik
に変更されました。
ports/99685の修正で、mediawikiインストール時に、FreeBSDのdiff3ユーティリティを認識しないという問題は、修正されたようです。
したがって、上記本文中、diff3に関する修正は、不要になりました。
/usr/ports/UPDATINGの20060714によると、
www/mediawiki version is 1.7 now. 1.6 version was preserved on www/mediawiki16 port.
と、www/mediawikiのportは、1.7系列のバージョンのものに切り替わったらしい。
しかし、...