MT3.11-ja MySQL設定メモ

他のマシンに立ち上げた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倍早いと真面目にマシンのリプレースを考えてしまいます。