いまのSunのApache2は、起動に関してバグがあるように思われる。
起動しないのだ。ずーっとバグだと思っていたのだが、設定を変更する必要があることが分かった。今使っているホスティング屋さんが親切にapache2が起動しないように設定したっぽいのだ。ということで、Solaris10 Apache2設定編をご覧くださいませ。
まぁ、そんな設定でもちょっとしたコツで起動できる。
一度、disableしてenableすることで、Apache2を起動できるのだ。
<Apache2関連>
バイナリ /usr/apache2/bin/
設定 /etc/apache2/httpd.conf
プロセスID /var/run/apache2/httpd.pid
起動スクリプト /lib/svc/method/http-apache2
Apacheログ /var/apache2/logs/access_log
公開ディレクトリ /var/apache2/htdocs/
<SMF関連>
SMF用XML /var/svc/manifest/network/http-apache2.xml
起動停止ログ /var/svc/log/network-http\:apache2.log
# /usr/apache2/bin/httpd -v
Server version: Apache/2.0.52
Server built: Jul 20 2005 06:30:22
$ svcs -a | grep http
disabled Jul_28 svc:/network/http:apache2
ちなみに、FMRIが分かる。
Apache2のFMRI: svc:/network/http:apache2
Apache2のFMRI省略形: http または apache2
FMRIが分かっているときは、このように簡単に起動状況を調べる。
$ svcs http
Apache2をすぐに起動できる状態かを調べる。
dependency require_allが全てonlineになっていることを確認する。
依存アプリがonlineになっていればApache2を起動できる。
# svcs -l http
fmri svc:/network/http:apache2
name Apache 2 HTTP server
enabled false
state disabled
next_state none
state_time Mon Jul 28 17:20:23 2008
restarter svc:/system/svc/restarter:default
dependency require_all/error svc:/milestone/network:default (online)
dependency require_all/none svc:/system/filesystem/local:default (online)
dependency optional_all/error svc:/system/filesystem/autofs:default (online)
svcadmコマンドでサービスを起動する。
# svcadm enable http
Apache2を停止する。
# svcadm disable http
Apache2を再起動する。
# svcadm restart http
たいていの場合、Apacheは起動しない。ps -ef | grep http で確認するとやはり起動していない。
なぜなら、httpd.confがノーマルのままだから。
-xオプションで詳細を調べる。
Apache2のFMRI: svc:/network/http:apache2 または http
-xを付けて詳細を確認してみる。
# svcs -x http
svc:/network/http:apache2 (Apache 2 HTTP server)
State: maintenance since Thu Aug 21 06:06:07 2008
Reason: Start method exited with $SMF_EXIT_ERR_CONFIG.
See: http://sun.com/msg/SMF-8000-KS
See: httpd(8)
See: /var/svc/log/network-http:apache2.log
Impact: This service is not running.
State: ...(状態)
Reason: ...(原因)
See: http://sun.com/... (参照URL)
See: ...apache2.log (参照ログ)
Impact: ... (影響)
初めての起動の場合、httpd.confを用意する。
# cd /etc/apache2/
# cp httpd.conf-example httpd.conf
Apache1.xが起動している場合は、停止・無効にさせるか、使用IPアドレスがだぶらないようにしておく。
# svcadm enable http
で、ps -ef | grep http で確認するとたぶん起動していないはず。(おいおい)
一度、disableさせる。
# svcadm disable apache2
再度、enableさせる。
# svcadm enable apache2
Sunのこの新しい起動方式のバグか、Apache2.x側のバグか、ホスティングサービスの初期設定のせいかは分かりませんが、起動しないときは、このようにすれば動くようです。大先輩にアドバイスをいただき、この方法を知りました。
これでもダメなときは、svcs -l http でログファイルの場所を探し、調べてみると「httpd.confの1148行目でSyntax error」なんて言われているかもしれません。(そりゃオレのことだ)