前回のphpenvがらみの引き続きですが、php5.6と7を共存させ、なおかつWEBアプリで動かす方法を調べたところapacheの複数インスタンスがであれば可能だとのこと。
早速調べなんとかできました。
やること
- apacheの起動ファイルを2つ作る。後述する設定ファイルの読み込みを分ける
- 設定ファイルを2つに分け、ポート番号やプロセスIDなども分ける
apacheの起動ファイルを2つ作る
通常の起動ファイルであれば/etc/init.d/http
に実行ファイルがあるかと思います。
これをコピーし、/etc/init.d/http2
というファイルを作ります。名前はなんでもいいですが・・・
1 2 3 4 5 6 7 |
//追記。読み込む設定ファイルを指定します。 //設定ファイルについては後述します。 //自分の場合はapachectlの上に書きました。 OPTIONS="-f /etc/httpd/conf/httpd2.conf -k start" //pidとlockファイルをhttp2用に作ります。 pidfile=${PIDFILE-/var/run/httpd/httpd2.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd2} |
設定ファイル
/etc/init.d/httpd2
用の設定ファイルを作ります。(詳細はリンクに任せますが、ディレクトリごと分けたが方が良いです。)
/etc/httpd/conf/httpd2
1 2 3 4 |
//defaultはrun/httpd.pid PidFile run/httpd2.pid //defaultが80なので変えましょう Listen 8080 |
他修正箇所として、下記に注意。
- http2の方にphp7の設定(LoadModuleなど)を反映させ、php5の設定は反映させないこと
- 読み込む子供の設定ファイル(conf.d以下)を変えること(通常のhttpの方でphp7用の設定ファイルを読み込ませないこと)
- 8080ポートを開放すること
- 起動時は
/etc/init.d/httpd2 start
を使うこと アクセスするときは→リバースプロキシ使えば大丈夫です。参考リンク Apacheでのリバースプロキシhttp://example.com:8080
でアクセスすること
またps -auxを見ると下記のようにhttpd2で起動したプロセスが走っていると思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
root 2610 0.0 0.8 189204 17344 ? Ss 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2612 0.0 0.6 189204 12648 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2613 0.0 1.3 192032 28852 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2614 0.0 0.6 189336 13484 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2615 0.0 0.6 189336 13428 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2616 0.0 0.6 189336 13484 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2617 0.0 0.7 189664 15008 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2618 0.0 0.6 189204 12736 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start apache 2619 0.0 0.5 189204 12504 ? S 13:26 0:00 /usr/sbin/httpd -f /etc/httpd/conf/httpd2.conf -k start root 2728 1.0 1.0 190424 22628 ? Ss 13:36 0:00 /usr/sbin/httpd apache 2730 5.6 0.7 192404 16688 ? S 13:36 0:00 /usr/sbin/httpd apache 2731 0.6 0.6 190816 13820 ? S 13:36 0:00 /usr/sbin/httpd apache 2732 0.6 0.6 190816 12868 ? S 13:36 0:00 /usr/sbin/httpd apache 2733 0.0 0.2 190424 5608 ? S 13:36 0:00 /usr/sbin/httpd apache 2734 0.0 0.2 190424 5608 ? S 13:36 0:00 /usr/sbin/httpd apache 2735 0.0 0.2 190424 5612 ? S 13:36 0:00 /usr/sbin/httpd apache 2736 0.6 0.6 190816 12868 ? S 13:36 0:00 /usr/sbin/httpd apache 2737 0.0 0.2 190424 5608 ? S 13:36 0:00 /usr/sbin/httpd |
またWEB上の確認方法としてはphpinfoを出力させて、php7(5を出したいアプリ上では5)が出ればOKです。
[…] apacheで複数インスタンスの起動 […]
[…] apacheで複数インスタンスの起動 […]