マソム自宅サーバ構築の記録
- ■
-
Movable Type 4.12 のインストール
-
作成日:08/06/23
更新日:09/08/07
前置き
Weblog(CMS?)システム Movable Type をインストールしてみます。
2008年6月現在の最新版 4.12 を使います。
なお、今回は動作チェックの為なので無償版を使います。
以下を参考させていただきました。有り難うございます。
Movable Type 4 ドキュメント
「Can't connect to local MySQL server through socket」エラーについて
DBIでCan't connect to local MySQL server through socket '/tmp/mysql.sock'
DBD::mysql - MySQL driver for the Perl5 Database Interface (DBI) - search.cpan.org
Movable Typeのインストール
共有サーバにインストールすることを想定して作業します。
Windows上で、無償版を
ダウンロードします。
ダウンロードした MT-4_12-ja.zip を解凍します。
Movable Type 4 ドキュメント の「
新規インストールの事前準備」を見ると、Perl の実行環境の確認とあります。
$ whereis perl
perl: /usr/bin/perl /usr/share/man/man1/perl.1.g
/usr/bin/perl がMovable Typeの初期値だそうなので、ソースのパスを変更する必要はありませんでした。
もし違っている時は、各ソースの1行目の
#!/usr/bin/perl
を変更する必要がありそうです。
なお、コマンドラインから確認できない共有サーバの時はサーバのドキュメントや、管理者に問い合わせる等で確認する必要があります。
FTPでWebサーバのドキュメントルート以下にディレクトリ mt/ を作成し、そこに解凍したファイルをアップロードします。
かなりのファイル数なので結構時間が掛かりました。
ディレクトリ mt/ 直下にあるCGIファイルに実行権限を付けておきます。
私はCGIの実行権限をApacheの設定ファイルhttpd.confで与えていません。
ディレクトリ mt/ にCGIの実行権限を与える為に、.htaccess ファイルを作成しました。
Options +ExecCGI
必要なモジュールのインストール
ブラウザから、Movable Type システムチェック mt-check.cgi を実行して、システム構成の確認をしました。
データベース用のモジュールが足りないことが分かりました。
PerlでMySQLを操作するモジュールDBD::mysqlをyumでインストールします。
# yum install perl-DBD-MySQL
・・・省略・・・
Installed: perl-DBD-MySQL.i386 0:3.0008-1.fc7
Dependency Installed: perl-DBI.i386 0:1.53-2.fc7
Complete!
依存関係のチェックで perl-DBI が無かった為に、こちらもインストールされました。
その他オプションモジュールにも足りないものがありますが、基本機能の動作には影響ない様なので後で必要に応じてインストールすることにしました。
インストールウイザードの実行
ブラウザから mt.cgi 又は mt-wizard.cgi を実行します。
しかし、MySQLに接続できません。
色々調べた結果、MySQLサーバーとDBD::mysqlとで、ソケットのパスが違っている事が原因と分かりました。
MySQL はソースからインストールした為に、パスは /tmp/mysql.sock となっています。
DBD::mysql はパッケージをインストールしていますので、以下のエラーログにある通り /var/lib/mysql/mysql.sock を見に行っていました。
failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
でも、ウイザードを良く見ると詳細設定画面があり、そこからソケットのパスを設定できる事が分かりました。
これでMySQLに接続出来るようになりました。
後はウイザードの指示に従って作業したらほぼOKでした。
例外は、mt/mt-static/support ディレクトリの書き込み権限をWebサーバに与えるよう指示された時だけです。
そもそも、このディレクトリがありませんでした。
このディレクトリは、カスタマイズ関係のデータを保存する場所で、最初は空でOKのようでしたので手動で作成し、ウイザードを続行したら大丈夫でした。
紆余曲折Tips
PerlでMySQLに接続するソース
データソースにソケットのパスも設定する場合
#!/usr/bin/perl
use DBI;
$dbname = "dbname"; # データベース名
$dbusername = "user"; # データベース接続ユーザー名
$dbpassword = "pass"; # 接続ユーザパスワード
$dbh = DBI -> connect ("DBI:mysql:database=$dbname;host=localhost;mysql_socket=/tmp/mysql.sock",$dbusername,$dbpassword);