MovableType: 2010年4月アーカイブ

MovableType って、ImageMagick の Perl モジュールが入ってなきゃ、GD モジュール使うのかと思ってたけど、初期ログイン時に、

Image::Magickがインストールされていないかまたは正しく設定されていないため、Movable Typeのユーザー画像機能を利用できません

って怒られた。

そうですか。仕方ないので入れましょう。ま、CPAN モジュール使ってインストールすりゃ一発じゃけえね・・・と思ったんだけど、いきなり、

...
make: *** [Magick.o] エラー 1
  /usr/bin/make  -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible

と、エラーで終わっちゃいましたよ、インストール。

入ってる ImageMagick 本体のバージョンが 6.2.8 で、Perl モジュールは 6.5.9 狙いなので、そのせいかねえ・・・
今の ImageMagick は RPM パッケージでインストールされているようなので、

yum info ImageMagick

で、現行バージョン調べてみたら、このサーバ OS 用の最新バージョンは 6.2.8.0 だった。つまり、最新パッケージのバージョンが更新されてないわけだ。

仕方無いので、

yum remove ImageMagick

でパッケージを削除して、ソースから Perl モジュールに合ったバージョンのものをインストールすることにした。

ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.5.9-10.tar.gz

を取ってきて、configure して make & make install。
問題なく本体のインストールは終了。ldconfig 実行してライブラリのパスを通したら、もう一度 CPAN モジュールでインストール実行。

# perl -MCPAN -e shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Image::Magick
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
  Database was generated on Tue, 20 Apr 2010 17:27:01 GMT
Image::Magick is up to date.

あれれ?何か、ものすごくあっけなく終わっちゃったんですけど?(^^;
ホンマに大丈夫かいな?

心配だったので、簡単なプログラム作って実験。

# cat > image_magic_test.pl
use Image::Magick;

{

        my $new_path    = "new_file.gif";

        my $path        = <STDIN>;
        chomp $path;

        my $image = Image::Magick->new;
        $image->Read("$path");

        my($now_x, $now_y) = $image->Get('width', 'height');

        print "SIZE X=$now_x Y=$now_y\n";

        my $max_x       = 1000;
        my $max_y       = 1000;

        $image->Resize(
                width  => $max_x,
                height => $max_y,
                blur   => 1.2
        );

        $image->Write("$new_path");

}
^D
# perl image_magic_test.pl
/var/www/icons/image2.gif
SIZE X=20 Y=22
# ls -la new_file.gif
-rw-r--r-- 1 root root 321404  4月 22 12:30 new_file.gif
# perl image_magic_test.pl
new_file.gif
SIZE X=1000 Y=1000

うむ。20x22 の大きさのアイコンを指定して、1000x1000 の大きさにサイズ変更して出力するプログラムなんだが、ちゃんと動いたな。

これで大丈夫でありましょう。

昨日から、MTOS4 がインストール出来なくて困っていたのだが、やっと解決した。

mt-wizard.cgi の実行で、mt-static の位置を正しく指定しても、「エラー: 'http://www.exsample.jp/mt-static/'が見つかりませんでした。ファイルをmt-staticディレクトリに移動するか、設定を修正してください。」と出ちゃう。

もちろん、ブラウザで http://www.exsample.jp/mt-static/ にアクセスすれば、「mt-static - OK」もちゃんと表示されるので「指定は合ってる」のに・・・だ。

結局、原因はサーバ側で www.exsample.jp の名前が引けてないからだった。

実は、このサーバのホスト名で使用するドメインがまだ取得できてなくて、開発機(Windows)の hosts ファイルに

202.221.XXX.XXX www.exsample.jp

と指定してアクセスしている状態なのである。

で、どうも、mt-wizard.cgi の中で LWP モジュールを使って、実際に http://www.exsample.jp/mt-static/ にアクセスして存在チェックをしているようなのだ。その結果(ホスト名が引けないので当然アクセス出来ず)、「mt-static - OK」が返ってこなくてエラーになっているようだ。

ということで、手動で mt-config.cgi を書いちゃえば良いんだけど、他のところでも名前が引けない故のエラーが発生すると面倒なので、サーバの /etc/hosts に

127.0.0.1 localhost.localdomain localhost www.exsample.jp

と、www.exsample.jp を追加してやった。

LWP でちゃんと hosts 見ているか心配だったが、これで無事 OK となった。

現在、MTOS にて情報発信サイト作成中。

で、MTOS のカスタマイズは、藤本壱氏の「MTOS活用テクニック」に記載されている「フィールドをカスタムフィールド風に追加する手順」を参考に行っているのだが、MTOS5 では管理画面の JavaScript が jQuery ベースに変更されたので、この手順をそのまま使えない。

今回は工数的にもスケジュール的にも独自のプラグインを作成するのは難しい。そのため、当初は MTOS5 でと考えていたのだが、MTOS4 の最新版である 4.34-ja をベースにすることにした。

ちなみに、うちのブログは 4.26-ja なので、4.3 系の使用は初めてである。

んで、インストールしてみたら、いきなり「???」なところが。

ブログ記事の編集画面に 4.2系ではなかった「アイテム」という項目が増えているのだが、そこに「entry 二関連づけられたアイテムはありません。」と表示されているのである。
「に」と「二」の間違いだ・・・(^^;

これは、mt/lib/MT/L10N/ja.pm 内の記述の間違いである。(grep したら引っかかる)
3029行目が該当箇所なので修正。

んで、今回は「公開終了日」という項目を追加するので、ついでに「公開日」を「公開開始日」に変更。

さて、じゃ、カスタマイズ作業に入るとしよう。

一応、(本気でハックしたことは無いが)MovableType も 3 の頃からの付き合いなので、先日 MTOS5 をインストールした時もついつい今までの習慣で mt-config.cgi を自分で編集して put したが、MT5 からは Web 画面の「環境設定ウィザード」で自動生成するのが推奨されているようである。

つーことで、先日入れた MTOS5 を一旦全部消して入れ直してみた。

なるほど。
全ファイルをサーバ上に put して、cgi に実行権与えて(必要であれば、httpd の実行ユーザで更新が行われるディレクトリやファイルの権限を修正して)、mt.cgi とかにアクセスすれば、セットアップが済んでいないので

http://www.exsample.jp/mt/mt-wizard.cgi

に強制的にリダイレクトされて、環境設定ウィザードの開始である。

なるほど、簡単だな。(もちろん、まったく知識の無い人間では厳しいが(^^;)


20100409_db_test.jpg

この間「MTOS で MySQL の Socket が見つからない時」で書いた MySQL の Socket ファイルのパスも(「高度な設定」リンクをクリックしなければいけないが)、画面に「データベースソケット」という項目があるのでここで入力すれば良い。
Socket のパスが /var/lib/mysql/mysql.sock ではない人は必ず設定しようね!

まあ、ただ、こういう具合に「一見簡単」なインタフェースを用意されると、かえってうちらのような業者は面倒くさいことになるんだよな。

「中途半端に知識があるお客さんのチャレンジ」が始まるからだ。(^^;

絶対、こういうインタフェースがあると「自分でやる」と言い出すお客さんが出てくるのだ。それはかまわない。俺らも、やってない作業に金をくれ」とは言わないので。是非自分で頑張ってコスト削減に励んでほしい。
・・・でも、「質問はタダ」とは思わないでほしい。(^^;

絶対、これ、「DB の接続テストが OK にならんのじゃけど、なんで?」と聞いてくるお客さん、いるよなあ。(^^;
そこから原因調べて「こうすればいいですよ」とアドバイスするところ、そこが正に俺らの仕事なわけで「タダではない」んですよ!俺らに相談したところで「既に自分の力だけでやっているのではない」んですよ!

・・・ってことを、ちゃんと認識してほしいな。社会人として。:-)

と、そんなことを思っているうちに作業は終了した。楽になったものだ。

MovableType をベースにする案件があるので、自社サーバに MTOS5 をセットアップしていたのだが、対話式インストールウィザードの実行で

Connection error: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

というエラーが出てしまう。

まあ、読んで字の如く「Socket が見つからないので MySQL デーモンと Socket 通信が出来ませんぜ」ということだろう。

そりゃそうだ。
Socket の位置は /var/lib/mysql/mysql.sock ではないもの。

現在テスト機で動かしている MySQL は、

socket = /tmp/mysql.sock

という設定で実行している。
ちなみに、同じサーバで某地域 SNS(OpenPNE ベース)を動かしていて、PHP から MySQL の利用は問題なく行われているし、拡張機能のいくつかを Perl で組んで実装しているので Perl からの接続も問題無い。

ということで、これは MovableType 側の問題だ。

で、ざっと grep かけて Socket のパスをどこで指定しているか探してみたが分からなかったので、何か情報は無いかと思ってググってみたら・・・とんでもねえ。
この件に関して記事を書いてるブログはけっこうあるのだが、ほとんどが、

/etc/my.cnf の socket の値を /var/lib/mysql/mysql.sock に変更して MySQL を再起動しましょう

と説明しているのだ。(驚)

ええ???アプリケーション側の事情にデーモン側が設定変更して合わせるの?(^^;
とんでもねえ!そんな対応、下の下の対応だ。
どこぞの素人が書いた記事が、これまた素人によってどんどん拡散していってるんじゃないのか?こえ~(笑)

正解は、mt-config.cgi に

DBSocket /tmp/mysql.sock

という記述を追加する・・・だ。

このアーカイブについて

このページには、2010年4月以降に書かれたブログ記事のうちMovableTypeカテゴリに属しているものが含まれています。

前のアーカイブはMovableType: 2009年12月です。

次のアーカイブはMovableType: 2010年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら