いずれ消え行く無駄な情報を、密やかに発信する装置。つまり日記。
計画停電と節電により自宅サーバーも縮退運転を行っていますが、さすがにwebサーバーも停止すると色々と困ることがあった為、さくらインターネットのVPS512を契約してみました。
とりあえず、標準ではCentOSがインストールされていますが、意外とメモリを消費しています。
# free -k total used free shared buffers cached Mem: 510532 165264 345268 0 23288 116472 -/+ buffers/cache: 25504 485028 Swap: 2048276 0 2048276
ちなみに仮想HDDはこのような感じにパーティションが切られています。
# df -h Filesystem Size Used Avail Use% Mounted on /dev/hda2 17G 1.5G 15G 10% / /dev/hda1 99M 12M 82M 13% /boot tmpfs 250M 0 250M 0% /dev/shm
さくらインターネットの社長が書かれた日記にカスタマイズ方法が乗っていますが、それでも150MB弱のメモリを使用しています。特にメモリにシビアなプログラムを動かすといったことはありませんが、使用メモリが少ないことに越したことはないので、FreeBSDを最小インストールしました。
とりあえず、FreeBSDをさくらインターネット公式のインストールガイドと同じ内容でインストールしました。
唯一違う点は、パーティションを/varや/usrに分割せずに、/に20GBと残りをswapにしたことと、sshdをインストール直後に起動させないようにしたことです。
OSのインストールが終了して、無事にFreeBSDが起動したら、まず余計なttyを削りました。ttyv0とネットワーク用の物を残して、全てコメントアウト。
# vi /etc/ttys ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals #ttyv1 "/usr/libexec/getty Pc" cons25 on secure #ttyv2 "/usr/libexec/getty Pc" cons25 on secure #ttyv3 "/usr/libexec/getty Pc" cons25 on secure #ttyv4 "/usr/libexec/getty Pc" cons25 on secure #ttyv5 "/usr/libexec/getty Pc" cons25 on secure #ttyv6 "/usr/libexec/getty Pc" cons25 on secure #ttyv7 "/usr/libexec/getty Pc" cons25 on secure #ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure # Serial terminals # The 'dialup' keyword identifies dialin lines to login, fingerd etc. #ttyu0 "/usr/libexec/getty std.9600" dialup off secure #ttyu1 "/usr/libexec/getty std.9600" dialup off secure #ttyu2 "/usr/libexec/getty std.9600" dialup off secure #ttyu3 "/usr/libexec/getty std.9600" dialup off secure # Dumb console #dcons "/usr/libexec/getty std.9600" vt100 off secure # Pseudo terminals ttyp0 none network ttyp1 none network ttyp2 none network ・ ・ ・ (略)
sendmailもしばらく使う予定がないので停止させました。
/etc/rc.confに以下を追記します。
sendmail_enable="NONE"
/etc/rc.confにfirewallを有効にする設定を書きます。
firewall_enable="YES" firewall_script="/etc/ipfw.rule"
ルールは以下のようにしました。
# less /etc/ipfw.rule #!/bin/sh fwcmd="/sbin/ipfw" me="XX.XX.XX.XX" ${fwcmd} -f flush ${fwcmd} add check-state ${fwcmd} add deny tcp from any to any established ${fwcmd} add allow tcp from ${me} to any setup keep-state ${fwcmd} add allow udp from ${me} to any keep-state ${fwcmd} add allow all from any to any via lo0 ${fwcmd} add deny all from 127.0.0.0/8 to any ${fwcmd} add deny all from any to 127.0.0.0/8 ${fwcmd} add allow tcp from any to ${me} http,https,22222 setup keep-state ${fwcmd} add allow icmp from ${me} to any ${fwcmd} add allow icmp from any to ${me} icmptype 0,3,8,11 ${fwcmd} add deny icmp from any to any ${fwcmd} add deny all from any to any
まず、/etc/ssh/sshd_configに設定を書きます。基本的には標準設定のため編集の必要のないコメントアウトされている行も、後で自分が分かりやすいように明示的に書いています。以下、抜粋。
#sshのプロトコルはversion2のみにする。 Protocol 2 #sshdが待ち受けるポートは、22から22222に変更する。 Port 22222 #rootでのログインを許可しない。 PermitRootLogin no #公開鍵認証を行う。 PubkeyAuthentication yes #パスワードでの認証を行わない。 PasswordAuthentication no #チャレンジレスポンス認証を行わない。 ChallengeResponseAuthentication no
sshクライアントのid_rsa.pubをauthorized_keysに追記をしてから、/etc/rc.confに追記。これで後はVNC経由ではなくssh端末経由で操作できるようになります。
sshd_enable="YES"
/etc/ntp.confに設定を書きます。
server ntp.nict.jp server ntp1.sakura.ad.jp server localhost fudge localhost stratum 10
driftファイルの作成。
# touch /vat/db/ntpd.drift
/etc/rc.confに追記します。
ntpd_enable="YES"
動いているか確認。
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== ntp-a3.nict.go. .NICT. 1 u 3 64 1 11.673 2550.90 0.004 ntp1.sakura.ad. .GPS. 1 u 2 64 1 8.226 2549.35 0.004 localhost .INIT. 16 l - 64 0 0.000 0.000 0.000
さくらのVPSでインストールできるメディアはFreeBSD 8.1-RELEASEなので、FreeBSD 8.2-RELEASEへのアップグレードをしました。
#freebsd-update upgrade -r 8.2-RELEASE (更新のあった設定ファイルのdiffとリストが表示されたあとにインストール) #freebsd-update install #reboot (リブートして、もう一度実行) #freebsd-update install
portsの設定は、各言語毎のパッケージを更新しないように以下を/etc/portsnap.confに設定。
REFUSE arabic chinese french german hebrew hungarian REFUSE korean polish portuguese russian ukrainian vietnamese
portsの展開。
# portsnap fetch extract update
ここまで来れば後は何時ものように使うだけ。portupgradeやbash、screenなどをインストール。この時点でのメモリの空き容量は450MBくらいでした。
$ top last pid: 891; load averages: 0.95, 0.27, 0.10 up 0+00:00:27 20:31:40 11 processes: 1 running, 10 sleeping Mem: 5860K Active, 5752K Inact, 22M Wired, 24K Cache, 8832K Buf, 450M Free Swap: 480M Total, 480M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 888 root 1 45 0 21700K 2040K wait 1 0:00 0.00% login 889 root 1 44 0 10260K 2620K wait 0 0:00 0.00% bash 760 root 1 44 0 11920K 2560K select 0 0:00 0.00% ntpd 515 root 1 1 0 7048K 1552K select 0 0:00 0.00% syslogd 885 root 1 76 0 5828K 1024K piperd 0 0:00 0.00% logger 886 root 1 76 0 2764K 924K nanslp 1 0:00 0.00% sleep 816 root 1 76 0 7976K 1600K nanslp 1 0:00 0.00% cron 805 root 1 76 0 26260K 4576K select 0 0:00 0.00% sshd 373 root 1 76 0 3204K 740K select 0 0:00 0.00% devd 884 root 1 76 0 8296K 1912K wait 0 0:00 0.00% sh 891 root 1 44 0 9372K 2100K CPU0 1 0:00 0.00% top