印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxMovableTypePhoto Vine Linux 4.1 への移行を試すが元に戻す

Vine Linux 4.1 がリリースされた。自宅サーバの OS のバージョンアップを試みたが失敗した。その格闘の記録である。

■ ■ ■

2007年2月に Vine Linux 4.1 が公開された(2007,02,22 Vine Linux 4.1 を公開)。現在このサイトが使っているのは Vine Linux 3.2 で安定動作しているが,新バージョンに移行したい。最大の魅力は,Kernel-2.6 では SpeedStep が正しく動作するようになったということである。SpeedStep とは,CPU の動作速度を変える機能で,Intel の Mobile Pentium III に搭載されている(SpeedStepとは 【IST】 - 意味・解説 : IT用語辞典 e-Words)。Kernel-2.4 にも対応しているが正確に動作しないので,かなり苦労してきた。

大杉である。以下は,週末の明け方,Web サーバへのアクセスが最も少なくなる時間を狙ってバージョンアップを試みた結果である。結局,移行はできなかったのだが,つまずく点が分かっただけでもよしとしよう。

ブログのデータとアクセスログが入ったハードディスク
ブログのデータとアクセスログが入ったハードディスク


データの入ったハードディスク。ちっぽけなものだが,とても大切なものなのだ。

インストール CD の作成

Vine Linux の1つの魅力に,インストール CD が1枚だということがある。CD の ISO イメージは Vine Linux のミラーサイトからダウンロードすることができる(Vine Linux)。イメージが正しくダウンロードできたかどうかは,チェックサムで調べることができる(ダウンロードありがとうございます)。しかし,なぜか Cygwin の sha1sum では失敗してしまう。C:\temp にイメージを置いて実行した結果は次の通り。

/cygdrive/c/temp$ sha1sum -c Vine41-i386.iso.sha1sum
Vine41-i386.iso: FAILED
sha1sum: WARNING: 1 of 1 computed checksum did NOT match

イメージが壊れているのかというと,そうではない。

wSHA1sum の結果
wSHA1sum の結果


別のアプリケーション wSHA1sum wSHA1sum では成功するのだ。Cygwin の sha1sum がダメなのだろうか? バージョンは sha1sum (GNU coreutils) 5.97 であった。

OS のインストール

インストールはとても簡単。CD からブートしてメニューにしたがって進めていけばよい。インストールの種類としては「サーバ」を選択し,サーバに関連するパッケージをすべて選択した。オプションの選択が終わるとインストールが始まり,30分程度で完了した。

PHP

PHP はインストールされないので,apt-get する。

# apt-get install php5 php5-apache2 php5-pear php5-mysql

このあたりで,Apache が Apache2 になっていることに気づく。

Movable Type 関連

Perl モジュール

Movable Type 2.661 に必要な Perl モジュールは,基本的には CPAN から,その他は Vine のパッケージからインストールする。

  • Jcode
  • HTML::Template
  • Image::Size
  • File::Spec
  • File::Temp
  • CGI::Cookie
  • LWP::UserAgent
  • SOAP::Lite

DBD::mysql のインストールには,mysql の他に zlib-devel が必要だった。

# apt-get install MySQL-server MySQL-client MySQL-devel
# apt-get install zlib-devel
# cpan
cpan> install DBD::mysql

Image::Magick は CPAN でインストールできなかったので,apt-get で。

# apt-get install ImageMagick-perl

その他のオプショナルモジュールをインストールする。

GD は apt-get でインストールしてしまったが,

# apt-get install perl-GD

CPAN 経由でできたかも知れない。GD のパッケージ名は「perl-GD」,Image:Magick のパッケージ名は「ImageMagick-perl」となっていて,「perl」は前につくことや後につくことがある。統一されていない。

MySQL データベースのリストア

あらかじめ Movable Type の MySQL 形式データベースをバックアップしておく。

$ mysqldump -a --user=ユーザ名 --password=パスワード データベース名 > FILENAME.mysql

新OSはデータベースを新規に作成する (nlog(n): Berkeley DB から MySQL への移行を試す)。

# mysql
mysql> create database データベース名 DEFAULT CHARACTER SET ujis;
mysql> grant all privileges on データベース名.* to ユーザ名@localhost identified by 'パスワード';

このサイトで使っている文字コードは EUC-JP である。EUC-JP のまま新しいデータベースに移行するとき,公式マニュアル(Movable Type 3.3 マニュアル - Movable Type環境のバックアップ(Linux, BSD, Mac OS X))の通り行っても上手くいかない。

(上手くいかない例)

$ mysql  --user=ユーザ名 --password=パスワード データベース名 < FILENAME.mysql

データベース作成では「DEFAULT CHARACTER SET ujis」を,リストアする際は「--default-character-set=ujis」オプションをつける必要がある。ujis は MySQL において EUC-JP を意味する (文字コードが UTF-8 の場合は,MySQL では utf8 と書く)。

$ mysql  --user=ユーザ名 --password=パスワード --default-character-set=ujis データベース名 < FILENAME.mysql

さらに,Vine Linx 4.1 では,/etc/my.cnf を新規作成して MySQL のオプションを設定する必要がある。これがないと文字化けする。公式サイトでは次のようにすることになっているが(Movable Type 3.3 マニュアル - データベースの設定(MySQL)),これも上手く行かない。

(上手くいかない例)

[mysqld]
default-character-set=ujis

[client]
default-character-set=ujis

次のように書けば上手くいく。これで文字化け問題は解消である。

[mysqld]
skip-character-set-client-handshake

my.cnf の設定後は MySQL を再起動する必要がある。

# /etc/init.d/mysql restart

設定の方法と文字化けの関連は次のようなものになった。全ての組み合わせではない。

文字化けパターン1
文字化けパターン1


上の画像は,データベース作成時の「DEFAULT CHARACTER SET ujis」指定なし,リストア時の「--default-character-set=ujis」なしの場合。管理画面の文字は化けていないのに,記事タイトルが化けている。データだけが文字化けしているということである。

文字化けパターン2
文字化けパターン2


データベース作成時の「DEFAULT CHARACTER SET ujis」指定あり,リストア時の「--default-character-set=ujis」なしの場合。

文字化けパターン3
文字化けパターン3


データベース作成時の「DEFAULT CHARACTER SET ujis」指定あり,リストア時の「--default-character-set=ujis」なしで,my.cnf を公式サイトでの指定にした場合。

不可解なエラー

ここまでやって,サイトの再構築ができることを確認した。これでようやく移行完了か,と思ってコメント投稿をしてみると,エラーが表示されることが分かった。

An error occurred:
Month '-1' out of range 0..11 at lib/MT/Template/Context.pm line 1081

月を示す数字が「-1」になってしまうらしい。どこがおかしいのか分からない。エラーは表示されるが,コメントはサイトに反映される,というのが微妙なところ。MySQL でダメなのなら,バークレーDBの場合はどうかと試すと,別のエラーが表示された。こちらはサイトにも反映されない。

An error occurred:
Rebuild failed: Building entry '女性専用車両について知らなかったこと' failed: Build error in template 'Individual Entry Archive': Error in <MTEntryIfAllowComments> tag: Error in <MTCommentDate> tag: You used an MTCommentDate tag without a date context set up.

八方塞{はっぽうふさがり},いや,二方ふさがりか。移行を断念した唯一にして最大の理由はこれである。ダンプした MySQL のファイルにどこか問題があるのだろうか。残るは,ディレクトリをまるごとコピーするという方法くらいか(Bugzilla 2.16 日本語版 - データベースのバックアップ)。ちょっとやってみたが,上手くいかない。むー。

TeraTerm Pro で SSH 接続できない

作業ログを残したいと思ったので,TeraTerm Pro で接続しようとしたのだが,失敗する。デフォルトでは telnet のポートは有効になっていないので,telnet 接続できない。TTSSH で接続しようとすると,エラーが表示されて TeraTerm のウィンドウも消えてしまうのだ。

TTSSH のエラー
TTSSH のエラー


This program does not understand the server's version of the protocol.

原因は,TTSSH 拡張がサポートしているのは SSH1 で,Vine Linux 4.1 は SSH2 だということである。TTSSH については,Tera Term Home Page からリンクがあるが,リンク先は消失している。日本語版も存在するが,現在サポートしているのは SSH1 のみである(TTSSH日本語版)。

SSH2 をサポートする拡張が開発されている(SourceForge.jp: Project Info - UTF-8 TeraTerm Pro with TTSSH2)。クリッカブルURLにも対応しているそうだ(窓の杜 - 【NEWS】UTF-8、SSH2対応のターミナルソフト「UTF-8 TeraTerm Pro with TTSSH2」)。

Cygwin の ssh コマンドは SSH2 に対応しているが,日本語の表示ができないのが難点。

Apache2

Web サーバが Apache 1.3 から Apache 2.2 となった。大きな変更なので,どうなることがドキドキしたが,通常のアクセスについては問題なかった。問題は SSL での接続である。SSL 関連のディレクティブを有効にして apache2 を再起動すると,次のエラーが表示されて,再起動に失敗してしまう。

Address already in use: make_sock: could not bind to address 0.0.0.0:443

Gentoo Linux Users Group Japan には次のように解説されている。

このエラーは起動中に発生し、矛盾した複数のListenディレクティブが設定されているのが原因です。この問題を解決するには、設定でListenをgrepし各ディレクティブごとに修正します。

修正のしかたが分からなかった…(ダメポ)。Apache とは書き方が違うらしい (原因が判明しました→nlog(n): Apache 1.3 から 2.2 への移行方針)。他にも Apache では許されていたのに Apache2 では許されなくなった書き方がある。バーチャルホストディレクティブである。Apache では,次の書き方でよかった。

NameVirtualHost *:80
<VirtualHost *>
ServerName nlogn.ath.cx
...
</VirtualHost>

Apache2 では,「*」だけではダメで,「*:80」としなければ起動できなかった。

NameVirtualHost *:80
<VirtualHost *:80>
ServerName nlogn.ath.cx
...
</VirtualHost>

おわりに

まとまっていないが,情報が書いてあるというだけでも役に立つことはあるだろうということで,このあたりで終了。週末は休みだったはずなのに,休むどころか寝不足が加速してしまった。

2007年8月27日追記:
Vine Linux 4.1 にアップグレードしました (nlog(n): サーバの OS を Vine Linux 3.2 から 4.1 へ更新)。

Posted by n at 2007-04-16 22:52 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

> Cygwin の sha1sum では失敗してしまう。

アスキーモードでの計算になっていませんでしょうか?


wSHA1sum の URL が変わりました。m(__)m

旧: http://kkkon.hp.insoseek.co.jp/

新: http://kkkon.sakura.ne.jp/

Posted by: KK.Kon at November 18, 2010 04:22

KK.Kon さん
コメントありがとうございます。バイナリモードは意味がないとのことです。
==
$ sha1sum -bc Vine51-i386-CD.iso.sha1sum
sha1sum: --binary と --text オプションはチェックサムの確認時には無意味です
詳しくは `sha1sum --help' を実行して下さい.
==
もしかすると,Cygwin を DOS モードでインストールしているからなのかも知れません。
以前 Unix モードに切り替えたところ,DOS モードに戻せなくなったことがあるので試すのを躊躇しています。

wSHA1sum のリンク先を更新しました。

Posted by: n at November 19, 2010 22:08
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?