トップ 一覧 置換 検索 ヘルプ 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

コピーしたファイルを修正
+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}}