ページへ戻る
印刷
Gentoo Linuxな生活/複数バージョンのPHP同時起動で悩む
をテンプレートにして作成 ::
Nest Of Hawk
xpwiki
:Gentoo Linuxな生活/複数バージョンのPHP同時起動で悩む をテンプレートにして作成
開始行:
*違うバージョンのPHPを動かしたい!
Webアプリを運用していると、開発が活発なアプリ、あまり更新...
では、行ってみましょう
*どうやって複数バージョンのPHPを共有させるか
ApacheでPHPで記述されたWebアプリを駆動するには、以下の手...
+モジュール
+CGI
+FastCGI
モジュールの場合は、mod_phpを用いて、Apacheのプロセス内で...
CGIは、Apacheから、HTTPリクエストがあるたびにPHPのプロセ...
FastCGIは、PHPのプロセスを予め起動させておき、ApacheにHTT...
この中で、GCI方式が最も重そうな方法であることはご理解いた...
*準備
**PHPのビルド
-PHPのUSEフラグに"fpm"を追加します。
-make.confに以下の記述を追加します。
PHP_TARGETS="php5-6 php7-1"
ここのPHP_TARGETSは、インストールしておきたいバージョンの...
-emergeします。
おしまい。
**Apacheのビルド
-make.confのAPACHE2_MODULESに、"proxy proxy_fcgi"を追記し...
-emergeします。
おしまい。
*動作設定
モジュールによる起動は既にできていることとします。このた...
ApacheのFCGI Proxyモジュールを用いて、バックエンドのPHPと...
**Apache側
/etc/conf.d/apache2内のAPACHE2_OPTSに、以下の定義を追記し...
-D PHP -D PROXY
**PHP側
***起動PHPの指定
今回は、以下の設定とします。
-FastCGIのデフォルトはPHP7.1
-さらにもう一つFastCGIのPHP5.6を駆動する
起動するバージョンを設定してやります。
# eselect php set fpm php7.1
さらに、普通に設定すると、FPM版PHPの起動シェルは1つしかあ...
# cd /etc/init.d
# cp php-fim php-fpm5.6
# vi php-fpm5.6
さて、このコピーしたphp-fpm5.6の頭にある以下の部分を修正...
PHP_SLOT="${SVCNAME#php-fpm-}"
↓
PHP_SLOT="php5.6"
eselectで指定するphpのバージョン名ね
***PHP7.1側の設定
/etc/php/fpm-php7.1/fpm.d/www.confを編集します。今回は、U...
user = nobody # FPM版のPHPの起動...
group = nobody # FPM版のPHPの起動...
listen = /var/run/php-fpm/www.sock # 通信するポートを...
listen.owner = nobody # 上記ソケットのユ...
listen.group = nobody # 上記ソケットのグ...
listen.mode = 0660 # 上記ソケットのア...
特に起動ユーザ、グループ、ソケットのユーザ、グループ、ア...
***PHP5.6側の設定
/etc/php/fpm-php5.6/php-fpm.confを編集します。今回は、UNI...
user = nobody # FPM版のPHPの起動...
group = nobody # FPM版のPHPの起動...
listen = /var/run/php-fpm/www5.6.sock # 通信するポート...
listen.owner = nobody # 上記ソケットのユ...
listen.group = nobody # 上記ソケットのグ...
listen.mode = 0660 # 上記ソケットのア...
7.1のときと設定の注意は変わりませんが、ポイントは、listen...
**Apache側のFPM動作の設定
/etc/apache2/70_mod_php.confを以下のように記載。
<IfDefine PHP>
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php-fpm/w...
</FilesMatch>
# Set it to handle the files
<IfModule mod_mime.c>
AddHandler application/x-httpd-php .php ....
AddHandler application/x-httpd-php-source...
</IfModule>
DirectoryIndex index.php index.phtml
</IfDefine>
起動オプションにPHPが指定されていたら、拡張子.phpにマッチ...
*プロセス起動
ApacheとPHP-FPMを再起動します。
# /etc/init.d/apache2 restart
# /etc/init.d/php-fpm restart
# /etc/init.d/php-fpm5.6 restart
*使用するPHPバージョンの宣言
-古いバージョンで起動させたいWebアプリだけ、.htaccessで制...
と、言うことで、各Webアプリは、ディレクトリで別れて格納さ...
<IfDefine PHP>
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php-fpm/www5.6.so...
</FilesMatch>
DirectoryIndex index.php index.phtml
</IfDefine>
.htaccessは、置かれたディレクトリ配下のアクセス条件に上書...
もうおわかりかと思いますが。起動シェルをコピーして、ソケ...
これで、PHPバージョンでアプリが動かなくなる悪夢から解放さ...
終了行:
*違うバージョンのPHPを動かしたい!
Webアプリを運用していると、開発が活発なアプリ、あまり更新...
では、行ってみましょう
*どうやって複数バージョンのPHPを共有させるか
ApacheでPHPで記述されたWebアプリを駆動するには、以下の手...
+モジュール
+CGI
+FastCGI
モジュールの場合は、mod_phpを用いて、Apacheのプロセス内で...
CGIは、Apacheから、HTTPリクエストがあるたびにPHPのプロセ...
FastCGIは、PHPのプロセスを予め起動させておき、ApacheにHTT...
この中で、GCI方式が最も重そうな方法であることはご理解いた...
*準備
**PHPのビルド
-PHPのUSEフラグに"fpm"を追加します。
-make.confに以下の記述を追加します。
PHP_TARGETS="php5-6 php7-1"
ここのPHP_TARGETSは、インストールしておきたいバージョンの...
-emergeします。
おしまい。
**Apacheのビルド
-make.confのAPACHE2_MODULESに、"proxy proxy_fcgi"を追記し...
-emergeします。
おしまい。
*動作設定
モジュールによる起動は既にできていることとします。このた...
ApacheのFCGI Proxyモジュールを用いて、バックエンドのPHPと...
**Apache側
/etc/conf.d/apache2内のAPACHE2_OPTSに、以下の定義を追記し...
-D PHP -D PROXY
**PHP側
***起動PHPの指定
今回は、以下の設定とします。
-FastCGIのデフォルトはPHP7.1
-さらにもう一つFastCGIのPHP5.6を駆動する
起動するバージョンを設定してやります。
# eselect php set fpm php7.1
さらに、普通に設定すると、FPM版PHPの起動シェルは1つしかあ...
# cd /etc/init.d
# cp php-fim php-fpm5.6
# vi php-fpm5.6
さて、このコピーしたphp-fpm5.6の頭にある以下の部分を修正...
PHP_SLOT="${SVCNAME#php-fpm-}"
↓
PHP_SLOT="php5.6"
eselectで指定するphpのバージョン名ね
***PHP7.1側の設定
/etc/php/fpm-php7.1/fpm.d/www.confを編集します。今回は、U...
user = nobody # FPM版のPHPの起動...
group = nobody # FPM版のPHPの起動...
listen = /var/run/php-fpm/www.sock # 通信するポートを...
listen.owner = nobody # 上記ソケットのユ...
listen.group = nobody # 上記ソケットのグ...
listen.mode = 0660 # 上記ソケットのア...
特に起動ユーザ、グループ、ソケットのユーザ、グループ、ア...
***PHP5.6側の設定
/etc/php/fpm-php5.6/php-fpm.confを編集します。今回は、UNI...
user = nobody # FPM版のPHPの起動...
group = nobody # FPM版のPHPの起動...
listen = /var/run/php-fpm/www5.6.sock # 通信するポート...
listen.owner = nobody # 上記ソケットのユ...
listen.group = nobody # 上記ソケットのグ...
listen.mode = 0660 # 上記ソケットのア...
7.1のときと設定の注意は変わりませんが、ポイントは、listen...
**Apache側のFPM動作の設定
/etc/apache2/70_mod_php.confを以下のように記載。
<IfDefine PHP>
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php-fpm/w...
</FilesMatch>
# Set it to handle the files
<IfModule mod_mime.c>
AddHandler application/x-httpd-php .php ....
AddHandler application/x-httpd-php-source...
</IfModule>
DirectoryIndex index.php index.phtml
</IfDefine>
起動オプションにPHPが指定されていたら、拡張子.phpにマッチ...
*プロセス起動
ApacheとPHP-FPMを再起動します。
# /etc/init.d/apache2 restart
# /etc/init.d/php-fpm restart
# /etc/init.d/php-fpm5.6 restart
*使用するPHPバージョンの宣言
-古いバージョンで起動させたいWebアプリだけ、.htaccessで制...
と、言うことで、各Webアプリは、ディレクトリで別れて格納さ...
<IfDefine PHP>
<FilesMatch "\.php$">
SetHandler "proxy:unix:/var/run/php-fpm/www5.6.so...
</FilesMatch>
DirectoryIndex index.php index.phtml
</IfDefine>
.htaccessは、置かれたディレクトリ配下のアクセス条件に上書...
もうおわかりかと思いますが。起動シェルをコピーして、ソケ...
これで、PHPバージョンでアプリが動かなくなる悪夢から解放さ...
ページ名: