はじめに

Vine6がリリースされてだいぶたつので、そろそろサーバーもアップグレードしようと思いたち、アップグレードし ました。 基本的にはVine5とほとんど変わらないが、てこずったところもあるので残しておきます。
FedoraやUbuntuがユーザーIDを1000番から使用するように変更になったので、それに合わせてこちらも変更することにしました。

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

インストール

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

インストールの準備:
今回、ユーザーIDを1000番台に変更するので、インストール前のバックアップを取る前に変更しておきます。
sudo usermode -u 1000 hyde
これで既存のファイルのユーザーIDもすべて自動的に変更になります。
sudo groupmod -g 1000 hyde
ただし、このコマンドでは既存のファイルのIDは変更にならないので手動で変更する必要があります。
sudo chgrp -R hyde /home/hyde
全てのユーザーに対して変更が終わったら、他のPCなり外付けディスクなりにバックアップします。
sudo rsync -avz /home /backup
sudo rsync -avz /home 192.168.0.128:/backup
バックアップが終わったら、インストールメディアから起動してインストールを開始します。
インストールオプション:
何もしないでそのままインストールメディアを起動すると、起動後の画面が同期ずれでめちゃくちゃになってしまうので、起動時に Advanced optionsを選択し、VESAドライバを選択します。 nvidiaのグラフィックカードの時はこうなってしまうようです。

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

初期設定

インストールが終了したら一旦run level 3で再起動し、rootでログインします。

まず、なにはなくともsudoができるようにします。
visudo
を実行するとsudo設定ファイルが開きますのでファイルの下の方にある
# %wheel        ALL=(ALL)       NOPASSWD: ALL
の行のコメントを外して%wheelを自分のユーザ名に変更し ま す。
これで一旦端末を再起動すればパスワード入力なしにsudoコ マン ドが 使えるようになります。 これ以降は必要のない限り"su -"は使いません。
ユーザー、グループIDを1000番台に変更する:
インストール時にメインユーザーのIDを変更する事ができず500になっているはずなので、インストールの準備でしたように、ユーザーID、 グループIDを変更します。
usermode -u 1000 hyde
groupmod -g 1000 hyde
chgrp -R hyde /home/hyde
reboot
gui モードで再起動し、自分のユーザーでログインします。
ディレクトリ名を英語に戻す:
ホームディレクトリの下のディレクトリ名が日本語になっているので次のコマンドで英語に戻します。
LANG=C xdg-user-dirs-gtk-update
日本語のフォルダ名を英語に変更する かどうかを聞いてくるので、yesを 選択し、左下のチェックボックスにチェックを入れてこれ以降変更しないようにしておきます。

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

ユーザの追加
必要なユーザを以下のコマンドで追加します。 ユーザーIDが1000番台以上であることを確認。
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 192.168.0.128:/backup /
転送が終われば初期設定は完了です。

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

vncサーバ設定

インストール:
sudo apt-get -y install vnc-server xorg-x11-fonts-misc xorg-x11-fonts-Type1
設定:
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 update-alternatives --config apache2
workerモードになっているので、preforkモードにする。
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 vim /etc/sydconfig/dhcpd
DHCPDARGS=eth1
sudo touch /var/lib/dhcpd/dhcpd.leases
sudo chkconfig dhcpd on

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


インストール:
sudo apt-get -y install procmail spamassassin  dovecot
設定:
それぞれのユーザにメールボックスを作成する。 もしバックアップからリストアされていれば不必要。
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/
postfixを設定する
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
procmailを設定する
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/
smtop.confを設定する
sudo vim /usr/lib64/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
今回のアップデートでdovecot2になり、設定ファイルが分割されたり、デフォルトで認証キーが必要になったりともっとも苦労 した部分です。
まず、サーバー認証キーを作成してそれを参照するようにします。
su -
export PATH=/usr/share/ssl/misc:$PATH
vim /usr/share/ssl/openssl.cnf
# nsCertType = server
# nsCertType = sslCA, emailCA
のコメントを外す。(#を削除する)
mkdir /usr/local/certs
cd /usr/local/certs
CA -newca
CA certificate filename (or enter to create)
[Enter]
Enter PEM pass phrase:パスフレーズ入力
Verifying - Enter PEM pass phrase:パスフレーズ入力
Country Name (2 letter code) [AU]:
US
State or Province Name (full name) [Some-State]:Stete
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company
Organizational Unit Name (eg, section) []:Section
Common Name (eg, YOUR name) []:Hyde
Email Address []:email@yourmail.com
A challenge password []:[Enter]
An optional company name []:[Enter]
Enter pass phrase for ./demoCA/private/./cakey.pem:[Enter]
CA -newreq-nodes
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Stete
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:]:Company
Organizational Unit Name (eg, section) []:[]:Section
Common Name (eg, YOUR name) []:Hyde
Email Address []:email@yourmail.com
A challenge password []:[Enter]
An optional company name []:[Enter]
openssl rsa -in newreq.pem -out newkey.pem
CA -sign
Enter pass phrase for ./demoCA/private/cakey.pem:パスフレーズ入力
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
vim /etc/dovecot/dovecot.conf
#protocols = imap pop3 lmtp を次に変更。
protocols = imap pop3
vim /etc/dovecot/conf.d/10-mail.conf
#   mail_location = maildir:~/Maildir のコメントを外す。
vim /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
を次のように変更。
ssl_cert = </usr/local/certs/newcert.pem
ssl_key = </usr/local/certs/newkey.pem
service dovecot start
chkconfig dovecot on
service spamassassin start
chkconfig spamassassin on
postfix reload

squirrelmail(Web mail)設定


インストール:
sudo apt-get install php5 php5-apache2 php5-devel php5-pear php5-mysql
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fprdownloads.sourceforge.net%2Fsquirrelmail%2Fsquirrelmail-webmail-1.4.22.tar.gz

tar xvzf squirrelmail-1.4.22.tar.gz
sudo mv squirrelmail-1.4.22 /usr/share/squirrelmail
sudo mkdir -p /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サーバ設定

設定:
ssh2を使ってすでにsftpが使えるの で、今回はインストールしない。

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に設定する。
再起動する。

停電対策 apcupsd

前提:
APC UPS Back-UPS ES 725 またはその類似品を使用しデータポートがサーバマシンにUSB接続されていること。
サーバマシンは電源ケーブルの抜き差しで電源が入る設定になっていること。
インストール:
sudo apt-get install gd-devel
http://www.apcupsd.org よりapcupsd-3.14.10.tar.gzを ダウンロードする。
tar xvzf apcupsd-3.14.10.tar.gz
cd apcupsd-3.14.10
./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年11月20日   新規作成