Fedora Core 5がリリースされて早数ヶ月。
今のLinuxサーバのFedora Core 4からアップグレードするべきか、Fedora Core 1, 2, 3, 4とアップグレードを繰り返してきたのでそろそろ次のサーバ用PCを用意してそちらに新規に構築すべきか迷っているうちにこんな時期になってしまいました。
途中、Windows上でVMware ServerなりMicrosoft Virtual Serverなりを立てておいて、Linuxサーバはその上で運用し実PCを1台削減するなんて妄想したりもしたのですが、結局今のLinuxサーバをアップグレードすることにしました。
というわけで、Fedora Core 4をFedora Core 5にアップグレードするには - @ITを参考にしながら作業開始。
# yum -y upgrade
を実行するとtrip-wireが依存しているライブラリ(libcrypto.so)がないとか言われるので、とりあえずtrip-wireはyum removeしておく。
んで、再度upgradeすると、1000個弱のrpmファイルのダウンロード、インストールに数時間かかった後アップグレード完了。
21時ごろ始めたのだけど、気がついたら眠ってしまっていて3時ごろ起床したときには終わってました。
この段階で、/etc/httpd/conf/httpd.confが新しいものに置き換わってしまっていて、このblogも含め、WebサイトがすべてFedora Coreのデフォルトになってしまっていたのだけど、とりあえず再起動。
再起動するとなぜかPPPoEに失敗してネットにつながらなくなっているので原因を探ったところ、eth0とeth1が入れ替わってしまっていた模様。 /etc/sysconfig/network-script/ifcfg-ppp0あたりを書き換えてeth1を使うようにしたところ無事接続成功。
Apacheは/etc/httpd/conf/httpd.conf.rpmsaveに以前の設定ファイルが対比されているのだけど、モジュールのディレクトリが変わったりしたらしくこれをそのままリネームしても再起動できませんでした。
んでしょうがないので、新しいhttpd.confに各種設定を1つずつコピーアンドペースト。
Apache 2流に個々のVirtual Serverの設定とかは/etc/httpd/conf.d/のほうに書いてあればよかったのだろうけど、Apache 1.x時代からのhttpd.confなので、ほぼ全部の設定がこのファイルに書いてあるので厄介なことになったのでした。
次アップグレードするまでには設定ファイルを分割しよう。
んで、httpd再起動。
最近、IMAPデーモンをCourier-IMAPからdovecotに移行したのだけど、dovecotも0.99 -> 1.0にアップグレードしたことで設定が微妙に変わったみたい。 新しい設定ファイルにサーバ証明書の設定などを書き加えてIMAPS再起動。
これでOKかなと思って、ここまでの顛末をblogに書こうとしたらPostgreSQLが起動していないというエラー。 んじゃ、ということで
/etc/init.d/postgres start
を実行したところ真っ青になりました。
「PostgreSQLのバージョンが8.0.3から8.1に上がってるorz」
PostgreSQLはバージョンが0.1でも上がろうことなら、データベースファイルの互換性がなくなって起動不能に陥るという素敵な仕様なのでした。
本来、PostgreSQLのバージョンをあげる前にはデータベースの内容をテキストファイルにdumpしておかないといけないのですが、当然そんなことをしているわけもなく。
とりあえず、8.0.x系のPostgreSQLを用意すればいいということで、まずはFedora Core 5標準の8.1はアンインストールして、PostgreSQLのサイトからFedora Core 5向けの8.0.xを落としてきてインストールしてみる作戦。 んが、postgresql-libs 8.1を消さないと8.0.xはインストールできないが、postgresql-libs 8.1にはhttpdとか多くのrpmが依存していて消すのは無謀っぽい模様。
次の作戦として、Virtual Server上にFedora Core 4をインストールしてそこにPostgreSQL 8.0.xを立てる作戦に。
インストールには時間がかかるし、ワールドカップ3位決定戦も終わってしまったので、インストール作業を始めたところで就寝しました。
起床後はいよいよ復旧作業。
Fedora Core 5のマシンのほうから/var/lib/pgsql/dataをtarで固めてVirtual Server上の臨時Fedora Core 4にコピー。
そしてPostgreSQL 8.0.xを起動してデータベースをdump。
sudo -u postgres /usr/bin/pg_dump -h localhost -U pguser_name pgdb_name > hogehoge.dump
で、ダンプしたファイルをFedora Core 5のマシンにコピー。 Fedora Core 5側の/var/lib/pgsql/dataを削除した状態で/etc/init.d/postgres startするとイニシャライズされるので、そのあとユーザの追加とデータベースの追加を実行。 そして最後にdumpファイルのインポートを行います。
/etc/init.d/postgres start sudo -u postgres /usr/bin/createuser -P pguser_name sudo -u postgres /usr/bin/createdb -O pguser_name -E utf-8 pgdb_name sudo -u postgres /usr/bin/psql pgdb_name < hogehoge.dump /etc/init.d/postgres restart
これでようやく一通りの運用を再開できるようになったのでした。
教訓、アップグレードの前には各種バックアップをちゃんと行うこと。
コメントする