foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

CentOS標準で入っているApacheの他に別プロセスを起動したい

環境

問題

Apacheプロセスを複数起動したい。

解決

いつか設定ファイルをコピー・編集することで複数起動できる。
まずは設定ファイルをコピーする。

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd2.conf
# cp /etc/httpd/conf.d /etc/httpd/conf2.d

ドキュメント・ルートを別個に用意する場合は作成しておく。

# mkdir /var/www/html2

NICやポートの設定

httpd2.conf、conf2.d/ssl.conf を編集しNICやポートが重ならないようにする。
特にNICを分ける場合は元々の設定ファイルも編集する必要があるので注意する。
httpd2.conf の編集箇所は以下。

Listen 192.168.11.102:80
:
ErrorLog logs/error_log2
:
CustomLog logs/access_log2 combined

conf2.d/ssl.conf の編集箇所は以下。

Listen 192.168.11.102:443
:
ErrorLog logs/ssl_error_log2
TransferLog logs/ssl_access_log2

サーバの起動

# apachectl /f /etc/httpd/conf/httpd2.conf -k start

サーバの停止

# apachectl /f /etc/httpd/conf/httpd2.conf -k stop

サーバ起動時にエラーが発生する

サーバ起動時に下記メッセージが表示される場合がある。
ポート番号は80あるいは443が表示される。

# apachectl -f /etc/httpd/conf/httpd2.conf -k start
(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

Listen でポート番号のみを指定すると、Apacheは全てのNICをListenしてしまう様子。
そのため、各サーバの設定ファイルでIPを指定すれば回避できる。
http.conf だけでなく、ssl.conf の設定も忘れやすいので注意。