FreeBSD 10.1-RELEASE installation

うちの公開 Web サーバがとうとうお亡くなりになった。七年前に 4 万くらいで調達した Shuttle 製ベアボーンで,Intel Core2Duo E7200 2.53GHz x 2 の Dual core マシンだった。ここのところめちゃ多忙で,顧客から責めまくられているトラブルプロジェクトにあってみれば,自宅のサーバが壊れてメールが受け取れなくなったくらいはどうでもよいことなので,放置モードであった。

先週日曜日やはり出勤したが,意外と早く課題が解決したこともあり,6 時過ぎ,仕事を切り上げて,急遽,川崎のドスパラ(DOS/Vパラダイス — ドスブイの意味を知るパソコンユーザは歳が知れる,ってなもんや)で新しいマシンを調達することにした。性能的には何もこだわりがなく,とにかく安価なものを揃えたいだけだったので,店員さんに相談して,ドスパラオリジナルブランドモデル Regulus AM Windows 7 モデルというのに決めた。FreeBSD サーバにするつもりだったこともあり Windows 7 は余計だったが,初期不良チェック用 OS と考えることにした。

CPU は久しぶりの AMD。A4-7300 Dual-core 3.80GHz / Turbo-core 4.00GHz / 1MB L2 cache。4GB DDR3 の SDRAM メモリ,500GB SATA3 HDD 搭載。消費税込みで 44,000 円余り也。

20150720-pc.png
壊れた PC / おにゅう PC

重い荷物をぶら下げて帰宅し,さっそく FreeBSD 10.1-RELEASE をインストールしようとした。今回は 64bit の amd64 にすることに。ところが FreeBSD FTP サーバからダウンロードした dvd イメージを Mac OS で DVD に焼いて,このメディアからおにゅうの機械をブートさせようとしたが,いつも Windows が起動されてしまう。BIOS で DVD ドライブをブート装置に指定してもダメである。DVD-R メディアはもったいないので bootonly.iso を CD-R に,今度は Windows でブータブル CD として書き込んだものを使用したら,うまくブートしてくれた。この CD-R は FreeBSD 10.1-RELEASE のインストーラだけが格納されたシロモノであり,よってネットワーク経由で OS のインストールを行うこととした。

古い機械の HDD には /home(ホームディレクトリ)があり,新しい機械にもこの HDD を二台目として接続して,データを継続利用しようと考えていた。ところが(またまた),壊れた機械に搭載していたために頻繁にクラッシュした結果,ファイルシステムがクリーンでないと FreeBSD インストーラが文句を言って先に進まない。このときこの HDD は OS インストールとは無関係なので初期化を後回しにして先に進めばよかった(新 HDD に FreeBSD を導入したあとで,旧 HDD のファイルシステムをゆっくり fsck して対処すればよかった)のだが,急ぐあまり,「しようがねえ」と割り切り,「えいやー」ですべてのディスク領域を丸々ワン・パーティションで初期化してしまった。

三週間くらい前にメールと自作プログラムの CVS/SVN リポジトリだけはバックアップを取ってあったのだが(これは私のこれまでの自作プログラム,Web コンテンツの履歴であり,弊サイトのすべて,生命線である),それ以外はすべてパーになってしまった。覆水盆に返らず。ホームディレクトリ下に,.procmailrc やら,.emacs やら,.mew.el やら,たくさんの設定ファイルをおいてあったのが,すべてスクラッチから作り直しするはめになってしまった。

そんなこんなで,夜中に,就寝直前の 30 分くらいづつを費やして,この一週間でやっと復旧することができた。今回の FreeBSD 10.1-RELEASE 環境整備は原則 pkg を用いてパッケージ管理をすることにした。で,思ったとおり様々なトラブルが出たわけで,今日はその簡単な備忘録を残しておく。

VNC でフォントエラー

原則,Mac OS から遠隔でしか FreeBSD サーバを操作しないので,VNC サーバを組み込む。

# pkg install xorg
# pkg install vnc

ところが,vncserver を投入すると,次のエラーが出てこけてしまった。むっ。

error opening security policy file /usr/local/lib/X11/xserver/SecurityPolicy
Could not init font path element /usr/local/lib/X11/fonts/misc/, removing from list!
Could not init font path element /usr/local/lib/X11/fonts/Speedo/, removing from list!
Could not init font path element /usr/local/lib/X11/fonts/Type1/, removing from list!
Could not init font path element /usr/local/lib/X11/fonts/CID/, removing from list!
Could not init font path element /usr/local/lib/X11/fonts/75dpi/, removing from list!
Could not init font path element /usr/local/lib/X11/fonts/100dpi/, removing from list!
 
Fatal server error:
could not open default font 'fixed'

対策:X11 フォントが実際に格納されているディレクトリへのシンボリックリンクで逃げることに。

# ln -sf /usr/local/share/fonts /usr/local/lib/X11/fonts


Subversion htdigest

自作プログラムのバージョン管理に使っている Subversion をインストールし,Web 経由でもコミット,チェックアウト出来るようにしている。このとき誰でも持って行けるとまずいので Digest 認証を入れていたのだが,この設定のやり方をまるきり忘却していた。胸に手を当てて考え,ググって調べなんとかうまくいった。コンフィグと Digest 認証用パスワードファイルの生成についてメモっておく。コンフィグは /usr/local/etc/apache24/Includes/ 下に格納。これくらいは余裕,余裕。

LoadModule dav_svn_module libexec/apache24/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache24/mod_authz_svn.so
<Location /svn>
    Dav svn
    SVNParentPath /usr/local/var/svn
    AuthType digest
    AuthName "Beatrice Subversion Repository"
    AuthDigestProvider file
    AuthUserFile /usr/local/etc/apache24/htpass/svndigest
    Require valid-user
</Location>
# cd /usr/local/etc/apache24
# mkdir -p htpass
# cd htpass
# htdigest -c svndigest "Beatrice Subversion Repository" isao
Adding password for isao in realm Beatrice Subversion Repository.
New password: xxxxxx
Re-type new password: xxxxxx


Apache24 で CGI ソースが表示されてしまう

CGI プログラムを試しに呼び出すとソースコードがずらずらと。これじゃ手の内を晒すようなもんだ。Apache24 の導入デフォルト状態はなんてヘボな初期設定になっているのか。メラメラ,イライラ。

対策:httpd.conf 中の mod_cgid.so, mod_cgi.so のコメントを外す。

<IfModule !mpm_prefork_module>
        LoadModule cgid_module libexec/apache24/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
        LoadModule cgi_module libexec/apache24/mod_cgi.so
</IfModule>


.htaccess パスワード保護がきかない

.htaccess で行っている認証が利かない。頭に来る。

原因:DocumentRoot に AuthConfig が指定されていないため。

対策:AllowOverride None をやめて以下に変更。

AllowOverride FileInfo AuthConfig Limit


SpamAssassin spamd start 失敗

スパムメールチェッカ SpamAssassin のデーモン spamd の start が失敗。愚か。

原因:ルールファイルのアップデート忘れ。

対策:sa-update 実行後,再起動。

# sa-update
# service sa-spamd start


pop3 失敗

Postfix メールサーバ,Qpopper pop3 受信ソフト,メールソフト Mew を入れてメール送受信をするも,エラーが出て出来ず。ここで怒り心頭に発す。

Jul 18 22:51:56 beatrice pop3[65466]: OTP unavailable because can't read/write key data
base /etc/opiekeys: Permission denied

なんやようわからんが,読み書き出来ないというので,/etc/opie* のパーミションを確認するとたしかに所有者しか r/w 出来ないモードだったので,グループに r/w を付加したらオーケーになった。

# chmod 660 /etc/opieaccess
# chmod 660 /etc/opiekeys
# ls -l /etc/opie*
-rw-rw----  1 root  wheel       438 Nov 12  2014 opieaccess
-rw-rw----  1 root  wheel         0 Jul 15 00:25 opiekeys

とりあえず,今日はここまで。Apache Web Server を今回ようやく 2.4 にした。さまざまなパス設定で apache22apache24 に書き直さなければならず,面倒この上なかった。Web も,メールも,自作 Web アプリも復活したし,あとはその都度ということで。