!!!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" {{word redPidFileはhttpd.confで指定するpidfileと一致させる。,red}} !ログディレクトリのコピーと設定 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で指定されたユーザで実行される。 {{category2 OS,Linux}}