AmazonLinux で メールサーバーを作る(その2)


・Apache mod_php の設定
mod_phpの設定を行う…ツモリでしたが、何も設定しなくても *.php が動作する上に phpinfo() がそれらしい値を返しています。結果を見る限り、動作に問題は無いようなので、apache mod_php の初期設定そのものは完了している…ということにしておきます。

細かい php.ini の設定は、以下のよう変更しておきます。
display_errors = Off → On
    ※(PHP入門者の)開発用サーバであるため、エラーが表示された方が都合が良い。

max_memory_limit = 128M → 8M
※特にPHPフレームワークを使わないので、少ないメモリ量でOK。


・サーバのタイムゾーンの変更
phpinfo() の出力を確認している時、Apacheのエラーログに以下のような警告が表示されていました。
PHP Warning:  phpinfo(): 
It is not safe to rely on the system's timezone settings.
You are *required* to use the date.timezone setting
or the date_default_timezone_set() function.
In case you used any of those methods and you are still getting this warning,
you most likely misspelled the timezone identifier.
We selected 'UTC' for 'UTC/0.0/no DST' instead in ~
たぶん、時間設定なのかなーと思い、サーバのローカルタイムを変更します。

AmazonLinux では(CentOSと同じように?) /etc/localtime というファイルにローカルのタイムゾーンが設定されているようなので、これを Asia/Tokyo の設定と置換します。
$ cat /etc/localtime.org
TZif2UTCTZif2UTC
UTC0

$ date
Fri Aug  2 08:53:38 UTC 2013

$ sudo cp /usr/share/zoneinfo/Japan localtime
$ date
Fri Aug  2 17:53:53 JST 2013
そりらしく置き換えられたようです。ただ、アプリケーション起動時にしかこの設定はチェックされないようなので、デーモン類にはローカルタイムが反映されていないことになります。念のため、OS全体を再起動しておいた方が良いと思われます。


しかし、それでも警告は消えませんね…。Apacheのログに出力される日時が期待される日本時間になったぐらいしか効果が無いです。
どうやらphp側の問題みたいです。

/etc/php.ini を編集して以下のように設定します。
[Date]
date.timezone = Asia/Tokyo
本当は (Asia/Tokyoではなく) GMT とか UTC と設定したいところですが、PHP初心者(日本人)向けですので、このように設定しておきます。

sudo apachectl -k restart 実行後に、再度 phpingo() のページへアクセスすると、警告は出なくなりました。



・Apacheがせ自動起動しない?
先ほどの php.ini 設定の過程で、EC2インスタンスを再起動すると、なぜかApacheが停止しています。
Apacheの自動起動設定が無いのでしょうか…。

CentOS 系では chkconfig というコマンドで自動起動の確認と設定が出来るらしいので、それを使ってみます。
$ sudo chkconfig
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
cloud-init 0:off 1:off 2:on 3:on 4:on 5:on 6:off
cloud-init-user-scripts 0:off 1:off 2:on 3:on 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpdate 0:off 1:off 2:on 3:on 4:on 5:on 6:off
psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off
racoon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
なぜか全部OFFになってますね。自動起動するように設定します。
$ sudo chkconfig httpd on
$ sudo chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自動起動がONになったようです。
これで、EC2インスタンスを再起動しても、きちんとApacheが動作しています。



ファイルアップロードなどの設定を見直していないような気もしますが、とりあえずはコレでApache mod_php の設定はOKということにしておきます。




次回は Postfix の設定をします。