FLNet.org - リニューアルプロジェクト

背景

現在、FLNet.org のサーバには PHP4 がインストールされて稼働していますが、 その PHP4 のメンテナンスが今年8月8日をもって終了ということになりました。 今後 PHP4 で発見されるセキュリティホールやバグなどが修正されなくなるため、 速やかに後継のバージョンである PHP5 に移行する必要があります。

普段ならば一気に実行環境をアップグレードするところですが、PHP4 と PHP5 には一部互換がない部分があるため 「バージョン上げました。」では動作しないプログラムが発生する可能性があります。 そこで、どうせならシステム全体を一気にリニューアルしようということで、 下記のような大幅なシステムリニューアルを行いたいと思います。

利用者のみなさんへの告知がギリギリになってしまったこと、期限が迫ってる都合で移行期間が短すぎることなど、 いくつか問題はありますが、よろしくお願いします。

現状

MySQL, PostgreSQL 以外の機能はすべて central.flnet.org マシンで稼働しています。 主なプログラムのバージョンは以下の通り。

リニューアル後の計画

central.flnet.org の機能をいくつかのマシンに分割します。 また、新たに LDAP 認証を導入し、各サーバのアカウントを統一します。 ドメイン名の振り方が変わっているので注意。

移行スケジュール

Phase 1. 07/01
まずはマシンを増やすにあたってアカウント管理のために LDAP サーバを用意し、 central.flnet.org のアカウントデータをすべて移行します。
Phase 2. 07/18
pub.hossy.flnet.org の稼働を開始します。拡張子が .php と .php4 のアクセスのみ central.flnet.org へ転送しますが、その他の環境はすべて pub.hossy.flnet.org に切り替わります。 新旧どちらの環境も一応稼働しているので、この時点で .htaccess や mod_layout はどちらのバージョンでも 問題なく実行される設定が必要です。
Phase 3. 08/01
拡張子 .php のアクセスを転送せずに pub.hossy.flnet.org で実行するように切り替えます。 この時点までに .php のプログラムは PHP5 の環境で動作することを確認してください。 .php4 は以前のまま central.flnet.org に転送します。
Phase 4. 08/08
旧環境 central.flnet.org の公開サービスを停止します。 .php4 はすべてデッドリンクになるため注意してください。 ただし、メールなど他の機能はしばらくこの環境で提供します。

移行の方法

基本的に各項目とも無関係の人は何もしなくてもいいように行います。関係のある人は確認をお願いします。

PHP4→PHP5
拡張子によって実行環境を分けます。

PHP4, 5 両方での動作が確認できたものは .php のままにしておけば、Phase 3. に移行する際に 自動的に PHP5 環境で実行されるよう切り替わります。

バージョンに依存することが確認された場合はバージョンに依存しないように変更してください。 もしくは、.php4, .php5 と別バージョンのプログラムを用意すれば Phase 2, 3 を通じて各々の環境で動作します。

Apache 1.3→Apache 2.2
Phase 2. から両方同時に稼働させます。 拡張機能が若干変わっているので、.htaccess にバージョンに依存することを書いている人は どちらの環境でも 500 Internal Error が発生しないように気を付けてください。 片方でのみ機能する記述をしたい場合は以下のように条件付きで記述してください。
<IfModule php5_module>
 # pub.hossy.flnet.org 環境用の記述 ( Apache 2.2 / PHP5 )
</IfModule>
<IfModule mod_php4.c>
 # central.hossy.flnet.org 環境用の記述 ( Apache 1.3 / PHP4 )
</IfModule>
たとえば Phase 2, 3 の段階で「.php4 は動くのに .php5 は Internal Error」とか その逆の場合はこれも疑ってみてください。
mod_layout 3.2→mod_layout 5.1
Phase 2. から両方同時に稼働させます。 Apache のバージョンの都合から、mod_layout の設定項目が変わっています。 mod_layout 5.1 では LayoutMerge がなくなり AddOutputFilterByType の設定が必要になっています。 両方の環境で動かすため、たとえば以下のように記述してください。
<IfModule php5_module>
 AddOutputFilterByType LAYOUT text/html
</IfModule>
<IfModule mod_php4.c>
 LayoutMerge On
</IfModule>
LayoutHeader ./header.txt
LayoutFooter ./footer.txt
sql.flnet.org→sql2.hossy.flnet.org
そろそろ MySQL も PostgreSQL も古くなってきたので、最新版を sql2.hossy.flnet.org にインストールします。 データの移行と接続先の変更が必要です。Phase 2. の半ば頃に用意する予定ですので、 関係のある方にはその頃に個別にお知らせします。
JavaServlet 環境の移行
これは時期未定です。Phase 2. の間に用意して移行方法を検討しつつ、関係のある方に個別でお知らせします。

FLNet.org - リニューアルプロジェクトの結果

更新後のシステム構成

予定通り、以下のような構成で FLNet.org サーバが稼働しています。

以前と変わった点

この変更に伴い、いくつか変更点があります。

PHPのバージョン

php4 から php5 に変更になりました。一部文法など互換性のない部分があるため、 コードを書く際には注意してください。

パスワード変更方法

認証を LDAP に移行したため、以前の passwd コマンドによるパスワード変更ができなくなりました。 代用として以下のコマンドを利用してください。

$ /usr/local/bin/passwd

SERVER_ANNOUNCE 環境変数

サーバのメンテナンス予告など、管理に伴う連絡を行うために SERVER_ANNOUNCE 環境変数に EUC_JP で連絡の文章を代入してありましたが、SuEXEC のセキュリティチェックによって遮断されるため、 新たに HTTP_SERVER_ANNOUNCE 環境変数にも同様の文章を代入することにしました。

CGI などで利用する場合は新しい方をご利用ください。

なお、古い SERVER_ANNOUNCE 環境変数も継続して更新しますので、現在動いているページは変更の必要はありません。

mod_layout

Apache 2.2 に対応したバージョンをインストールしたところ、.htaccess の書き方に互換性がなくなりました。

  1. LayoutMergeディレクティブがなくなりました。残っていると 500 Internal Error になるため注意してください。
  2. 新しく以下の記述が必要になりました。これがないと有効になりませんので注意してください。
    AddOutputFilterByType LAYOUT text/html

MySQL, PostgreSQL

新しく sql2.hossy.flnet.org マシンに最新バージョンをインストールしました。 既に sql.flnet.org にアカウントのあった方には sql2 にもアカウントを発行してメール送りましたので、 できるだけ早めに移行していただければ幸いです。

移行が完了しましたら DROP DATABASE していただけると、こちらでわかりやすくて助かります。

なお、以後の SQL サーバのアカウントの申請に関しましては、特に古い方を指定されない限りは 新しいサーバでアカウントを発行しますのでご了承願います。

さいごに

突然のことで、しかも移行期間も短い上に説明も検証も不足な点が多くてすいませんでした。

にも関わらず、こちらのスケジュールどおりに皆さん対応していただけたことに感謝いたします。ありがとうございました。

そしてこれからも FLNet.org をよろしくお願いいたします。

Valid HTML 4.01! | Valid CSS!