2012年06月

VPS について

お引越ししました。

つっても、お家じゃなくて、サーバなんですけどね。
長いこと自宅サーバでやってきましたが、この度(3週間くらい前)レンタルサーバに変えました。
別に自宅サーバで不具合があったわけではないんですが、なんかレンタルサーバの方が費用がかからないんよね。w

自鯖で満足していたしレンタル鯖は高いと思い込んでいたので、レンタル鯖には興味がなかったんですが、
1ヶ月ぐらい前に VPS なるものを知り、即行申し込んじゃいました。(^o^)v

VPS = virtual private server
仮想化技術を利用したレンタルサーバです。共用サーバなんだけど専用サーバのように使えます。

ま、僕が飛びつくぐらいなので人気商品なのではないでしょうか。
格安の VPS をネットで探すと、6~7社ぐらいあって、いろんなサイトで比較なんかもされています。

そんな中、僕が申し込んだのは、SaaSes ってトコの VPS です。プランは LT で、月額利用料は 450 円。安いっ!…最安かも。
自宅サーバなら、電気代だけでこれ以上かかりそう。もちろん、サーバ機のスペックにもよるけどね。
それよりも僕の場合、固定 IP を使っていたんですが、これが月額 840 円(ASAHI ネットだが、コレおそらく最安)。

月額利用料 450 円って、固定 IP 付いてだからねぇ。サーバ自体も root 権限付きで専用サーバと同等のことが出来る。…なら全然 O.K. じゃん!つーわけで。

一応、各社の比較表載せときます。
比較表といっても、項目が三つしかないじゃん!肝心のサーバスペックがないじゃん!それに初期費用も書いてないじゃん!
ま、そーなんですが。(^^;
それと、内容についてはネット上の情報を基にしているので、もし拘る項目があるのであれば自分できちんと確認して下さいね。

月額仮想化プラットフォーム任意の逆引き備考
SaaSes VPS450 円~Xen 
ServersMan@VPS 490 円~OpenVZIPv6 も付く
KAGOYA VPS840 円~OpenVZ× 
SPPD VPS867 円~KVM× 
CloudCore VPS945 円~KVM× 
さくらインターネットのVPS 980 円~KVM 
お名前.com VPS1,153 円~KVM 

僕が比較したのって、主にこの3項目なんですわ。
キチンとした比較サイト様ですと、ベンチマークなどを取って掲載されたりしてますが、僕にとってはそんなにハイスペックは必要ないので。だって、このサイトをアップしてるだけだから…。

そもそも、自鯖で使ってたサーバ機って、1999年の FMV のフツーのディスクトップで、CPU 400MHz , メモリ目一杯積んで 384MB っていうヤツで、「今や共用サーバにしてもコレ以下相当のスペックにはならんでしょう。」…と思って、サーバ・スペックに関してはそんなに気にしませんでした。

それと、初期費用ですが、コレかかると言えばかかるのですが、どこの VPS も年がら年中キャンペーンをやっていて、特にこの初期費用が無料になっていることが多いようです。ですので、急がないのであれば、キャンペーン待ちが良いかも。

それじゃ、僕が主にチェックした3項目について。

・月額
ほぼサーバ・スペックに比例していると思うので、スペックは低くてもかまわない僕にとっては安いにこしたことないですね。

・仮想化プラットフォーム
これについては知識がないのですが、ちょっとググってみたところ、OpenVZ にはいくらか制約があるようなので、できれば OpenVZ 以外がいいかな、と思っていました。ま、僕の利用方法では全然問題ないでしょうけど…。

・任意の逆引き
これ、メールサーバをたてるとなるとちょっと問題になるんですよね。逆引きが出来なかったり、逆引き出来ても逆引きのドメイン名が異なっていたりすると、スパムメールとして振り分けられてしまったり、あるいはバッサリ削除されてしまったりするんですわ。

実は、自鯖の時は ASAHI ネットで固定 IP を振ってもらっていたんですが、逆引きは ASAHI ネットで設定された「 m000202.ppp.asahi-net.or.jp 」で、サイトのドメイン名「 wave440.com 」と一致しなかったんです。ま、wave440.com でのメールはそんなに使ってないので、それでもイイちゃイイんですが出来れば任意の逆引きの設定が可能であれば良いな、…と。

こんな感じで選んで、SaaSes VPS の Osukini Server (お好きにサーバ)にしました。
あと、備考欄に書いた ServersMan@VPS の「 IPv6 」にも少し興味があったんですが、IPv6 で何をするって事も思いつかなかったし、そもそも IPv6 の知識もないので今回はパスしました。

SaaSes VPS ( Osukini Server )

こういった root 権限付きのレンタルサーバって使ったことがなかったので、感想などを少し書いてみます。

まず、ほとんどの VPS で試用期間が設けられています。
各社 VPS によって、期間は1週間であったり、2週間であったり、あるいはそれ以上であったりします。
僕の場合は、サーバスペックにあまり拘りがなかったし、コントロールパネルなども使うつもりがなかったので、いろんなトコを試さずに SaaSes VPS の Osukini Server に申し込みました。それでも本契約までの2週間ぐらいは、試用期間という扱いですね。

んで、試用期間中はどこでもいくらか制限がかけられているようです。
Osukini Server の場合は、試用期間中は外部にメールが送れないようですね。あと、任意の逆引き設定も試用期間中は出来ませんでした。
なので、あんまり試用期間が長いと、なかなか本稼動させられないので、試用期間の長さをこちらで決められると良いですよね。(決められるのかな?)

あとは、Osukini Server の場合ですが、実際の構築作業に関して…。

選べる OS の種類は、現在以下の通りです。
CentOS 5 (32bit/64bit)
CentOS 6 (32bit/64bit)
Ubuntu (32bit)
Debian squeeze (32bit/64bit)
Scientific Linux 6 (32bit/64bit)

僕が選んだのは、CentOS の最新ヴァージョンの CentOS 6 です。32bit版 と 64bit版 がありますが、僕の申し込んだプラン LT では、メモリが 512MB しかないので 64bit版 にする意味がないようですし、いざアプリをインストールしたりした時に上手く動作しなかったりすると嫌なので、今まで通り 32bit版 にしました。

そして、提供してもらう時に、「EC-CUBE」「MySQL」「apache」「webmin」などがプリセットアップされた状態で提供してもらえたりもしますが、それらアプリがプリセットアップされていない「最小構成」で提供してもらうこともできます。僕は「最小構成」でお願いして、必要なものを自分でインストールしました。

yum 関係

とりあえず、

[root@rad-xen-vweb11 ~]# yum update

をしてみる。…最新でした。
続いて、

[root@rad-xen-vweb11 ~]# yum install yum-cron
[root@rad-xen-vweb11 ~]# /etc/rc.d/init.d/yum-cron start
[root@rad-xen-vweb11 ~]# chkconfig yum-cron on

などをしてみる。yum-cron インストール及び起動済みでした。一晩おけば最新の状態になるわけね。

ベースパッケージ群,開発ツールパッケージ群はインストールしておく。

[root@rad-xen-vweb11 ~]# yum -y groupinstall "Base" "Development tools"

あ、あと、nkf を使うので、

[root@rad-xen-vweb11 ~]# yum -y install nkf

root 宛てメールの転送

root 宛てのメールを普段使っている Gmail アドレスへ転送するようにエイリアスを設定しました。
初期状態では root 宛ての転送設定はされていなかったと思うけど、一応確認して、

[root@rad-xen-vweb11 ~]# grep ^root: /etc/aliases

ファイルを編集

[root@rad-xen-vweb11 ~]# vi /etc/aliases
# Person who should get root's mail
root: hudantukatteiru@gmail.com

設定反映

[root@rad-xen-vweb11 ~]# newaliases

んで、テストメールを送ってみる

[root@rad-xen-vweb11 ~]# echo test|mail root

が、試用期間中に設定したので、メールが外部に飛ばず確認できませんでした。(ーー;)
てか、あとで判ったのですが、実は「Sendmail」すらインストールされておりませんでした。( ̄□ ̄;)

SELinux の無効化

たしか、初期状態で無効になっていたと思いますが…。
確認

[root@rad-xen-vweb11 ~]# getenforce

SELinux 設定ファイル編集

[root@rad-xen-vweb11 ~]# vi /etc/sysconfig/selinux

SELINUX=disabled にする。

ホスト名を変更する

[root@rad-xen-vweb11 ~]# vi /etc/hosts

[root@rad-xen-vweb11 ~]# vi /etc/sysconfig/network

を編集。
僕の場合は、「rad-xen-vweb11」だったのを「server.wave440.com」にしました。
変更後は、サーバの再起動が必要です。

再起動は、もっぱら「マイページ」へログインして行っています。
コマンドでも可能かどうかは分かりません。面倒な事になると嫌なので試していません。(^^;

んで、うまくいっていれば、

[root@server ~]#

となるでしょう。

SSH サーバへ鍵方式ログイン

公開鍵をセットアップする。(ログインできるようにする管理者ユーザを yuu とする)

[yuu@server ~]$ mkdir -p ~/.ssh
[yuu@server ~]$ chmod 700 ~/.ssh
[yuu@server ~]$ vi ~/.ssh/authorized_keys

公開鍵の中身を authorized_keys にコピペして保存

[yuu@server ~]$ chmod 600 ~/.ssh/authorized_keys

以下、設定ファイルを編集して鍵方式によるログインのみ許可するように設定する前に、鍵方式でログインが出来ることを確認しておく。

設定ファイル編集

[root@server ~]# vi /etc/ssh/sshd_config

以下のようにする。

Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no

んで、設定反映

[root@server ~]# /etc/rc.d/init.d/sshd reload

Perl モジュールをインストール

僕は Perl の MCPAN コマンドからインストールしているので、

[root@server ~]# perl -MCPAN -e shell

…が、なんとエラー。

Can't locate CPAN.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .). BEGIN failed--compilation aborted.

ここでエラーが出た事がなかったので、ちょっとビックリ。
どうやら、perl-CPAN がインストールされていないようです。(ーー;)

[root@server ~]# yum install perl-CPAN

して、もう一回

[root@server ~]# perl -MCPAN -e shell

ちょっと長いですがコピーをとってあったので載せておきます

今まではなかったんですが、今回、
Would you like me to configure as much as possible automatically?
とか聞かれたので、Enter ( yes )にしてみました。 その後も何回か「 Enter 」をしたかもしれませんが、あんまり覚えていません。(^^;
「 o conf ~」の入力のトコは、その少し前にそれぞれチョットした(?)説明文があります。

僕は Jcode と MIME::Base64 を使っているので、とりあえずこの二つはインストールしています。
どうやら今は、

[root@server ~]# cpan

で入れるようです。

cpan[1]> install Jcode
cpan[1]> install MIME::Base64

ちなみに、再度はじめから環境設定をしたい場合は、

cpan[1]> o conf init

追記:
Web サーバ構築後、CGI のページにアクセスすると、「500 Internal Server Error」。原因は、エラーが発生した時にエラー内容が表示されるように CGI ファイルに追記してあった「use CGI::Carp qw(fatalsToBrowser);」。…で、その理由は「CGI.pm が入っていないっ!」からでした。(ーー;)
CGI.pm は入れておいた方が良さげなので、

cpan[1]> install CGI

インストール済みかどうかは、

[root@server ~]# find `perl -e 'print "@INC"'` -name 'CGI.pm' -print

で確認できます。

システム時刻を自動的に合わせる

NTP サーバインストール

[root@server ~]# yum -y install ntp

設定ファイル編集

[root@server ~]# vi /etc/ntp.conf

時刻同期先 NTP サーバを変更

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server ntp.nict.jp
server ntp.jst.mfeed.ad.jp

一度、手動で時刻を合わせる

[root@server ~]# ntpdate ntp.nict.jp

んで、起動および自動起動設定

[root@server ~]# /etc/rc.d/init.d/ntpd start
[root@server ~]# chkconfig ntpd on

時刻同期状態確認は、

[root@server ~]# ntpq -p

Clam AntiVirus インストール

Clam AntiVirus をインストールしたいんですが、標準リポジトリでは提供されていないので、EPEL リポジトリをインストールします。
…が、EPEL リポジトリを導入すると、標準リポジトリと EPEL リポジトリの両方で提供されるパッケージについて、標準リポジトリのパッケージが EPEL リポジトリのパッケージで上書きされてしまったりするので、それを避ける為 yum-priorities プラグインを入れておきます。

つーわけで、まず yum-priorities インストールから

[root@server ~]# yum -y install yum-plugin-priorities

標準リポジトリ設定ファイル編集

[root@server ~]# vi /etc/yum.repos.d/CentOS-Base.repo

次に、EPEL リポジトリをダウンロードしてインストール

[root@server ~]# wget http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-5.noarch.rpm

または、

[root@server ~]# wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-5.noarch.rpm

ヴァージョンが上がっているとファイル名も epel-release-6-5 ではなくなりますので、最新ヴァージョンを確認のこと。
んで、インストール

[root@server ~]# rpm -ivh epel-release-6-5.noarch.rpm

たしか大丈夫だった筈だけど一応以下を確認。

[root@server ~]# vi /etc/yum.repos.d/epel.repo

で、[epel] が「enabled=1」であること。

epel-release アップデート

[root@server ~]# yum -y update epel-release

そして、やっとこさ Clam AntiVirus をインストール

[root@server ~]# yum -y install clamd

clamd 設定ファイル編集

[root@server ~]# vi /etc/clamd.conf

User clam をコメントアウトする。

#User clam

んで、起動と自動起動設定

[root@server ~]# /etc/rc.d/init.d/clamd start
[root@server ~]# chkconfig clamd on

freshclam.conf、「Example」だったら、コメントアウトする。

[root@server ~]# vi /etc/freshclam.conf

# Comment or remove the line below.
#Example

ウィルス定義ファイル最新化

[root@server ~]# freshclam

ウィルススキャン実行スクリプト作成

[root@server ~]# vi virusscan

ウィルススキャン実行スクリプトへ実行権限を付けて毎日自動実行されるディレクトリへ移動

[root@server ~]# chmod +x virusscan
[root@server ~]# mv virusscan /etc/cron.daily/

/proc ディレクトリと /sys ディレクトリをスキャン対象外にする

[root@server ~]# echo "/proc/" >> clamscan.exclude
[root@server ~]# echo "/sys/" >> clamscan.exclude

DNS サーバ構築(BIND)

DNS サーバも建てました。
ただ、自宅サーバとレンタルサーバの大きな違いの一つでもあるのですが、レンタルサーバには「内部」がありませんので「外部向け」だけで稼動させています。
おそらく、レンタルサーバで DNS を建てる人はあんまりいないのではないでしょうか。(^^;

今回は自宅サーバからの移行なので、独自ドメインは取得済み,ネームサーバも自前のものを登録済み,セカンダリ DNS も利用登録済みの状態です。
なのであとは、DNS サーバ構築後、それぞれに登録設定してある IP アドレスを変更するだけです。

bind , bind-chroot インストール

[root@server ~]# yum -y install bind bind-chroot

bind-chroot-admin スクリプトを作成して chroot 化

[root@server ~]# vi bind-chroot-admin

bind-chroot-admin スクリプト実行

[root@server ~]# sh bind-chroot-admin

BIND 設定ファイル編集

[root@server ~]# vi /var/named/chroot/etc/named.conf

外部向けゾーン定義ファイル作成

[root@server ~]# vi /var/named/chroot/etc/named.wave440.com.zone.wan

IPv4 のみ有効にする ( error (network unreachable) resolving というエラーログの出力抑止)

[root@server ~]# echo OPTIONS="-4" >> /etc/sysconfig/named

ルートゾーン ( named.ca ) 最新化

[root@server ~]# dig . ns @198.41.0.4 +bufsize=1024 > /var/named/chroot/var/named/named.ca

ルートゾーン最新化スクリプト作成し、毎月自動実行されるディレクトリへ移動

[root@server ~]# vi named.root_update

[root@server ~]# chmod 700 named.root_update
[root@server ~]# mv named.root_update /etc/cron.monthly/

外部向け正引きゾーンデータベース作成

[root@server ~]# vi /var/named/chroot/var/named/wave440.com.db.wan

んで、起動と自動起動設定

[root@server ~]# /etc/rc.d/init.d/named start
[root@server ~]# chkconfig named on

これであとは、UDPとTCPの53番ポートを開けてやればいいのですが、僕は一応「/etc/sysconfig/network-scripts/ifcfg-eth0」に問合せ先 DNS サーバを明示的に記入しています。
問合せ先 DNS サーバは、自分自身ではなくて「/etc/resolv.conf」に書かれているものです。

[root@server ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

変更反映

[root@server ~]# /etc/rc.d/init.d/network restart

また、逆引きの設定を「マイページ」で行っています。

ファイアウォール構築(iptables)

これも、自宅サーバとレンタルサーバの大きな違いの一つなのですが…。
ファイアウォール機能、自宅サーバの時にはルータで行っていましたが、レンタルサーバではそうはいきませんので iptables を使用しています。

なお、スクリプトは「ファイアウォール構築(iptables) - CentOSで自宅サーバー構築」を参考にさせて頂きました。m(_ _)m
また、各種サービスのポート開放は、それぞれのサーバ構築後行っています。

ファイアウォール設定スクリプト作成

[root@server ~]# vi iptables.sh

スクリプト実行

[root@server ~]# sh iptables.sh

自動起動設定にはなっているはずですが、一応確認。

[root@server ~]# chkconfig --list iptables

または、自動起動設定

[root@server ~]# chkconfig iptables on

Web サーバ構築(Apache)

httpd インストール

[root@server ~]# yum -y install httpd

php , php-mbstring インストール

[root@server ~]# yum -y install php php-mbstring

httpd 設定ファイル編集

[root@server ~]# vi /etc/httpd/conf/httpd.conf

一応、僕用の設定ですので…。

・「Header set X-UA-Compatible "IE=EmulateIE8"」は、Internet Explorer で「互換表示ボタン(破れた紙のアイコン)」を出したくないので記入しています。
     コイツ↓

・「AddType "text/xml; charset=utf-8" .xml .rdf」は、これを書いておかないと RSS 1.0 をクリックした時に、ページが開かずにファイルのダウンロードになってしまうので記入しています。

・「ErrorDocument 403 /error/403.shtml」と「ErrorDocument 404 /error/404.shtml」は、オリジナルのエラーページを表示させるために記入しています。

テストページ削除

[root@server ~]# rm -f /etc/httpd/conf.d/welcome.conf
[root@server ~]# rm -f /var/www/error/noindex.html

Perl コマンドへ /usr/local/bin/perl でもアクセスできるようにする

[root@server ~]# ln -s /usr/bin/perl /usr/local/bin/perl

ドキュメントルート所有者を Web コンテンツ編集ユーザ ( yuu ) に変更する

[root@server ~]# chown yuu:yuu /var/www/html/

httpd 起動および自動起動設定

[root@server ~]# /etc/rc.d/init.d/httpd start
[root@server ~]# chkconfig httpd on

んで、ポート80番を開ける。

PHP 設定ファイル編集

PHP 設定ファイル編集

[root@server ~]# vi /etc/php.ini

Web サーバをリロード

[root@server ~]# /etc/rc.d/init.d/httpd reload

Web サーバ間通信内容暗号化(Apache + mod_SSL(SHA-2))

mod_ssl インストール

[root@server ~]# yum -y install mod_ssl

ディレクトリ作成,移動し、秘密鍵を作成(途中、任意のパスワード応答あり)

[root@server ~]# mkdir /etc/httpd/conf/sslkey
[root@server ~]# cd /etc/httpd/conf/sslkey
[root@server sslkey]# openssl genrsa -des3 -out server_sha256.key 2048

サーバ用秘密鍵からパスワード削除(途中、上記のパスワード応答あり)

[root@server sslkey]# openssl rsa -in server_sha256.key -out server_sha256.key

パーミッション変更

[root@server sslkey]# chmod 400 server_sha256.key

CSR作成

[root@server sslkey]# openssl req -new -sha256 -key server_sha256.key -out server_sha256.csr

パーミッション変更

[root@server sslkey]# chmod 400 server_sha256.csr

有効期限10年の SSL 証明書を作成

[root@server sslkey]# openssl x509 -in server_sha256.csr -out server_sha256.crt -req -signkey server_sha256.key -sha256 -days 3650

パーミッション変更

[root@server sslkey]# chmod 400 server_sha256.crt

ApacheSSL 設定ファイル編集

[root@server sslkey]# vi /etc/httpd/conf.d/ssl.conf

Apache 再起動

[root@server sslkey]# /etc/rc.d/init.d/httpd restart

ポート443番を OPEN する

Windows から SSH サーバへファイル転送(WinSCP)

サーバへのファイル転送には FTP ではなく、SSH の scp 機能を利用して、WinSCP で行っています。(FTP サーバは建てていません)

クライアントの Windows マシンから Linux サーバにリモート接続し操作するのに、僕は「Poderosa」を使っていますが、Poderosa で作った秘密鍵は WinSCP では使えないので新たに作ることになります。ただ、公開鍵は共用出来るので Poderosa の秘密鍵から WinSCP の秘密鍵を作成します。

WinSCP 用の秘密鍵を作成
「スタート」→「プログラム」→「WinSCP」→「鍵関連ツール」→「PuTTYgen」で鍵作成ツールを起動する。

・「Load」を押し、Poderosa 用の秘密鍵を選択。
・Poderosa の秘密鍵用のパスワードを入力。
・「Save private key」を押し、適当な名前で保存。

ちなみに…、
クライアントの Linux マシンから Linux サーバに ssh コマンドを使ってリモート接続する際の秘密鍵も「Poderosa 用」とも「WinSCP 用」とも違うものとなりますが、やはり PuTTYgen で作成できます。

「Conversions」→「Import key」で Poderosa 用の秘密鍵を取り込み、「Conversions」→「Export OpenSSH key」で作成します。(途中、Poderosa の秘密鍵用のパスワードを入力します)

作成した秘密鍵を「id_rsa」という名にし、「~/.ssh/id_rsa」に置いたならば、コマンドは、

ssh yuu@server.wave440.com

となります。「yuu」はログインユーザ名です。
なお、秘密鍵格納ディレクトリ「~/.ssh」のパーミッションは「700」,秘密鍵「id_rsa」のパーミッションは「600」としておきます。

また、秘密鍵を任意の場所,名前にした場合( /hoge/himitu )には、「-i」オプションを使って秘密鍵を指定します。

ssh -i /hoge/himitu yuu@server.wave440.com

やはり、パーミッションは、「hoge」「700」,「himitu」「600」とします。

メールサーバ構築(Postfix + Dovecot)

Postfix インストール

[root@server ~]# yum -y install postfix

Postfix 設定ファイル編集

[root@server ~]# vi /etc/postfix/main.cf

saslauthd 起動

[root@server ~]# /etc/rc.d/init.d/saslauthd start

saslauthd 自動起動設定

[root@server ~]# chkconfig saslauthd on

新規ユーザ追加時に自動で Maildir 形式メールボックス作成

[root@server ~]# mkdir -p /etc/skel/Maildir/{new,cur,tmp}

メールボックスパーミッション設定

[root@server ~]# chmod -R 700 /etc/skel/Maildir/

メールサーバ切替え(postfix しかないです)

[root@server ~]# alternatives --config mta

CentOS 6 って、デフォルトで sendmail ではなく postfix が入っているようですね。(VPS では postfix も入っていませんでしたが。)
ちなみに、CGI で sendmail を使っている場合でも、postfix が入っていれば問題ないようです。(パスなども)

[root@server ~]# whereis sendmail
sendmail: /usr/sbin/sendmail.postfix /usr/sbin/sendmail /usr/lib/sendmail.postfix /usr/lib/sendmail /usr/share/man/man8/sendmail.8.gz

Postfix 起動及び自動起動設定

[root@server ~]# /etc/rc.d/init.d/postfix start
[root@server ~]# chkconfig postfix on

Dovecot インストール

[root@server ~]# yum -y install dovecot

10-mail.conf 編集

[root@server ~]# vi /etc/dovecot/conf.d/10-mail.conf

追加

#mail_location = 
mail_location = maildir:~/Maildir

dovecot.conf 編集

[root@server ~]# vi /etc/dovecot/dovecot.conf

追加

# Protocols we want to be serving.
#protocols = imap pop3 lmtp
protocols = imap

#listen = *, ::
listen = *

※ pop3 は使わないので imap のみにしています。
また、VPSでは「failed: Address family not supported by protocol」というエラーが出たので、IPv4 だけをリッスンするようにしています。
ちなみに、自宅サーバではこのエラーは出ませんでした。

Dovecot 起動及び自動起動設定

[root@server ~]# /etc/rc.d/init.d/dovecot start
[root@server ~]# chkconfig dovecot on

SSH によるリモート接続はできないメールユーザ(player)を追加

[root@server ~]# useradd -s /sbin/nologin player
[root@server ~]# passwd player

メールサーバ間通信内容暗号化(OpenSSL + Postfix + Dovecot)

ディレクトリ移動

[root@server ~]# cd /etc/pki/tls/certs/

サーバ証明書作成

[root@server certs]# make mail.pem

postfix 設定ファイル(main)編集(追加

[root@server ~]# vi /etc/postfix/main.cf
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

postfix 設定ファイル(master)編集(コメントアウト解除)

[root@server ~]# vi /etc/postfix/master.cf

変更 ( )

#smtps     inet  n       -       n       -       -       smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
 
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

#tlsmgr    unix  -       -       n       1000?   1       tlsmgr
 
tlsmgr    unix  -       -       n       1000?   1       tlsmgr

Postfix 再起動

[root@server ~]# /etc/rc.d/init.d/postfix restart

25番と465番ポートを開ける

Dovecot SSL 設定ファイル編集

[root@server ~]# vi /etc/dovecot/conf.d/10-ssl.conf

追加変更

# SSL/TLS support: yes, no, required. 
#ssl = yes
ssl = yes

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = </etc/pki/tls/certs/mail.pem
ssl_key = </etc/pki/tls/certs/mail.pem

Dovecot 再起動

[root@server ~]# /etc/rc.d/init.d/dovecot restart

993番ポートを開ける

メールサーバでウィルス&スパムチェック(Postfix + Clam AntiVirus + SpamAssassin)

clamd 設定ファイル編集

[root@server ~]# vi /etc/clamd.conf

変更追加(コメントアウト)

# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
LocalSocket /var/run/clamav/clamd.sock

# TCP port address.
# Default: no
#TCPSocket 3310

clamd 再起動

[root@server ~]# /etc/rc.d/init.d/clamd restart

amavisd-new インストール

[root@server ~]# yum -y install amavisd-new

amavisd-new 設定ファイル編集

[root@server ~]# vi /etc/amavisd/amavisd.conf

amavisd-new 起動

[root@server ~]# /etc/rc.d/init.d/amavisd start

amavisd-new 自動起動設定

[root@server ~]# chkconfig amavisd on

SpamAssassin 起動

[root@server ~]# /etc/rc.d/init.d/spamassassin start

SpamAssassin 自動起動設定

[root@server ~]# chkconfig spamassassin on

v310.pre 編集

[root@server ~]# vi /etc/mail/spamassassin/v310.pre

変更 ( )

# TextCat - language guesser
#
# loadplugin Mail::SpamAssassin::Plugin::TextCat
 
loadplugin Mail::SpamAssassin::Plugin::TextCat

SpamAssassin 設定ファイル最新化スクリプト作成

[root@server ~]# vi spamassassin-update

実行権限を付加して実行

[root@server ~]# chmod +x spamassassin-update
[root@server ~]# ./spamassassin-update

毎日自動実行されるディレクトリへ移動

[root@server ~]# mv spamassassin-update /etc/cron.daily/

SpamAssassin ルール自動更新 cron 設定

[root@server ~]# vi /etc/cron.d/sa-update

変更 ( )(コメントアウト解除)

# 10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
 
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log

エラーメッセージ対処(sa-update.cron 編集)

[root@server ~]# vi /usr/share/spamassassin/sa-update.cron

追加

    #[ -f /etc/init.d/amavisd ] && /sbin/service amavisd condrestart > /dev/null
    [ -f /etc/init.d/amavisd ] && /sbin/service amavisd condrestart 2>&1 |grep -v "Waiting for the process\|terminated by SIGTERM\|OK\|amavisd stopped\|Starting amavisd\|^$"

Postfix 設定ファイル編集

[root@server ~]# vi /etc/postfix/main.cf

追加

#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail

procmail 設定ファイル作成

[root@server ~]# vi /etc/procmailrc

procmail ログローテーション設定ファイル作成

[root@server ~]# vi /etc/logrotate.d/procmail
/home/*/Maildir/.procmail.log {
    missingok
    nocreate
    notifempty
}

Postfix 設定ファイル ( master ) 編集

[root@server ~]# vi /etc/postfix/master.cf

Postfix 設定ファイル ( main ) 編集

[root@server ~]# vi /etc/postfix/main.cf

最終行へ追加

content_filter=smtp-amavis:[127.0.0.1]:10024

Postfix 再起動

[root@server ~]# /etc/rc.d/init.d/postfix restart

スパム専用メールボックス作成

既存ユーザ対処
スパム専用メールボックス作成スクリプト作成

[root@server ~]# vi spamfolder-create

スパム専用メールボックス作成スクリプト実行

[root@server ~]# sh spamfolder-create

スパム専用メールボックス作成スクリプト削除

[root@server ~]# rm -f spamfolder-create

新規ユーザ対処

[root@server ~]# mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp}
[root@server ~]# chmod -R 700 /etc/skel/Maildir/.Spam

procmail 設定ファイル編集

[root@server ~]# vi /etc/procmailrc

以下を最後尾へ追加

# SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送
:0
*^X-Spam-Flag: YES
$SPAM

スパムメールを SpamAssassin に学習させてチェック精度を上げる。
受信トレイの既読メールを正常メールとして、Spam フォルダの既読メールをスパムメールとして、定期的に SpamAssassin に学習させる。

SpamAssassin 学習スクリプト作成

[root@server ~]# vi spamassassin-learn

SpamAssassin 学習スクリプトに実行権限付加

[root@server ~]# chmod 700 spamassassin-learn

SpamAssassin 学習スクリプトを毎日自動実行されるディレクトリへ移動

[root@server ~]# mv spamassassin-learn /etc/cron.daily/

メールクライアント設定(IMAP)





サーバ証明書のインポート
インポート用サーバ証明書作成

[root@server ~]# cd /etc/pki/tls/certs
[root@server certs]# openssl x509 -in mail.pem -outform DER -out mail.der

mail.der というファイル名でインポート用サーバ証明書が作成される。
クライアント側へコピーし、ダブルクリックでサーバ証明書をインポートする。

Webmail システム構築(SquirrelMail)

SquirrelMail ダウンロード(最新版

[root@server ~]# wget http://sourceforge.net/projects/squirrelmail/files/stable/1.4.22/squirrelmail-webmail-1.4.22.tar.bz2
[root@server ~]# tar jxvf squirrelmail-webmail-1.4.22.tar.bz2
[root@server ~]# mv squirrelmail-webmail-1.4.22 /var/www/webmail
[root@server ~]# rm -f squirrelmail-webmail-1.4.22.tar.bz2
[root@server ~]# mkdir -p locales ; cd locales

locales ダウンロード(最新版

[root@server locales]# wget http://jaist.dl.sourceforge.net/sourceforge/squirrelmail/ja_JP-1.4.18-20090526.tar.bz2
[root@server locales]# tar jxvf ja_JP-1.4.18-20090526.tar.bz2

locales インストール(入力

[root@server locales]# ./install
Please enter path to your squirrelmail installation:/var/www/webmail
[root@server locales]# cd
[root@server ~]# rm -rf locales

squirrelmail.po ファイル作成

[root@server ~]# cd /var/www/webmail/po/
[root@server po]# ./compilepo ja_JP
[root@server po]# cd

data ディレクトリのパーミッション及び所有者変更

[root@server ~]# chmod 730 /var/www/webmail/data/
[root@server ~]# chown -R apache:apache /var/www/webmail/data/

SquirrelMail 設定スクリプト実行

[root@server ~]# /var/www/webmail/config/conf.pl

必須プラグインの導入
Compatibility プラグイン:プラグインを全てのバージョンの SquirrelMail でそのまま動くようにする。
Empty Trash プラグイン:ゴミ箱フォルダを自動的に空にする。
Secure Login プラグイン:ログイン時に自動的に https(SSL) でアクセスする。

Compatibility プラグインダウンロード(最新版

[root@server ~]# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcompatibility-2.0.16-1.0.tar.gz

Empty Trash プラグインダウンロード(最新版

[root@server ~]# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fempty_trash-2.0-1.2.2.tar.gz

Secure Login プラグインダウンロード(最新版

[root@server ~]# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsecure_login-1.4-1.2.8.tar.gz

SquirrelMail プラグインディレクトリへ移動

[root@server ~]# cd /var/www/webmail/plugins/

展開

[root@server plugins]# tar zxvf /root/compatibility-2.0.16-1.0.tar.gz
[root@server plugins]# tar zxvf /root/empty_trash-2.0-1.2.2.tar.gz
[root@server plugins]# tar zxvf /root/secure_login-1.4-1.2.8.tar.gz

削除

[root@server plugins]# rm -f /root/compatibility-2.0.16-1.0.tar.gz
[root@server plugins]# rm -f /root/empty_trash-2.0-1.2.2.tar.gz
[root@server plugins]# rm -f /root/secure_login-1.4-1.2.8.tar.gz

設定ファイル作成

[root@server plugins]# cp empty_trash/config_example.php empty_trash/config.php
[root@server plugins]# cp secure_login/config.sample.php secure_login/config.php

secure_login 設定ファイル編集(ログイン後もSSL通信を継続)

[root@server plugins]# vi secure_login/config.php

変更

   // if you want user sessions to remain in SSL for their entire duration,
   // set the following to zero:
   //
   $change_back_to_http_after_login = 0;

SquirrelMail 設定スクリプト実行

[root@server ~]# /var/www/webmail/config/conf.pl

「Main Menu」で「8. Plugins」を選択し、「compatibility」「empty_trash」「secure_login」をそれぞれ選択する。

以下入力で終了。

Command >> q

You have not saved your data.
Save?  [Y/n]: y
Data saved in config.php

Exiting conf.pl.
You might want to test your configuration by browsing to
http://your-squirrelmail-location/src/configtest.php
Happy SquirrelMailing!

php 設定ファイル編集

[root@server ~]# vi /etc/php.ini

変更

upload_max_filesize = 10M

post_max_size = 10M

設定反映

[root@server ~]# /etc/rc.d/init.d/httpd reload

SquirrelMail 用 Apache 設定ファイル作成

[root@server ~]# vi /etc/httpd/conf.d/webmail.conf
Alias /webmail /var/www/webmail
<Directory /var/www/webmail>
    AllowOverride Limit
</Directory>

設定反映

[root@server ~]# /etc/rc.d/init.d/httpd reload

Logwatch のインストール

あれ!?メールサーバ動いている筈なのに、Logwatch が来ない!

なんと、Logwatch インストールされていませんでした…orz。
今まで、Logwatch ってインストールしたことないと思うんだが…。

[root@server ~]# yum -y install logwatch

ちなみに、僕はデフォルトの設定で使っているので、設定ファイルは弄っていないのですが、Logwatch の設定ファイルは2ヶ所にあります。

/etc/logwatch/conf/logwatch.conf

/usr/share/logwatch/default.conf/logwatch.conf

と言っても、/etc/logwatch/conf/logwatch.conf には、
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)
と書かれているだけです。
「デフォルト値以外の設定だけを、/etc/logwatch/conf/logwatch.conf に書いてね。(デフォルト値は、/usr/share/logwatch/default.conf/logwatch.conf に書いてあるよ)」ってことらしいですわ。
つまり、/etc/logwatch/conf/logwatch.conf の設定が優先され、設定されていないものはデフォルト値が使用されるようです。

データベースサーバ構築(MySQL)

mysql-server インストール

[root@server ~]# yum -y install mysql-server

また、PHP から MySQL データベースへアクセスするためには「php-mysql」が必要なので、(僕は、MySQL を PHP の掲示板で使っています)

[root@server ~]# yum -y install php-mysql

「php-mysql」が無いと、「Fatal error: Call to undefined function mysql_connect()」が出ます。

MySQL 設定ファイル編集

[root@server ~]# vi /etc/my.cnf

MySQL 起動

[root@server ~]# /etc/rc.d/init.d/mysqld start

MySQL 自動起動設定

[root@server ~]# chkconfig mysqld on

MySQL 初期設定

[root@server ~]# mysql_secure_installation

【MySQL 操作】
MySQL へ root でログイン

[root@server ~]# mysql -u root -p
Enter password: MySQL の root パスワード応答

WAVE データベースへの全てのアクセス権限を持った、新規ユーザ yuu(パスワード:yuupass )を登録

mysql> grant all privileges on WAVE.* to yuu@localhost identified by 'yuupass';

ユーザテーブルをリフレッシュ

mysql> flush privileges;

ユーザ確認

mysql> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
| yuu  | localhost |
+------+-----------+
3 rows in set (0.01 sec)

ログアウト

mysql> exit
Bye
[root@server ~]#

yuu ユーザで MySQL サーバーへログイン

[root@server ~]# mysql -u yuu -pyuupass

WAVE データベース作成

mysql> create database WAVE;

データベース作成確認

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| WAVE               |
+--------------------+
2 rows in set (0.09 sec)

WAVE データベースへ接続

mysql> use WAVE;

BBS テーブル作成

mysql> create table BBS(id int, name varchar(50));

テーブル作成確認

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| BBS            |
+----------------+
1 row in set (0.01 sec)

BBS テーブルへデータ登録

mysql> insert into BBS (id, name) values(1, 'ゆう');

データ登録確認

mysql> select * from BBS;
+------+--------+
| id   | name   |
+------+--------+
|    1 | ゆう    |
+------+--------+
1 row in set (0.01 sec)

BBS テーブル内データ削除

mysql> delete from BBS where id='1';

BBS テーブル削除

mysql> drop table BBS;

データベース WAVE 削除

mysql> drop database WAVE;

ユーザ yuu 削除
MySQL へ root でログインし、全てのデータベースへのアクセス権限を剥奪及びユーザ削除

mysql> revoke all privileges on *.* from yuu@localhost;
mysql> delete from mysql.user where user='yuu' and host='localhost';
mysql> flush privileges;

【その他】
1)MySQL データのバックアップ及びリストア(ダンプファイル名:WAVEsql.dmp)

[root@server ~]# mysqldump -u yuu -pyuupass WAVE > WAVEsql.dmp
[root@server ~]# mysql -u yuu -pyuupass WAVE < WAVEsql.dmp

2)僕の場合、MySQL 内の文字化けが発生しました。
PHP の掲示板上では文字化けにはならないのですが、MySQL 内のデータが文字化けしていました。
my.cnf で文字コードを指定する方法もあるようですが、僕は PHP ファイルの方で以下のように指定しています。

mysql_connect の後に、「mysql_set_charset("utf8");」を追加。

ストリーミングサーバ構築(Darwin Streaming Server)

(32bit の場合の手順です。64bit の場合は、あてるパッチなどが異なります)

qtss というユーザが必要なので作成します。

[root@server ~]# useradd qtss

ディレクトリ移動し、Darwin Streaming Server 6.0.3 のソースファイルをダウンロード及び解凍。

[root@server ~]# cd /usr/local/src
[root@server src]# wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar
[root@server src]# tar xvf DarwinStreamingSrvr6.0.3-Source.tar

パッチファイルをダウンロードし、適用。

[root@server src]# wget http://www.abrahamsson.com/dss-6.0.3.patch
[root@server src]# patch -p0 < dss-6.0.3.patch

コンパイル

[root@server src]# cd DarwinStreamingSrvr6.0.3-Source
[root@server DarwinStreamingSrvr6.0.3-Source]# ./buildtarball

やたら「警告」が出ますが、最後は

・・・・・
・・・・・
Done.
StreamingProxy--Linux/
StreamingProxy--Linux/streamingproxy.conf
StreamingProxy--Linux/StreamingProxy
StreamingProxy--Linux/StreamingProxy.html
Success!

「Success!」…らしいです。

インストール

[root@server DarwinStreamingSrvr6.0.3-Source]# cd DarwinStreamingSrvr-Linux
[root@server DarwinStreamingSrvr-Linux]# ./Install

終わりの方で、「administrator user name」と「administrator Password」を決めて入力します。

・・・・・
・・・・・
Installation Complete

Darwin Streaming Server Setup

In order to administer the Darwin Streaming Server you must create an administrator user 
[Note: The administrator user name cannot contain spaces, or single or double quote characters, and cannot be more than 255 characters long].
Please enter a new administrator user name: 決めて入力


You must also enter a password for the administrator user 
[Note: The administrator password cannot contain spaces, or quotes, either single or double, and cannot be more than 80 characters long].
Please enter a new administrator Password: 決めて入力
Re-enter the new administrator password: 再入力
Adding userName Darwin
Setup Complete!

1220番(管理画面へのアクセス用)と8000番(mp3 配信用)のポートを開けます。(僕は mp3 配信しかしていませんので)

ブラウザで管理画面へアクセスします。
http://www.wave440.com:1220/
インストール後は起動していると思いますが、管理画面へアクセス出来なければ、以下をしてみて下さい。

[root@server ~]# /usr/local/sbin/streamingadminserver.pl

インストール途中で決めた、「administrator user name」と「administrator Password」でログインします。

以降は、コチラ

【その他】
1)「Media Directory」のグループ変更
ファイル転送をするユーザ(yuu)でメディア・ファイルをアップ出来るように、「/usr/local/movies」のグループを変えています。

[root@server ~]# chgrp -R yuu /usr/local/movies

2)自動起動

[root@server ~]# vi /etc/rc.local

以下を書き加えています。

/usr/local/sbin/streamingadminserver.pl

Webalizer インストール

・Webalizer が吐き出す HTML ファイルの文字コードは、UTF-8 に変換しています。
・アクセスには、Basic 認証+SSL を使用しています。

Webalizer のインストールに必要な gd-devel , libpng-devel , db4-devel をインストール

[root@server ~]# yum -y install gd-devel libpng-devel db4-devel

Webalizer ダウンロード(最新版

[root@server ~]# wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-05-src.tgz

展開

[root@server ~]# tar zxvf webalizer-2.23-05-src.tgz

展開先ディレクトリへ移動してインストール

[root@server ~]# cd webalizer-2.23-05
[root@server webalizer-2.23-05]# ./configure --enable-dns --with-dblib=/lib --mandir=/usr/share/man --with-language=japanese
[root@server webalizer-2.23-05]# make && make install

ホームディレクトリへ戻って、展開先ディレクトリとダウンロードしたファイルを削除

[root@server webalizer-2.23-05]# cd
[root@server ~]# rm -rf webalizer-2.23-05
[root@server ~]# rm -f webalizer-2.23-05-src.tgz

apache のアクセスログを EUC コードに変換するスクリプトを作成

[root@server ~]# vi jconvertlog.pl

実行権付与

[root@server ~]# chmod 700 jconvertlog.pl

Webalizer 設定ファイルをサンプルよりコピー

[root@server ~]# cp /usr/local/etc/webalizer.conf.sample /usr/local/etc/webalizer.conf

Webalizer 設定ファイル編集

[root@server ~]# vi /usr/local/etc/webalizer.conf

アクセスログ解析結果出力先を作成

[root@server ~]# mkdir /var/www/usage

.htpasswd ファイルを新規に作成する(登録ユーザ:hoge,パスワード:passwd

[root@server ~]# htpasswd -b -c -m /etc/httpd/conf/.htpasswd hoge passwd

※既存の .htpasswd ファイルへユーザを追加する場合には、オプションの「-c」は不要。

Webalizer 解析結果アクセス設定ファイル新規作成

[root@server ~]# vi /etc/httpd/conf.d/webalizer.conf

Web サーバ設定反映

[root@server ~]# /etc/rc.d/init.d/httpd reload

webalizer コマンドのパスを確認する

[root@server ~]# which webalizer
/usr/local/bin/webalizer

Webalizer の実行スクリプト作成

[root@server ~]# vi webalizer.sh

実行権付与

[root@server ~]# chmod 700 webalizer.sh

Webalizer 実行

[root@server ~]# ./webalizer.sh

https://サーバー名/usage/ にアクセス
認証画面が表示され、ユーザー名,パスワードに .htpasswd ファイルへ登録したユーザー名(hoge),パスワード(passwd)を入力

http://サーバー名/usage/ にアクセス
エラーとなる

毎日00:00に Webalizer 実行スクリプトを実行するよう指定

[root@server ~]# crontab -e
00 00 * * * /root/webalizer.sh

ネットワークトラフィック監視ツール導入(NET-SNMP + MRTG)

・出力される HTML ファイルの文字コードが UTF-8 になるように変換しています。
・アクセスには、Basic 認証+SSL を使用しています。
・IP アドレス「163.43.165.118」,ネットワークアドレス「163.43.164.0/23」は、僕の環境の値です。

設定に際し、IP アドレスとネットワークアドレスが必要になるので、確認。

[root@server ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 0A:1B:2C:3D:4E:5F
          inet addr:163.43.165.118  Bcast:163.43.165.255  Mask:255.255.254.0
          ・・・・・・・・・・・・・・・・・・・・・・・・
          ・・・・・・・・・・・・・・・・・・・・・・・・

IP アドレス「163.43.165.118」,サブネットマスク「255.255.254.0」。なので、ネットワークアドレスは「163.43.164.0」。

net-snmp インストール

[root@server ~]# yum -y install net-snmp

NET-SNMP 設定ファイル編集

[root@server ~]# vi /etc/snmp/snmpd.conf

NET-SNMP 起動及び自動起動設定

[root@server ~]# /etc/rc.d/init.d/snmpd start
[root@server ~]# chkconfig snmpd on

MRTG インストール

[root@server ~]# yum -y install mrtg

MRTG 設定ファイル作成

[root@server ~]# cfgmaker --ifref=descr --ifdesc=descr public@163.43.165.118 > /etc/mrtg/mrtg.cfg

メモリ MAX 値確認

[root@server ~]# free
             total       used       free     shared    buffers     cached
Mem:        509552     498584      10968          0       6568     135908
-/+ buffers/cache:     356108     153444
Swap:      1052248      36012    1016236

MRTG 設定ファイル編集

[root@server ~]# vi /etc/mrtg/mrtg.cfg

システムの文字コードが UTF-8 のため、設定ファイルの文字コードを EUC に変換する

[root@server ~]# cp /etc/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg.org
[root@server ~]# nkf -e /etc/mrtg/mrtg.cfg.org > /etc/mrtg/mrtg.cfg

※以後、MRTG 設定ファイルを編集する場合は /etc/mrtg/mrtg.cfg.org を編集し、EUC に変換する

MRTG 起動スクリプト作成

[root@server ~]# vi mrtg.sh

MRTG 起動スクリプトへ実行権限付加

[root@server ~]# chmod 700 mrtg.sh

MRTG 起動

[root@server ~]# ./mrtg.sh
[root@server ~]# ./mrtg.sh
[root@server ~]# ./mrtg.sh

※MRTG は過去2回起動時のログを使用するため、mrtg.cfg 修正後2回目までの MRTG 起動時には必ず WARNING が出るので、mrtg.cfg 修正後は MRTG 起動を3回行なう。

mrtg 監視結果アクセス設定ファイル編集

[root@server ~]# vi /etc/httpd/conf.d/mrtg.conf

Web サーバへ設定を反映

[root@server ~]# /etc/rc.d/init.d/httpd reload

https://サーバー名/mrtg/ にアクセス
認証画面が表示され、ユーザー名,パスワードに .htpasswd ファイルへ登録したユーザー名(hoge),パスワード(passwd)を入力

MRTG 定期自動起動設定ファイル編集

[root@server ~]# vi /etc/cron.d/mrtg

変更 ( )

*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok
 
*/5 * * * * root /root/mrtg.sh

MRTG インデックスページ作成

[root@server ~]# indexmaker --columns=1 --addhead="<META HTTP-EQUIV=¥"Content-Type¥" CONTENT=¥"text/html; charset=UTF-8¥">" /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

コマンドラインで添付ファイル付きメールを送信

ログファイルを定期的にメール送信したかったのでググってみたら、Mutt(マット)という良さげなのがあったのでインストールしてみました。

Mutt インストール

[root@server ~]# yum -y install mutt

コマンドは、こんな感じです。↓

mutt -a 添付したいファイル -s "subject" hoge@example.com < 本文のファイル

はじめは、ログファイルを添付して送ろうかと思っていたのですが、コレ、本文をファイルで読み込めるんですよね。
ログファイルの文字数が少なかったので「本文」として送っています。すぐに見れるのでこっちの方が良いですわ。

んで、

[root@server ~]# vi logmail.sh
#!/bin/bash

mutt -s "LogFile" logfileokuttene@gmail.com < /var/log/hoge.log

みたいなのを作って

[root@server ~]# chmod 700 logmail.sh
[root@server ~]# mv logmail.sh /etc/cron.daily/

Clam AntiVirus WARNING OUTDATED!

使用しているリポジトリで最新のバージョンのものがまだ提供されていないと、以下のようなエラーが出ます。

WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.8 Recommended version: 0.98

このような時は、リポジトリの方で対応するまで待った方が良いと思います。
他の方法で最新版をインストールしたり、他のリポジトリに変更したりすると、設定ファイルの配置や内容が異なったりするようです。
この状態でもウイルス定義は更新されているので、僕は気長に待っています。

古いカーネルを削除する

カーネルのアップデートを何度かしていると、Logwatch の Disk Space のトコで、

 /dev/xvda1 => 91% Used. Warning. Disk Filling up.

とか言われたり、

/etc/cron.daily/0yum.cron:

Error: Transaction Check Error:
  installing package kernel-2.6.32-279.1.1.el6.i686 needs 15MB on the /boot filesystem

Error Summary
-------------
Disk Requirements:
  At least 15MB more space needed on the /boot filesystem.

とかゆうメールが届いたりします。

これは、古いカーネルが /boot 領域に溜まって、新しいカーネルがインストール出来ないということのようです。

とりあえず、ファイルシステムの使用状況を確認するなら、

[root@server ~]# df -h

現在使用中のカーネルを確認するなら、

[root@server ~]# uname -r

インストール済みのカーネル関連のパッケージを確認するなら、

[root@server ~]# rpm -qa | grep kernel

最新カーネルと1世代前のカーネルを残し、それよりも古いカーネルを削除するなら、

[root@server ~]# package-cleanup --oldkernels

最新カーネルを適用するには、サーバの再起動が必要です。

- guitar site WAVE -