-
entry001322
comments
先週 2008/06/24 に CentOS 5.2 がリリースされました。
- [CentOS-announce] Release for CentOS-5.2 i386 and x86_64
- Manuals/ReleaseNotes/CentOS5.2 - CentOS Wiki
ぼくの自宅サーバーは CentOS 4.6 が稼動しており、そろそろバージョンを上げたいなと思っていたところなので、せっかくだからと、最新版に手を出してしまいました。 これが間違いの元だった・・・。 なにやらいろいろと苦労したのでメモを残して起きます。
CentOS 5.2CentOS 5.2 はリリースされてからまだ日も浅く、それほど情報はありませんが、4.x から 5.1 にアップグレードした記録を見る限りは yum upgrade では上げられそうにありません。 ここは素直に DVD の ISO イメージを手に入れ、インストーラーでアップグレードすることにします。 いや、それでもあまりオススメされていない手順ですけどね。
ここでまず最初の問題に遭遇。 自宅サーバーの光学ドライブは CD-ROM でした・・・。 これは自分の問題であって CentOS の問題ではないので仕方ない。 筐体をあけて、余っていた DVD を読み書きできるコンボ・ドライブを装着して事なきを得ました。 アップグレード・インストールの手順自体は至って簡単。 パッケージをインストールするのに非常に時間がかかりましたが、これはリリース・ノートにも書かれているようなメモリー容量の問題のような気がしています。 まぁ、待てば終わるので気長に。
アップグレードが終わったら、
$ wget http://ftp2.riken.jp/Linux/centos/5.2/os/i386/RPM-GPG-KEY-CentOS-5 $ sudo rpm --import RPM-GPG-KEY-CentOS-5 $ sudo yum update
としてパッケージを最新の状態にしておきましょう。
Apacheアップグレード直後の起動時に、サービスの起動がいくつか FAILED になっているのが見えました。 まぁ、バージョンを大幅に上げたからねぇ。 予想される範囲内。
そのフェールしているものの一つが Apache でした。 CentOS4.6 では Apache2.0 だったのが、CentOS5.2 では Apache2.2 になっています。 これに伴い、モジュールの構成などが大幅に変わっています。 特に認証周りが顕著。
LoadModule ディレクティブなどを新しい設定ファイル(/etc/httpd/conf/httpd.conf.rpmnew として保存されている)を参考にして書き直します。 そして /etc/rc.d/init.d/httpd start として Apache を起動します。
dovecotIMAP サーバーとして導入している dovecot は 0.99 から 1.0 に上がっています。 メジャー・バージョンが変わっているだけあって、設定ファイルにいろいろと変更が発生していました。
プロトコルごとの LISTEN の設定は次のようにブレースでまとめるようになっていました。
protocols = imap imaps protocol imap { listen = *:143 ssl_listen = *:993 }続いては SSL の設定です。
ssl_cert_file = /etc/ssl/service.crt ssl_key_file = /etc/ssl/common.nokey
最後に認証の設定。 ここもブレースでまとめるように変更されていました。 認証は dovecot 用のユーザー・ファイルを独自にメンテナンスしていたので、それを指定します。
login_dir = /var/run/dovecot/login passdb passwd-file { args = /etc/dovecot.passwd } userdb passwd-file { args = /etc/dovecot.passwd }最後に /etc/rc.d/init.d/dovecot restart として dovecot を再起動します。
SquirrelMailApache と dovecot が動くようになると、次は WebMail システムの SquirrelMail の設定を見直しました。 なかなか動かなかったのですが、結局は
$ sudo chown -R apahce:apache /var/lib/php
が正解。 それって SquirrelMail というよりも PHP の問題・・・。
BINDbind は 9.2.4 から 9.3.4 に上がりました。 RPM が古い設定ファイルを /var/named/chroot/etc/named.conf.rpmsave としてバックアップするので、これを新しい named.conf に上書きすると問題なく動作しました。 Apache といい、この BIND といい、きちんと backward compatibility が保たれているのは素晴らしいですな。
PostgreSQL一番苦労したのが PostgreSQL。 CentOS4.6 では 7.4 だったものが 8.1 になっています。 PostgreSQL は小数点以下一桁目が変わるとデータのマイグレーションが必要になります。 今回はそもそも最上位桁が上がっているのでもう必要も必要。 本来は OS のアップグレード前に pg_dumpall で書き出しておくべきだったのですが、まったく気にせずにアップグレードしてしまいました。
残念というか当然というか PostgreSQL8.1 では 7.4 のデータ・ファイルを読むことができません。 CentOS5.2 上に PostgreSQL7.4 を導入することも検討したのですが、なかなか難しそうだったので結局は VMware 上に CentOS4.6 を導入してデータを吸い出すことにしました。
新たに導入した CentOS4.6 の PostgreSQL7.4 を停止し、/var/lib/pgsql の中身をごっそりと旧データ・ファイルで上書きして再起動します。 最初はセオリーどおり
@vmware $ sudo su postgres @vmware $ pg_dumpall > backup.dmp @vmware $ scp backup.dmp postgres@real:~/
@real $ sudo su postgres @real $ psql -f ~/backup.dmp
としたのですが、データの不正が発生してうまくいきません。 最終的には新マシンで
@real $ pg_dumpall -h vmware -U popsql | psql
として、直接パイプで流し込むことで移行できました。 失敗ケースが 7.4 の pg_dumpall で吸い出して 8.1 の psql で読んでいるのに対して、成功したケースは 8.1 の pg_dumpall を 7.4 のサーバーにつないで、その出力を 8.1 の psql で読んでいる状態です。 ということは、やはり一時的に両方のバージョンを用意する必要があったんですね。
移行とは直接関係ないのですが、PGDATA を切り替える方法です。
@real $ sudo /etc/rc.d/init.d/postgresql stop @real $ sudo vi /etc/sysconfig/pgsql/postgresql PGDATA=/opt/pgsql/data @real $ PGDATA=/opt/pgsql/data @real $ initdb @real $ sudo /etc/rc.d/init.d/postgresql start
SubversionSubversion は、その裏で使っている BerklyDB のバージョンが 4.2 から 4.3 へ上がっており、過去のリポジトリをそのままは読めない場合があります。 そのときは以下の手順を踏むことで解決するようです。
過去と同じバージョンの BerklyDB を持つ環境で、
$ svnadmin recovery ~/svnrepo $ rm `svnadmin list-unused-dblogs ~/svnrepo` $ rm ~/svnrepo/db/__db.00*
として余計なファイルを消しておきます。 多分、OS のアップグレード前に実施しておくのが本当は正しいんだろうね。 今回は PostgreSQL のアップグレードに使った CentOS4.6 環境を使いました。
TracTrac は、その稼働環境であるところの Python が 2.3 から 2.4 に上がっています。 Trac そのものの問題ではないのかもしれないけれど、案の定うまく動きませんでした。 そういえば WebAdmin plugin が Python2.3 用のものだったような気も・・・。 そこで一旦 rpm --erase trac してからあらためて yum install trac としてインストールしなおしました。 WebAdmin plugin も入れなおし。
$ wget http://trac.edgewall.org/raw-attachment/wiki/WebAdmin/TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip $ mkdir TracWebAdmin $ cd TracWebAdmin $ unzip ../TracWebAdmin-0.1.2dev_r4240-py2.4.egg.zip $ cd .. $ sudo easy_install TracWebAdmin-0.1.2dev_r4240-py2.4.egg
その他自作ツールPHP が 4.3 から 5.1 に上がったため、自作のツールの一部が動かなくなりました。 結構直したつもりなのだけれど、まだいくつか調子がおかしいです。
というわけで、軽い気持ちで始めた CentOS4.6 から 5.2 へのアップグレードはなかなか大変な作業でした。 でもま、最新版ってのは気持ちがいいですな。
MTEntryMore