ノートPCを使って自宅サーバを建てています。そのときの設定内容を備忘録をかねて書いています。参考になると思います。

CFを使ったSSDの装着

 debian が lenny になったのを機会にHDDをSSDにすることにしました。ノートPCでもHDDの甲高い回転音が耳障りなので防音用のケースを作ってその中に入れてはいましたが、音は漏れてきます。webで調べてみると、CF-IDE変換アダプタ(変換名人 CFIDE-402FB)があることがわかり、これを入手しました。CFは2枚差すことができます。当初、8GBのCFを1枚だけ差すつもりでいたのですが、後述するように異なるメーカーのCFが2枚になりました。そこで、CFをSSDとして使うことに書き込み回数の点から寿命に不安がありましたので、2枚目をバックアップ用に使うことにしました。BIOSからは1ドライブしか見えませんが、linuxからは2台のドライブ(右がドライブa,左がドライブb)として動作しています。発熱もなく、音もしなくなりなりました。静かです。

debian(lenny)のインストール

 サーバに用いているノートPCはFMV-680MC8/Wです。FDドライブやCDドライブは外付けです。FDドライブだけは純正なのでインストールはFDから行うことになりますが、Lennyはサポートしていません。web上を探すと、FDからインストールするためのインストーラが見つかりましたので、ここからダウンロードしてきてrwwrtwin.exeで書き込みました。
 インストールできる環境はできたのですが、インストールの途中でフリーズしたような症状が頻発しました。CFとの相性が悪いのかと思い別メーカのCFを入手し取り替えてみましたが、変化はありませんでした。これがCFが2枚になった理由です。それでもフリーズしてしますので、「ソフトウェアの選択」でチェックを全部外し、最小限のファイルだけインストールするようにするとうまくいきました。
 サーバなので、IPは固定にします。ネットワーク関係の設定は

debian:/etc# cat resolv.conf
nameserver 192.168.1.1

********************************************

debian:/etc# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

としました。

SSDの寿命の延長対策

 調べてみると、CFは書き換え可能回数が多くないので、とにかく余分なアクセスをさせないことが重要なようです。そのため、アクセスタイムの記録を止めるために

debian:/etc# cat fstab
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
#/dev/hda1 / ext3 errors=remount-ro 0 1
/dev/hda1 / ext3 noatime,errors=remount-ro 0 1
/dev/hda5 swap swap defaults 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
/dev/hdb1 /backup_root ext3 noatime,errors=remount-ro 0 1

としました。他にも対策は書いてありましたが、今のところこれだけです。

Dynamic DNSの設定

 独自ドメインで運用するため、VALUE-DOMAINのDynamic DNSを利用しています。Plalaから割り振られたグローバルIPはADSLモデムSVIIから読み出し、変化があればDNSに登録し直すことにしました。また、nslookupを用いてDNSからIPアドレスを引いてきて食い違いが生じていないかチェックしています。最小限のソフトウェアしかインストールしませんでしたので、nslookupはインストールされていませんでした。nslookupが入っているパッケージdnsutilsをインストールしておきます。
 IPを5分間隔でチェックしていますので、この部分に関連するファイルなどはCFの延命のために起動時にRAMディスク上にコピーして走らせて、シャットダウン時に書き戻しています。コピーするためのスクリプトは

debian:/etc/init.d# cat ipupdatecp.sh
#!/bin/sh
# ipupdatecp.sh for dynamicDNS
cp -r /usr/local/bin/ipupdate/log /dev/shm

をupdate-rc.dで登録します。書き戻すスクリプトは

debian:/etc/init.d# cat ipupdatebk.sh
#!/bin/sh
# ipupdatebk.sh for dynamicDNS
cp -r /dev/shm/log /usr/local/bin/ipupdate

としました。終了時に起動させるため、/etc/init.d/rcのはじめの所に

if test x$RUNLEVEL = x0 -o x$RUNLEVEL = x6 ; then
/etc/init.d/ipupdatebk.sh
fi

と記述します。crontabには

*/5 * * * * root /usr/local/bin/ipupdate/ipupdate.sh
* */12 * * * root /usr/sbin/ntpdate -u -b -s ntp2.plala.or.jp  <−−時計を合わせるため
30 3 * * 1 root /usr/local/bin/hda_bk.sh                <−−hdaのバックアップを定期的に行うため(後述)

と記述し、スクリプト(ipupdate.sh)関連のファイルは

debian:/usr/local/bin/ipupdate# ls
ipupdate.sh log
debian:/usr/local/bin/ipupdate/log# ls
count.dat dnsip.dat ip.log ng.dat oldip.dat

となっています。ipupdate.shには、デバッグ時に用いた変数などがまだゴミとして残っています。26行目にある"^M"は、制御文字の「コントロールM」です。入力は [Ctrl]+[V]キーを押してから、[Ctrl]+[M]キーを押します。

hdaのバックアップ

 CFの書き換え可能回数は10万回ほどとのことなので、8GBのCFが2枚あることからバックアップを取ることにしました。raidを構成することも考えましたが、間違えて変なことをしたり、ファイルを削除してしまったりしたときに、バックアップ側もおかしくなるので、定期的に丸ごとコピーをするようにしました。同じサイズのドライブ間でバックアップコピーをするときはddコマンドを用いるようですが、用いたCFの容量はどちらも8GBのタイプですが、メーカーが異なっており実際の容量は微妙に違っています。またブロックサイズなども異なります。そのためddコマンドを用いることはできません。そのため、dumpとrestoreを用いてバックアップコピーすることにしました。crontabで毎週1回このスクリプトを起動しますが、このスクリプトの中で、隔週でバックアップするようにしています。バックアップ先はbackup_rootで、hdb1をマウントさせています。バックアップ日時は /var/lib/dumpdates に書かれます。

debian:/etc# cat /usr/local/bin/hda_bk.sh
#!/bin/sh
# backup /hda to /backup_root
if [ -e /var/tmp/hda_bk.flg ]
then
rm -f /var/tmp/hda_bk.flg
else
touch /var/tmp/hda_bk.flg
exit 0
fi
cd /backup_root
rm -r *
dump 0uaf - / | restore xof -
exit 0

/etc/fstab の第5フィールドにバックアップしておきたいファイルシステムに「1」のフラグを立てておきます。

/dev/hda1 / ext3 noatime,errors=remount-ro 1 1

hdbにもgrubを書いてあるので、hdaがダメになったときには差し替えれば良いようになっています。

アプリケーションのインストール

 インストールしたアプリケーション
apache2-mpm-prefork
 
postfix
  vi /etc/postfix/main.cf
  myhostname = debian.example.com
  alias_maps = hash:/etc/aliases
  alias_database = hash:/etc/aliases
  myorigin = /etc/mailname
  mydestination = example.com, debian.example.com, localhost.example.com, localhost
  relayhost = [中継サーバ名]
  mynetworks = 192.168.1.0/24
  home_mailbox = Maildir/
  mailbox_command =
  mailbox_size_limit = 0
  recipient_delimiter = +
  inet_interfaces = all
 
courier-imap
  ユーザのhomeディレクトリーに/Maildirを作るために、次のコマンドを実行する。
  hoge@debian:~$ /usr/bin/maildirmake ~/Maildir
 
proftpd
  proftpd.confに以下の設定を行う。
  debian:/etc/proftpd# vi proftpd.conf
  ServerName "example.com"
  ServerType inetd
  DefaultRoot ~
 
telnetd
  インストールの初期段階で使用したが、opensshをインストールした時に削除した。
 
openssh
  特にすることはない。
 
ntpdate
  crontabに定期的に実行するように記述する
 
wordpress
 家の中(192.168.0.x)からwordpressにアクセスすると動作がおかしくなる。そのためhostsファイルに
 debian:/etc# vi hosts
 127.0.0.1 localhost example.com www.example.com
 とホスト名を記述しておく。これで、中からexample.comでアクセスできるようになる。 

旧版の「linux Server」に置いてあったもの

自宅にサーバをたて、その体験記(?)を職場の雑誌に寄稿しました。
    Webサーバ
    ファイルサーバ(samba、FTP、WebDavからアクセス可能)
    メールサーバ(Webや携帯電話からアクセス可能)
と優れものです。(と自画自賛) 現在の所、3部に分かれていて
     (1) OS(Linux/Debian)のインストール
     (2) Web,Mail&File サーバの構築
     (3) その後の手直し
を、それぞれpdfファイルにしてあります。参考にすることはかまいませんが、なにが起きても自己責任でお願いします。 また、質問に応えるつもりはありません。あしからず。

メモ

画像の横にテキストを回り込みをする2つ目の方法は、ホームページビルダーなどで、直接回り込みさせる方法です。( img src="画像ファイル" align="left" hspace="15" vspace="5" )など。

こちらでは、画像の横にテキストを回り込みで指定しています。imgタグの中に、( class="picture" )を入れると、画像の横にテキストを回り込ませる事ができます。

/