同じApacheをコピーして複数動作させる。
要件によって、同じサーバ上で複数でHTTP/HTTPSサービスを起動しなければならない場合が生じます。
そうした場合には、Apacheで仮想ホストを作成するか、別のApacheをコンパイルしてインストールする必要がありますが、それぞれ次のような問題点が存在します。
- 仮想ホストの場合
それぞれのApacheを個別に起動/停止することができない。
既存のApacheをrpmパッケージなどからインストールしている場合、もう一つのApacheのコンパイルオプションが変わってしまう場合がある。
上記2点をカバーするため、既存のApacheをコピーして別のApacheインスタンスとして起動することができます。
こうすれば、全く同じコンパイルオプションを持ったApacheを個別に起動/停止することが可能です。
構成例
今回は下記の通り起動されることとします。
項目 | 既存Apache | 新Apache |
---|---|---|
IPアドレス | 192.168.1.1 | 192.168.1.2 |
ポート | 80 | 80 |
configディレクトリ | /etc/httpd | /etc/httpd2 |
logディレクトリ | /var/log/httpd | /var/log/httpd2 |
以下、手順です。
手順
configの複製と修正
- configをディレクトリ毎コピー
cp -rp /etc/httpd /etc/httpd2
- configを修正する。
vi /etc/httpd2/conf/httpd.conf
以下修正点。
- ServerRoot
- ServerRoot "/etc/httpd2"
- PidFile
- PidFile run/httpd2.pid
- Listenポート
- Listen 192.168.1.2:80
- ServerName
- www.example2.com:80
- DocumentRoot
- DocumentRoot "/var/www2/html"
ログディレクトリの作成
- ログディレクトリをコピー
cp -rp /var/log/httpd /var/log/httpd2
- シンボリックリンクを張り直す
cd /etc/httpd2 rm logs ln -s ../../var/log/httpd2 logs
sysconfigの設定ファイル複製及び修正
- 設定ファイルをコピー
cp -p /etc/sysconfig/httpd /etc/sysconfig/httpd2
- 設定ファイルを編集
vi /etc/sysconfig/httpd2
下記を追加。
- OPTIONS
- OPTIONS="-d /etc/httpd2 -f /etc/httpd2/conf/httpd.conf -D HTTPD_ROOT=/etc/httpd2 -D DEFAULT_PIDLOG=logs/httpd2.pid"
- 元のhttpd用の設定ファイルも念のため編集
vi /etc/sysconfig/httpd
下記を追加。
/usr/sbin/httpdの複製 or シンボリックリンク作成
cp -p /usr/sbin/httpd /usr/sbin/httpd2
or
ln -s /usr/sbin/httpd /usr/sbin/httpd2
起動スクリプト及びapachectlの複製及び修正
- 起動スクリプトをコピー
cp -p /etc/init.d/httpd /etc/init.d/httpd2
- /usr/sbin/apachectlをコピー
cp -p /usr/sbin/apachectl /usr/sbin/apachectl2
- 起動スクリプトを修正
vi /etc/init.d/httpd2
- /usr/sbin/apachectl2を修正
vi /etc/init.d/httpd2
下記を編集。
- /etc/init.d/httpd と/usr/sbin/apachectl2の修正点はほぼ同じ(行数は違うかも)。
- コメント部分その1(9行目付近)
- # config: /etc/httpd21/conf/httpd.conf
- コメント部分その2(10行目付近)
- # config: /etc/sysconfig/httpd2
- コメント部分その3(11行目付近)
- # pidfile: /var/run/httpd2.pid
- sysconfig設定ファイル(16行目付近)
- if [ -f /etc/sysconfig/httpd2 ]; then
- sysconfig設定ファイル(17行目付近)
- . /etc/sysconfig/httpd2
- apachectlのPATHを変更(32行目付近)
- apachectl=/usr/sbin/apachectl2
- httpdのPATHを変更(33行目付近)
- httpd=${HTTPD-/usr/sbin/httpd2}
- プログラム名を変更(34行目付近)
- prog=httpd_81
- PidFileのPATHを変更(35行目付近)
- pidfile=${PIDFILE-/var/run/httpd2.pid}
- lockfileのPATHを変更(36行目付近)
- lockfile=${LOCKFILE-/var/lock/subsys/httpd2}
ログローテートの設定追加
- 追加したログディレクトリのログを対象とする。
cp -p /etc/logrotate.d/httpd /etc/logrotate.d/httpd2
vi /etc/logrotate.d/httpd2
下記の様に編集。
/var/log/httpd2/*log { missingok notifempty sharedscripts postrotate /sbin/service httpd2 reload > /dev/null 2>/dev/null || true endscript }