FreeBSD 6.2へのバージョン・アップ
HOME BACK

サーバーOSはFreeBSD 4.10-RELEASEを使用しているが、今やFreeBSDも5系が終わり、7系の噂も聞こえてくる。現状でも特に問題ないが、私自身のスキル維持も兼ねてFreeBSD 6.2-RELEASEにアップすることにした。
サーバーのコンセプトは以前と同じで、外部向けのサービスはwebとsmtpのみである。ssh、ftp、pop等はLAN内のみに限定している。このあたりは筆者のスキル・レベルに合わせてある。

開発環境

現用サーバーはMini-ITXを使用したPCであるが、このPCを開発に使うとその間、サーバーの運用が停止してしまう。仕方ないので、1999年頃のATタイプのM/B、64MBメモリ、CyrixCPUというお粗末なPCを仮サーバー用として引っ張りだした。現用サーバーHDDをこのPCに装着して、主にLAN関係の設定を変更してリブートしたら、無事、仮サーバーとして動き出した。
この仮サーバーとしたPCはBIOSが古く、32GBまでのHDDしか認識しない。現用サーバーHDDは40GBであるが、ピン設定で32GBに容量を制限してあるので、Mini-ITXを使用したPCでも仮サーバーとした古いPCでも使用できる。
今回は80GBHDDにFreeBSD 6.2-RELEASEをインストールしようと思っているので、さすがに古いPCを開発用にするという訳にはいかない。実は、開発用に新しくPCを組むか、BIOSの制限のない中古PCを購入することも考えたが、もったいないので止めた。しかし、次のバージョンアップ時には最低でも80GBのHDDを認識できるPCを用意する必要がある。
筆者のサーバー運用では最低、3台のPCが必要である。1台目はサーバー本体、2台目は開発用兼サーバー予備用、3台目はGUIマシンである。3台目はGUIであれば、Xが入ったUNIX系でもWindowsPCでもOKである。筆者は別にUNIX使いでも何でもないので、WindowsPCを使っている。
サーバーにはXはインストールせず、メンテや開発はWindowsPCからsshでリモートアクセスして行っているので、サーバー本体にはディスプレーを接続する必要がない。接続はLANケーブル1本だけである。そのため、サーバー本体を隔離できれば、小型化や静音にこだわる必要は全くない。安定動作のためにこだわる必要があるのは冷却だけである。
筆者も当初、サーバーを屋根裏に置こうかと考えたが、夏場、屋根裏は40度以上の高温となってしまい断念した。人間様に快適な環境がサーバーにも快適な環境ということで、リビングのパソコンラックに押し込んである。そうなると小型化や静音ということになり、痛し痒しである。

インストール

FreeBSD 6.2-RELEASEはCD-ROMからブートしてFTP経由でインストールすることにする。 FreeBSDのサイトからブート用のisoイメージをダウンロードしてCD-Rに焼くが、この作業はWindowsPCで行った。Mini-ITXを使用したPCにCD-Rを装着して日本国内のFTPサイトからインストールした。
サーバー用途なのでX関係はインストールしない。インストールしたくてもとてもではないが、マシンパワーがついて行かない。インストールセットはDeveloperを選択し、sshログイン、inetdではftpdとpop3を有効にした。インストールが終了し、ps axで確認すると主なアプリ関係ではsendmail、sshd、inetdが立ち上がっていた。

sendmailでハマる

sshdが立ち上がっているので、SSH2対応のターミナルソフトを使ってWindowsPCからリモートで各種設定を行う。当然、仮サーバーもWindowsPCからアクセスできるので、設定ファイルのコピー・ペーストも簡単にできる。とりあえず、sendmailの設定から始めた。
サーバーでサービスしているのは外部向けのsmtpとLAN内向けのpopだけである。現用サーバーのMTAも同じSendmail 8.13.8なので都合がよい。/etc/mail以下の各種ファイルを現用サーバーを参考にして設定した。このあたりは以前のメモ1メモ2が役立った。
popもportsからqpooperの古いバージョンのものをインストールした。最初は、最新のqpopperをportsからインストールしたが、apopとかの設定が分からなかったので、古いバージョンのqpooper(QPOP version 2.53)をインストールしなおした。popはLAN内しかサービスしていないので、apopなしでも特に問題ない。
端末のWindowsPCからメールを出してみるが接続できない。それならばとサーバーからユーザー宛のメールを出し、それをWindowsPCでpopすると読み出すことができた。
%netstat -aで確認すると
Proto  Recv-Q  Send-Q Local Address Foreign Address (state)
tcp4   0    0    *.pop3     *.*     LISTEN
tcp4   0    0    *.ftp      *.*     LISTEN
tcp4   0    0    *.submission  *.*     LISTEN
tcp4   0    0    *.localhostsmtp *.*     LISTEN
tcp4   0    0    *.ssh      *.*     LISTEN
となっていた。現用サーバーでは
tcp4   0    0    *.smtp     *.*     LISTEN
となっており、smtpの挙動がおかしい。
%telnet サーバのIP smtp
で接続しようとすると拒否されてしまう。
submit.mcや/etc/hosts等の関係ありそうな設定ファイルをいじってみてもダメである。ネット検索でもそれらしい情報がヒットしない。もちろん、ps axで確認すると
632 ?? Ss  0:06.51 sendmail:accepting connections (sendmail)
636 ?? Is  0:00.21 sendmail:Queue runner@00:30:00 for /var/spool/clientmqueue
と問題なく起動している。
ところで、現用サーバーでは/etc/rc.confに
sendmail_enable="YES"
と記述されているが、FreeBSD 6.2ではこの記述がないが、sendmail自体は起動している。ダメ元でFreeBSD 6.2の/etc/rc.confにも
sendmail_enable="YES"
と記述してリブートしたら、今度はWindowsPCからメールを送信することができた。
%netstat -aで確認すると
tcp4 0 0 *.smtp *.* LISTEN
となっていた。これが判明するまでかなりの時間を費やしてしまった。
この状態でルーターの25ポートを開発用PCに関連づけて 不正中継をしないか確認する。おすすめのhttp://www.abuse.net/relay.htmlでチェックすると全項目、無事パスした。やれやれである。

fml

sendmailが動き始めたのでMLソフトのfmlをインストールする。自宅サーバーではいくつかのMLをハンドリングしているので、これらの環境を構築する必要がある。fmlをインストールし、基本的な設定をした後、ハンドリングしているMLのデータを現用サーバーから移設することにする。
インストールから設定までは以前、作ったメモのとおりである。メモではMTAとしてqmailを使っているが、今回はsendmailであるが、インストールまでは同じ手順である。 fmlの最新バージョンfml-4.0.3.tar.gzをwww.fml.orgからダウンロードし、インストールした。
testという名前のMLを作成する。ユーザーfmlでログインし
%/usr/local/fml/makefml newml test
で作成する。aliasを登録するためsuでrootになり
# cat /var/spool/ml/test/aliases >> /etc/aliases
#newaliases
でOKとなる。この後はメンバーの登録、configファイルの設定が必要であるが、すでに現用サーバーにはこれらのデータがあるので、開発用サーバーに移設する。
現用サーバーにも同じtestという名前のMLがあり、そのディレクトリーは/var/spool/ml/testであり、そこには各種設定ファイル、メンバーファイル、過去の投稿データ等が全て入っている。これらを一旦、WinPCにftpでダウンロードし、それを開発用サーバーの/var/spool/ml/testにアップすることで移設するわけである。
WinPCからftpで現用サーバーに接続する。その場合のユーザー名はfmlである。ディレクトリー/var/spool/ml/testのオーナーはfmlであるので、これでダウンロード、アップロードが可能となる。
他のMLも開発サーバーで作成し、データは現用サーバーから移設すればOKである。 この方法であれば、サーバーを運用しながら、データの移設が可能となる。

apache

Webサーバー・ソフトはApache 1.3.37をportsからインストールした。Apacheのファイル配置もFreeBSDのバージョンでずいぶんと変化している。今回はDocumentRootが/usr/local/www/dataとなっていた。Webでは特別なことを全くしていないので、httpd.confはオリジナルでも問題ないが、いくつか手直した。
cgiもカウンターだけなので、以前のメモを参考にしてインストールした。
データの移設はfmlと同じく、仮サーバーのコンテンツをftpで一旦、WindowsPCに落とし、それを開発用PCにアップする方法とした。

その他の設定

ipfilterも以前のメモを参考にして設定した。
FreeBSD6.2ではfreebsd-updateはデフォルトでインストールされていた。使い方は
#freebsd-update fetch
でアップデートすべきバイナリーバッチを確認し、アップデートすべきバイナリーバッチがある場合は、/usr/local/freebsd-updateへ格納されるので
#freebsd-update install
でインストールできる。
FreeBSD6.2をインストールした後、freebsd-updateを実行したら、いくつかの アップデートすべきバイナリーバッチがあり、インストールした。

続く

HOME BACK

Last Updated 16/Jul/2007