mediawikiでDBを分離する。
EeePCでmediawikiを動かしたとき、SSDへの書き込みを極力減らしたいのでDBサーバを分離したいと考えている。
アプリケーションサーバとDBサーバを分離するメリットは色々あると思うけど、debianのパッケージはあんまりそういうのを考慮されてないのかなあ…。
分離する、と書いてみたけどまっさら環境への導入です。
Debian4.0(etch)で検証。
DBサーバにsqlserverを導入する。
DBサーバ側は普通にaptitudeでmysql-server-5.0を導入する。
Webサーバ側にmysqlごと突っ込んでしまえば楽っちゃー楽なんだけど。/varと/usrであわせて140MB強の領域を喰ってしまった(30Mくらいはpackageのcacheだと思うけど)ので、できれば上手く分離したいかなと。
Webサーバにmediawikiを導入する。
まっさらな状態でMediaWikiを入れようとすると依存関係のせいで大量のパッケージが導入される。スクリプトにしてもいいけど、ちまちまと手作業で、関係なさそうなブロックから放り込んでいってみる。
始めからaptitudeに--without-recommendsを指定してやればmysql-serverは入らないので、そっちのほうがいいかも。というか、latexとかも普通はいらないよね。apt-get使いには関係ない話か…。
WebサーバからDBサーバに接続できることを確認する。
mysqlのインストール状態では他のサーバから接続できないので、設定を修正する。
/etc/mysql/my.cnfのbind_addressをコメントアウト*1するか特定のIFのIPにするか。
bind_address = 127.0.0.1
つぎに、Webサーバから接続できるdatabaseとuserを作製する。
mysql> create database wikidb;
mysql> create user wikiuser@db_addr identified by '******';
mysql> grant all on wikidb.* to wikiuser@db_addr; *2
念のため、DBに接続できるか確認。
# mysql -h db_addr -u wikiuser -p
password: *****
mysql> use wikidb;
mysql> create table testtbl ( var1 integer );
...
MediaWikiのセットアップを行う。
ブラウザ等でhttp://web_addr/mediawikiにアクセスして、各種設定を行う。以下、若干変更のあるところだけ。
- Database host : 当然、db_addrを指定する。
- Database name : create databaseしたときに指定した名前。wikidb
- Database user : create userしたときに指定した名前。wikiuser
- Database password : 同様。
- SuperUser : 今回はDatabase等作成済みなので…wikiuser
- SuperUser password : 同様。wikiuserのパスワード