他のマシンに立ち上げたMySQLサーバへアクセスする設定のメモです。
環境:
MTを入れるマシン(localhost)
- MT3.11を普通にインストール
- apache: httpd.confはmod_perlの設定などは入れない状態にしておく。
MySQLを入れるマシン(externalhost)
- mysqld等をインストール
extenralhostでは以下のパッケージをインストール。
依存関係があるので、rpm -Uvh パッケージ名.rpm 等で適当に入れた。
- mysql-3.23.58-1.9.i386.rpm
- mysql-devel-3.23.58-1.9.i386.rpm
- mysql-server-3.23.58-1.9.i386.rpm
- perl-CGI-2.81-88.i386.rpm
- perl-DBD-MySQL-2.1021-3.i386.rpm
- perl-DBI-1.32-5.i386.rpm
MySQLの起動
# /etc/init.d/mysqld start
でmysqldを起動。
# /sbin/chkconfig --add 35 mysqld
で起動時にスタートするように設定。
DBの設定は以下のリンク先どおりに行うが、一点違うのは@localhostの部分。
MovableTypeのMySQL対応の顛末ユーザ名には@localhostをつけて、 サーバ内からのアクセスに限定してしまいましょう。
- 第2章 MySQLの運営 ユーザ権限の設定をしよう
- MySQLクイック・リファレンス
外部からのアクセスを設定するために、@localhostの部分を @externalhost (またはIPアドレス)に変更して実行
mysql> grant select,insert,update,delete,create,alter on blogdb.* to mtuser@externalhost
identified by 'dbpasswd';
以上でexternalhost側の設定は終了。
localhost側の mt.cfgを以下のように設定
ObjectDriver DBI::mysql
Database blogdb
DBUser mtuser
#DBHost localhost
DBHost externalhost
mt-db-pass.cgiにDB用パスワード(上記のdbpasswdと同じもの)を設定。
http://localhost:8080/path/to/mt/mt-check.cgi
準備完了かチェック。
http://localhost:8080/path/to/mt/mt-load.cgi
を行うと、externalhost側のMySQLに初期データがロードされる。2度以上実行すると動作がおかしくなるので、もう一度mt-load.cgiを行う場合にはtableを消去する必要がある。
# mysqladmin -u root -p drop blogdb
これでtableをドロップする。
同じ手順でdbを新しく createする。
# mysqladmin -u root -p create blogdb
# mysqlshow -u root -p
# mysql -u root-p
mysql> grant select,insert,update,delete,create,alter on blogdb.* to mtuser@externalhost
identified by 'dbpasswd';
mt-load.cgiが正常終了したら、作業は完了です。
http://localhost:8080/path/to/mt/mt.cgi
へ初期ユーザー、パスワード(Melody/Nelson)でログインします。
速度計測条件:
- MT3.11-ja: ERH3ES Pentium 2.80CGHz 1GB memory 60GB HDD,
エントリー: 1068 | コメント: 1578 | 投稿者: 2
- MySQL(3.23): ERH3ES Pentium 2.60CGHz 512MB memory 20GB HDD
すべての再構築:122秒
約119秒かかっていたすべてのrebuildが、MySQLの外部化により122秒になりました・・・あれ?
どうもMySQLの外部化にともなう通信のオーバーヘッドがあるようです。マシン性能に余力がある場合は外部化しない方がよさそうです。
mod_perl化
- のまのしわざ:MT3.1のmod_perl化メモ
mt.cfgの設定
StaticWebPath /mt-static/
を追加します。同時に /path/to/mtの docs/,images/, styles.cssを mt-staticへmvします。
apacheの停止
# /usr/local/apache/bin/apachectl stop
httpd.confの設定
#
# mod_perl status
#
<Location /perl-status>
SetHandler perl-script
PerlHandler Apache::Status
</Location>
# mod_perl for MT3.1
PerlSetEnv PERL5LIB /var/www/html/mt31/lib:/var/www/html/mt31/
extlib
PerlModule Apache::Registry
<Directory "/var/www/html/mt31">
SetHandler perl-script
PerlHandler Apache::Registry
PerlModule Apache::DBI
Options +ExecCGI
PerlSendHeader On
</Directory>
の記述を追加。今回はApache::DBIもインストールしてあるので PerlModule Apache::DBIを有効化。
apacheの起動
# /usr/local/apache/bin/apachectl start
http://mt-host:8080/perl-status
から、Loaded Modulesを選択し、MT::*などが表示されることを確認し作業は終了。
速度計測条件:
- MT3.11-ja(mod_perl, Apache::Registry): ERH3ES Pentium 2.80CGHz 1GB memory 60GB HDD,
エントリー: 1068 | コメント: 1578 | 投稿者: 2
- MySQL(3.23): ERH3ES Pentium 2.60CGHz 512MB memory 20GB HDD
すべての再構築:106秒(ただし、Atom feedはrebuildしない設定)
mod_perl化した場合も同じ傾向でした。
ちなみに現在の「のまのしわざ」サーバーでは以下のとおりです。
速度計測条件:
- MT3.01D-ja, MySQL: RH8 Celeron 500MHz 256MB memory 60GB HDD,
エントリー: 1068 | コメント: 1578 | 投稿者: 2
1086秒(18分06秒)
10倍早いと真面目にマシンのリプレースを考えてしまいます。