念のため、PHP 7を試して、PHP 5で動作する他のサイトを維持しながら、サイトをPHP 7で動作させたいと思います。そのため、ドメインの仮想ホスト構成から、実行するphpを決定できます。
私はPHPバージョン管理を見て、2つのバージョンを実行できることを見ましたが、私が見つけたものはApacheのようです。私はnginxの下でこれを行う方法に関するより明確な指示を探しています。また、重要な場合に備えてhhvmを実行しています。
まず、php5-fpm
とphp7.0-fpm
を 共同インストール可能なphp5とphp7.0用のOndřejSurýのPPA :からインストールする必要があります。
Sudo apt-get install python-software-properties
Sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
次に、nginx
を使用して、FPMパッケージの使用を提案します。したがって、それに応じてパッケージをインストールします。
Sudo apt-get update
# We need to ***remove*** php5 packages, so we can use php5.6 packages
# from the PPA instead
Sudo apt-get remove php5-common
Sudo apt-get autoremove
# Now we install php5.6 packages.
Sudo apt-get install php5.6-fpm
# Now, install php7.0-fpm. You may need to install separate PHP plugins
# for databases, extensions, etc. later.
Sudo apt-get install php7.0-fpm
ソース: 「PHP 7のインストール方法」の質問に対する回答 、および自分からのカスタムコメントと修正。
次に、nginx
。 nginx
は、構成と同じ程度にしかできません。 nginxサーバーブロックには、これに似たPHP処理ブロックが存在する可能性が非常に高くなります(「デフォルト」の設定例から)。
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
この構成は、php5-fpm
にのみ渡されます。実際には、これはサーバーブロック全体に適用されます。これを実行する最も簡単な方法は、2番目のサーバーブロック(たとえば、test.domain.tld
)を使用し、代わりにPHP 7.0 fastcgi_pass
宛先を提供することです。 Xenialのphp7.0では、これは(Xenial nginxパッケージに最近アップロードされた修正から抽出された)このような結果になりますが、Ondrejのパッケージのレイアウトがわからないので、正確な詳細を指定できません(/etc/php7.0/fpm/pool.d/www.conf
またはそれと似て、どこでリッスンしているかを判断します):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-fpm:
fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}
組み込みのphp5
ソケット(先ほど削除した)の代わりにphp5.6
ソケットが使用されていることを検証するには、php5
ブロックに対して同様のことを行う必要があります。
次に、2番目のテストドメインを使用してphp7.0
テストを実行します。ただし、これを行う場合はサイトのコピーを作成してください-php7.0
での作業が完了したら、別のテストコピーが必要になる可能性があります。問題なく「スイッチオーバー」。
残念ながら、php5
とphp7.0
を同じサーバーブロック内で動作させる簡単な方法はありません。サイトやアプリケーションなどのパスを変更して、php5
およびphp7.0
の1つ。このようなサイトのリワークは厄介になる可能性があるため、サイトコードの2つの別個のコピーを実行することをお勧めします。1つはphp7.0
移行用、もう1つは運用中のphp5
用です。