SOFTELメモ

</> 技術者募集

Apacheを別ポートで起動して、php7を使えるようにする

問題

既存のApacheを流用して別ポートで起動して、php7を使えるようにしたいです。

http://192.0.2.123/ → php5(モジュール版)
http://192.0.2.123:8000/ → php7(モジュール版)

答え

ポートを変えてしまえば、片方はfastcgi版などしなくてよいのがいいですね。

以下、CentOSにて。

1.Apacheインストール

apache、php5は、標準のリポジトリからのRPMでインストールしてあるものとする。

yum install httpd php

2.Apacheを別ポートで起動する設定

1) ServerRootをコピー

cp -pr /etc/httpd /etc/httpd-php7

2) logs(ログファイル置き場), run(pidファイルなどが入る)のディレクトリ作成(ディレクトリ構成によっては不要)

mkdir /var/log/httpd-php7
mkdir /var/run/httpd-php7

3) シンボリックリンクを修正(ディレクトリ構成によっては不要)

cd /etc/httpd-php7
rm logs
rm run
ln -s ../../var/log/httpd-php7 logs
ln -s ../../var/run/httpd-php7 run

4) httpd.conf を修正

Listen 80 → 8000
ServerName 192.0.2.123:80 → 192.0.2.123:8000
ServerRoot /etc/httpd → /etc/httpd-php7
(PidFile は run/httpd.pid と指定されていたら、シンボリックリンクを修正してあるのでそのままでよい。)

3.php7(モジュール版)を用意

–with-apxs2 付きで自前でコンパイル。

wget http://jp2.php.net/get/php-7.0.4.tar.xz/from/this/mirror -O php-7.0.4.tar.xz
xz -d php-7.0.4.tar.xz
tar -xf php-7.0.4.tar
cd php-7.0.4
./configure --with-apxs2 --prefix=/usr/local/php/7.0.4 --以下-オプションは-お好みで
make
make install

make install すると、最初にインストールしてある方の /etc/httpd/conf/httpd.conf が書き換えられてしまうので、LoadModule が追加されていたらコメントアウトする。

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
↓
#LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so

4.別ポートで起動するApacheでphp7を実行できるようにする

別ポート用に用意した /etc/httpd-php7 の方で、設定変更。

yum install php していたら、php5 の設定が conf.d/php.conf に書かれていると思うので、conf.d/php.conf の内容を削除して、php7 の LoadModule を追加する。

LoadModule php7_module modules/libphp7.so
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

5.別ポートでApache起動

とりあえずは以下のようにconfファイルを指定して起動すればOK。

/usr/sbin/httpd -f /etc/httpd-php7/conf/httpd.conf -k start

サービスに登録したり、自動起動スクリプトをいじったりをしてもよい。

関連するメモ

コメント