トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

一台のマシンで複数のhttpdサーバを立てる

CentOS7以降(Systemd)

http://blog.livedoor.jp/k_shin_pro/archives/44027682.html

 ログファイル等のコピー

ログファイル

# cp -rp /var/log/httpd /var/log/httpd-sub

pidファイル

# cp -rp /var/run/httpd /var/run/httpd-sub

 設定ファイルのコピーとシンボリックリンクの修正

# cp -rp /etc/httpd /etc/httpd-sub

コピーしたディレクトリのlog、runのシンボリックリンク先を変更する

 systemd-tmpfilesの設定

CentOS7から/var/runがtmpfsがマウントされるため、
再起動のたびに/var/runがクリアされる。
そのため、起動時に自動的に必要なディレクトリが作成されるように設定する必要がある。

設定ファイル

設定ファイルの置き場所 備考
/usr/lib/tmpfiles.d デフォルト本体
/etc/tmpfiles.d 上書き用 (優先される)

上記で設定したrunのシンボリック先をtmpfiles.dに登録する。

d /run/httpd-sub   710 root apache
d /run/httpd-sub/htcacheclean   700 apache apache


 httpd.conf編集

ポート番号の変更

Listen 80

とか。

PidFileのパス指定

PidFile run/httpd.pid

を追加。

 サービス環境ファイルのコピーと編集

#cp -p /etc/sysconfig/httpd /etc/sysconfig/httpd-sub

編集
OPTIONSをコメントイン。

OPTIONS="-f /etc/httpd-sub/conf/httpd.conf" 

 実行体のシンボリックリンク作成

#cd /usr/sbin
#ln -s httpd httpd-sub

 サービスファイルのコピーと編集

#cp -p /usr/lib/systemd/system/httpd /etc/systemd/system/httpd-sub

コピーしたファイルを修正

  1. httpd を httpd-subに修正

サンプル

 [Unit]
 Description=The Apache HTTP Server
 After=network.target remote-fs.target nss-lookup.target
  
 [Service]
 Type=notify
 EnvironmentFile=/etc/sysconfig/httpd-sub
 ExecStart=/usr/sbin/httpd-sub $OPTIONS -DFOREGROUND
 ExecReload=/usr/sbin/httpd-sub $OPTIONS -k graceful
 ExecStop=/bin/kill -WINCH ${MAINPID}
 # We want systemd to give httpd some time to finish gracefully, but still want
 # it to kill httpd after TimeoutStopSec if something went wrong during the
 # graceful stop. Normally, Systemd sends SIGTERM signal right after the
 # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
 # httpd time to finish.
 KillSignal=SIGCONT
 PrivateTmp=true
  
 [Install]
 WantedBy=multi-user.target

 起動とサービス追加

起動

systemctl start httpd-sub

サービス追加

systemctl enable httpd-sub

CentOS6以前(SysVinit)

http://d.hatena.ne.jp/neil_sk/20110602/1307024490

設定ファイルのコピーと編集

cp -rp /etc/httpd /etc/httpd2

/etc/httpd2/conf/httpd.conf

ServerRoot
ServerRoot "/etc/httpd2"
PidFile
PidFile run/httpd2.pid
Listenポート
8080
(必要に応じて)DocumentRoot
DocumentRoot "/var/www2/html"
redPidFileはhttpd.confで指定するpidfileと一致させる。

ログディレクトリのコピーと設定

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

OPTIONS="-f /etc/httpd2/conf/httpd.conf" 

実行体のシンボリックリンク作成

ln -s /usr/sbin/httpd /usr/sbin/httpd2

実行体はシンボリックリンクを作成する必要はないが、プロセスをわかりやすくするためにシンボリックリンクを作成しておいたほうが良い。

起動スクリプトとapachectlの複製と修正

cp -p /etc/init.d/httpd /etc/init.d/httpd2
cp -p /usr/sbin/apachectl /usr/sbin/apachectl2

/etc/init.d/httpd2とと/usr/sbin/apachectl2で
  • /etc/httpd
  • /etc/sysconfig/httpd
  • /usr/bin/apachectl

を参照している箇所をそれぞれ修正する

修正する箇所を以下に列挙する。

# config: /etc/httpd2/conf/httpd.conf
# config: /etc/sysconfig/httpd2
# pidfile: /var/run/httpd2.pid
if [ -f /etc/sysconfig/httpd2 ]; then
. /etc/sysconfig/httpd2
apachectl=/usr/sbin/apachectl2
httpd=${HTTPD-/usr/sbin/httpd2}
prog=httpd_2
pidfile=${PIDFILE-/var/run/httpd2.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd2}

サービスに登録

chkconfig --add httpd2

自動起動する場合は

chkconfig httpd2 on


ログローテートの設定

cp -p /etc/logrotate.d/httpd /etc/logrotate.d/httpd2

/etc/logrotate.d/httpd2

/var/log/httpd2/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd2 reload > /dev/null 2>/dev/null || true
    endscript
}


その他

 httpdの実行ユーザ

デーモンの元はrootで実行されるが、それ以外のhttpdはhttpd.confのGroup、Userで指定されたユーザで実行される。

[カテゴリ: OS > Linux]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2017年08月28日 22時44分09秒