はじめに

2009年10月までFedoraを使ってサーバを運営していたのですが、設定が簡単でほとんど手をかけなくても動いてしまう点は非常にありがた かったのですが、いかんせん更新頻度が高く最新をキャッチアップするために更新を繰り返し、たまに不具合もありその度にトラブルシュートでダウンを余儀な くされることもありました。
もうすぐFedora12がリリースされる事もあり、どうせアップグレードするのならこの機会にもう少し安定したデストリビューションに変更しようと思い 立ちました。
当初、同じFedora系列のCentOS5を入れようとしたのですが、インストーラにバグがありスムーズにインストールができませんでした。 いろいろ手を尽くせばインストールする事もできるとは思うのですが、ここはちょっとマイナーですが日本語に定評のあるVine Linux 5 (以後vine5)をインストールすることにしました。

インストールする環境は現在サーバがFedora11で稼働しており、ダウン時間は必要最小限にしたいので、まずバックアップサーバを用意しそこ にVine5をインストールして各種サーバを立ち上げ、サーバよりデータを移行してしばらくバックアップサーバで運用し、その間にサーバ機にもVine5 をインストールしてその後データをコピーして本運用する、という手順を踏みます。
サーバ機は24時間稼働させるのでできるだけ音の静かなノートPCを使用しており、スペックは Pentium4 2.66GHz、512Mbメモリー、30GB 内蔵HD、120Gb 外付けUSBHD、100BASE-TX 内蔵イーサネット、それにギガビット(1000BASE-T)イーサネットを刺して、低速イーサネット側をWANに高速イーサネット側をLANに使用し てい ます。
バックアップ機は押入れに眠っていたマシンで、Pentium3 dual cpu、512Mbメモリー、20GbHDx2、80GbHDのマシンに100BASE-TXと1000BASE-Tのイーサネットカードを装着して使用 します。

テキスト編集には自分が使いやすいvimを使用していますので、他のエディタを使用している方は適宜変更してください。
また、わたしのLANでは192.168.0.0/24を使用しているので、ルータが192.168.0.1、サーバが192.168.0.2、バック アップが192.168.0.3となります。

目次
インストー ル
初期設定
vncサーバ設定
webサーバ設定
dhcpサーバ設定
メー ルサーバ postfix+spamasassin+smtp auth+dovecot設定
squirrelmail(Web mail)設定
sambaサーバ設 定
nfsサーバ設定
ftpサーバ設定
dnsサーバ設定
sshサーバ設定
サー バ移行設定
停電対策 apcupsd

インストール

インストール自体はしごく簡単で、聞かれたことに答えていけばスムーズにインストールができるはずです。 キーとなる部分だけを記載しておきます。

インストールの種類:
ディスクサイズに問題が無ければ全てインストールを選んで置いた方が無難でしょう。 もちろん、ヘッドレスで使用するとかで最小にしたければ最小構成やカスタムでインストールしても構いません。
ディスクパーティションの設定:
私のバックアップマシンのディスクはIDEのディスクですが、他のマシンは全てSATAになったため、他に流用する事もできないので3つまと めて1グループとして使用するので「自動パーティション設定」にしました。 サーバマシンの方は外付けUSBディスクを取り外して他のマシンにも使えるように「Disk Druid を使用して手動パーティション設定」で内蔵ディスクに/boot、/、スワップを作り、外付けディスクは/homeにマウントしました。
ネットワークの設定:
100BASE-TXインターフェイスは「DHCPを使用して設定」「起動時にアクティブにする」の両方のチェックマークを外してIP アドレスに自ドメインのWANアドレスを設定します。 1000BASE-Tインターフェイスは「DHCPを使用して設定」のチェックを外し、「起動時に アクティブにする」はチェックをいれておきます。 IP アドレスはバックアップサーバのアドレスを入れておきます。 ホスト名は手動設定でとりあえず backup と入れておき、ゲートウェイと1番目のDNSにルータのアドレスを入れます。
ファイアウォール設定:
最初はLAN側のインターフェイスのみを使用しますので、「ファイアウォールなし」にします。

あとは自分の環境に会わせて適宜インストールします。

初期設定

インストールが終了したら再起動し、自分のユーザでログインします。

ディレクトリ名を英語に戻す:
ホームディレクトリの下のディレクトリ名が日本語になっているので次のコマンドで英語に戻します。
LANG=C xdg-user-dirs-gtk-update
日本語のフォルダ名を英語に変更する かどうかを聞いてくるので、yesを 選択し、左下のチェックボックスにチェックを入れてこれ以降変更しないようにしておきます。
まず、なにはなくともsudoができるようにします。
su -
パスワードを入力してスーバユーザになり
visudo
を実行するとsudo設定ファイルが開きますのでファイルの下の方にある
# %wheel        ALL=(ALL)       NOPASSWD: ALL
の行のコメントを外して%wheelを自分のユーザ名に変更し ま す。 エディタがviなので使い方のわからない人は調べてから編集して下さい。 念のため変更の仕方をキー入力で書いておきます。 ユーザ名は自分のユーザ名、[ESC]はエスケープキーです。
G8kiユーザ名[ESC] l8x: wq
これで一旦端末を再起動すればパスワード入力なしにsudoコ マン ドが 使えるようになります。 これ以降は必要のない限り"su -"は使いません。

次に、vineを最新にアップデートします。
アップデートする前にSynaptic パッケージマネージャーを立ち上げ、設定→リポジトリでftp.jaist.ac.jpリポジトリすべてにチェックします。 本家にはないパッケージがあります。
sudo apt-get update
sudo apt-get upgrade

ユーザの追加
必要なユーザを以下のコマンドで追加します。
sudo useradd ****
sudo passwd ****

追加し終わったら全てのユーザに一度GUIでログインしてディレク トリ 名を英語にもどしておきましょう。

自動ログイン設定

/etc/X11/gdm/custom.conf に以下の内容を追加する。
sudo vim /etc/X11/gdm/custom.conf
[daemon]
AutomaticLoginEnable=true
AutomaticLogin=userID

データ転送
現在稼働中のサーバからユーザデータを転送します。
sudo rsync -avz --delete --exclude=.gvfs 192.168.0.2:/home /
転送が終われば初期設定は完了です。

Flash Playerのインストール
sudo apt-get install install-assist-flash-plugin

vncサーバ設定

インストール:
sudo apt-get install vnc-server
設定:
sudo vim /etc/sysconfig/vncservers
VNCSERVERS="1:hyde"
VNCSERVERARGS[1]="-geometry 1280x1024 -nolisten tcp"
vncpasswd
sudo service vncserver start
sudo chkconfig vncserver on
vim ~/.vnc/xstartup
最下行の2行を削除し以下を追加する。
gnome-session &
sudo service vncserver restart

webサーバ設定

設定:
/var/www/html
~/public_html
それぞれのディレクトリにwebコンテンツファイルを用意する。
sudo vim /etc/apache2/conf/httpd.conf
ServerAdmin hyde@hyde-tech.com
ServerName www.hyde-tech.com:80
    #UserDir disable
    UserDir public_html
DirectoryIndex index.htm index.html index.html.var
    Options Indexes MultiViews FollowSymLinks
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
AddDefaultCharset UTF-8
sudo service apache2 start
sudo chkconfig apache2 on

dhcpサーバ設定

設定:
sudo vim /etc/dhcp/dhcpd.conf
ddns-update-style ad-hoc;
option domain-name-servers 192.168.0.2, 68.87.68.162, 68.87.74.162;
option domain-name "hyde-tech.com";
subnet 192.168.0.0 netmask 255.255.255.0
{
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.1;
        default-lease-time 86400;
        max-lease-time 604800;
        range 192.168.0.128 192.168.0.253;
        host desktop
        {
                hardware ethernet 00:18:F3:0E:BD:D2;
                fixed-address 192.168.0.151;
        }
}
sudo touch /var/lib/dhcpd/dhcpd.leases
現在稼働中のサーバとバッティングするのでまだ起動はしないでおく。

メールサーバ postfix+spamasassin+smtp auth+dovecot 設定


インストール:
sudo apt-get install procmail spamassassin
設定:
それぞれのユーザにメールボックスを作成する。 もしバックアップからリストアされていれば不必要。
mkdir -p ~/Maildir/{new,cur,tmp}
chmod -R 700 ~/Maildir/
スケルトンを作成する。 ユーザを追加したときにメールボックスが自動生成される。
sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp}

sudo chmod -R 700 /etc/skel/Maildir/
sudo vim /etc/postfix/main.cf
myhostname = www.hyde-tech.com
mydomain = hyde-tech.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.0.0/24, 127.0.0.0/8
home_mailbox = Maildir/
mailbox_command = /usr/bin/procmail
smtpd_banner = $myhostname ESMTP unknown
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
sudo vim /etc/procmailrc
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
LOGFILE=$HOME/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
# SpamAssassinによるスパムチェック
# ※fetchmail取り込みメールのスパム検査未実施対処
:0fw
*!^X-Spam-
|/usr/bin/spamassassin
# SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除
# ※必要なメールが削除されてしまう可能性があることに留意すること
:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
/dev/null
# SpamAssassinがスパム判定したメールはゴミ箱へ配送
:0
*^X-Spam-Flag: YES
$MAILDIR/.Trash/
sudo vim /usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: cram-md5 digest-md5 plain login
sudo saslpasswd2 -u www.hyde-tech.com -c usr
sudo touch /etc/sasldb2
sudo chmod 600 /etc/sasldb2
sudo chown postfix.postfix /etc/sasldb2
sudo vim /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
   mail_location = maildir:~/Maildir
sudo service dovecot start
sudo chkconfig dovecot on
sudo service spamassassin start
sudo chkconfig spamassassin on
sudo postfix reload

squirrelmail(Web mail)設定


インストール:
sudo apt-get install php5 php5-apache2 php5-devel php5-pear php5-mysql
wget http://www.yamaai-tech.com/~masato/Download/squirrelmail-1.4.20-ja-20100310.tar.gz

tar xvzf squirrelmail-1.4.20-ja-20100310.tar.gz
sudo mv
squirrelmail-1.4.20-ja-20100310 /usr/share/squirrelmail
sudo -p mkdir /var/local/
squirrelmail/data
sudo chmod 730
/var/local/squirrelmail/data
sudo chown apache:apache
/var/local/squirrelmail/data
sudo ln -s /usr/share/squirrelmail /var/www/html/webmail
設定:
cd /usr/share/squirrelmail/config
sudo ./conf.pl
2.  Server Settings → 1. Domain で自分のドメインネーム、私の場合は hyde-tech.com をセット。
10. Languages → 1. Default Language に ja_JPをセット。
sudo service apache2 restart

sambaサーバ設定

設定:
sudo vim /etc/samba/smb.conf
[global]の下に以下を追加
doscharset = CP932
display charset = CP932
次を変更
    workgroup = hyde-tech
sudo smbpasswd -a usr
sudo service nmb start
sudo service smb start
sudo chkconfig nmb on
sudo chkconfig smb on

nfsサーバ設定

設定:
sudo vim /etc/exports
/home/hyde 192.168.0.0/255.255.255.0(rw)
sudo service nfs start
sudo chkconfig nfs on

ftpサーバ設定

設定:
sudo apt-get install vsftpd
sudo service vsftpd start
sudo chkconfig vsftpd on

dnsサーバ設定

設定:
sudo vim /etc/named.conf
sudo
vim /etc/named.hyde-tech.com.zone
sudo
vim /etc/named.hyde-tech.com.zone.wan
sudo
vim /etc/named.rfc1912.zones
sudo vim /var/named/0.168.192.in-addr.arpa.db
sudo vim /var/named/hyde-tech.com.db
sudo vim /var/named/hyde-tech.com.db.wan
sudo chown -R named:named /var/named
sudo chown named:named /etc/named.*
sudo rndc-confgen -a -b 512 -k rndckey

sudo service named start
sudo chkconfig named on

sshサーバ設定

設定:
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes

サーバ移行設定

ファイアウォール設定:
セキュリティレベルとファイヤーウォールの設定でファイアウォールを有効にし、 WAN側からのアクセスを許可するものにチェックを入れてOKを押して終了する。 Fedoraなどの最新のOSではこのGUIからLANカードごとの設定ができるのだが、vine5ではまだ採用されていないので手動でeth1(LAN 側)のファイヤーウォールを無効にする。
sudo iptables -I RH-Firewall-1-INPUT 2 -i eth1 -j ACCEPT
sudo service iptables save
確認する

sudo iptables -t filter -n -L -v --line-numbers
注:GUIで設定しなおすと手動で設定した部分は削除されてしまうので再設定するか、これ以後はGUIを使わずに手動で設定を変更するか、webminを 使うといいでしょう。
サーバ停止及び最終データコピー:
稼働中のサーバ機の各種サーバサービスを停止させます。
設定中に更新されたデータを取り込みます。
sudo rsync -avz --delete --exclude=.gvfs 192.168.0.2:/home /
サーバをシャットダウン する。
新サーバ起動:
Host Name を Server に変更し、LAN側のIPアドレスを192.168.0.2に、WAN側を起動時にONに設定する。
dhcpサーバを起動時にONに設定する。
sudo chkconfig dhcpd on
再起動する。
以上の設定を同様に既存のサーバ機にも行い最終的に元に戻す。

停電対策 apcupsd

前提:
APC UPS Back-UPS ES 725 またはその類似品を使用しデータポートがサーバマシンにUSB接続されていること。
サーバマシンは電源ケーブルの抜き差しで電源が入る設定になっていること。
インストール:
sudo apt-get install gd-devel
http://www.apcupsd.org よりapcupsd-3.14.8.tar.gzを ダウンロードする。
tar xvzf apcupsd-3.14.8.tar.gz
cd apcupsd-3.14.8
./configure --enable-usb --enable-cgi
make
sudo make install
環境設定:
sudo vim /etc/apcupsd/apcupsd.conf
設定を次のように変更する。
UPSCABLE usb
UPSTYPE usb
DEVICE
sudo vim /etc/rc.d/rc.local
最下行に以下を追加
/sbin/apcupsd
動作確認:
再起動する。
接続されたUPSと通信ができているかを確認する。
apcaccess status
UPSの現在の状態が表示されればO.K.
UPSの電源ケーブルを抜いて停電状態を作りだし、バッテリーがなくなったら自動Shutdownされることを確認。
UPSのPOWERを一旦切ってから電源ケーブルを入れてPOWERを入れ、サーバが自動起動されることを確認する。
sudo vim /etc/rc.d/init.d/halt
UPSのPOWERが切れないと停電復旧した後に自動起動ができないので以下の後ろに# ***apcupsd***がある行をを追加する。 追加する場所は前後のステートメントを見て確認する。 155行目あたりである。
この設定を入れると、サーバマシンを手動でシャットダウンしてもUPSが切れてしまうので、UPSに他のマシンも接続しているとそのマシンの電源も切れて しまうので、本運用にするときに設定すること。
# Remount read only anything that's left mounted.
# echo $"Remounting remaining filesystems readonly"
mount | awk '{ print $3 }' | while read line; do
    fstab-decode mount -n -o ro,remount $line
done

fi # noumouont or readonlyroot

# See if this is a powerfail situation.                                                    # ***apcupsd***
if [ -f /etc/apcupsd/powerfail ]; then                                                     # ***apcupsd***
   echo                                                                                             # ***apcupsd***
   echo "APCUPSD will now power off the UPS"                                  # ***apcupsd***
   echo                                                                                             # ***apcupsd***
   /etc/apcupsd/apccontrol killpower                                                     # ***apcupsd***
   echo                                                                                             # ***apcupsd***
   echo "Please ensure that the UPS has powered off before rebooting" # ***apcupsd***
   echo "Otherwise, the UPS may cut the power during the reboot!!!"     # ***apcupsd***
   echo                                                                                             # ***apcupsd***
fi                                                                                                     # ***apcupsd***

# Now halt or reboot.
echo $"$message"
if [ -f /fastboot ]; then
 echo $"On the next boot fsck will be skipped."
elif [ -f /forcefsck ]; then
 echo $"On the next boot fsck will be forced."
fi
これで、停電がある時間続いたときでも自動シャットダウンを行い、停電が復旧したら自動起動されるようになった。

更新履歴

2011年2月13日   Squirrelmail設定を追加、その他修正
2011年1月9日   自動ログイン設定を追加
2009年12月27日   ファイヤーウォール設定を修正
2009年12月20日   停電対策  apcupsd を追加
2009年12月19日   目次追加
2009年11月20日   named 設定にrndckey作成を追加
2009年11月15日   各種サーバ設定及びサーバ移行設定追加
2009年11月14日   新規作成