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
コピーしたファイルを修正
- 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"
ログディレクトリのコピーと設定
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で指定されたユーザで実行される。
[通知用URL]
Tweet
最終更新時間:2017年08月28日 22時44分09秒