STERFIELD

PHPの複数バージョン共存環境を構築

PHPの複数バージョン共存環境を構築

はじめに

Nginx+PHP多数バージョン共存について
実際に動くところまで記載している記事がほとんどなかったのでまとめました。

ここではPHP5.6系が入ってる環境に5.3.12を導入します

本稿で取り扱うもの

1. phpenvのインストール
2. 別バージョンのPHPを紐付けるサービスとwebサーバーへの設定方法
3. 全体を構築するためのAnsibleスクリプト

phpenvを使って複数バージョンのPHPインストール

先にrbenvに必要なmoduleをインストールします

次にrubyが入っていない状態を前提にして
rbenvから構築をします

次にPATHを通す

ruby-buildプラグインのインストール

ruby 2.4.4のインストール

これでruby2.4.4がシステムワイドにインストールされました。
次にphpenvのインストールです。

PATHの更新。rubyよりも記述は後にすることに注意。

これでPHP v5.3.12がインストールされました。

別バージョンのサービス化

PHPをNginxで動かす場合、Apacheとは異なり
php-fpmというCGIを使います。

このphp-fpmはphpenvでインストールしたPHPのバージョン毎に

に作成されます。
各php本体とphp-fpmの設定ファイルは

にあります。
以下の設定以外は基本的に通常通りです。

9001というポート指定をバージョンごとに変える。
9000, 9001, 9002…
と連番で関連付ければ良いです。

まずは既にインストールされているphp-fpmと同様のディレクトリに
5.3.12を実行できるファイルのリンクを貼ります

次に

のようなコマンドで起動/停止/再起動等が出来るようにします。

というファイルに以下内容のファイルを作成。

これでPHP v5.3.12のCGIを

のように起動出来るようになりました。

Nginxの設定

今までとほぼ変わらず
前項で触れたポート番号をfast_cgi設定を以下のようにするだけ

またPHPのバージョンを変更したいドキュメントルートにて

と実行する。

のバージョンとポート番号が一致していて
かつサービスとしてphp-fpmが起動していないとPHPが正常に動作しません。

Ansibleで自動ビルド

おまけ。

上述のphp-fpmサービス化までの共通部分をansibleのplaybookにしてGitHubにて公開。
https://github.com/m-ohba-sterfield/ansible

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい