nginxを使用してubuntuでphp 5の横に実行するためにphp 7をインストールする方法


9

私はphp 7を試して、私のサイトがphp 7で動作するようにしたいのですが、万が一に備えて他のサイトをphp 5で動作させ続けたいと思っています。ドメイン仮想ホスト設定から、実行するphpを決定できるようにします。

私はphpのバージョン管理を調べ、2つのバージョンを実行できることを確認しました。私はnginxの下でこれを行う方法についてのより明確な指示を探しています。また、問題が発生した場合に備えて、hhvmを実行しています。

回答:


11

まず、OndřejSurýのPPAをインストールしphp5-fpmphp7.0-fpmそこから、共存可能なphp5とphp7.0をインストールする必要があります

sudo apt-get install python-software-properties
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

次に、nginxFPMパッケージの使用を提案します。したがって、それに応じてパッケージをインストールします。

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のインストール方法」に関する回答 質問、および自分からのカスタムコメントと変更。


第二に、nginxnginxあなたの設定と同じくらい良いことができるだけです。これに似た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.6php5

次に、2番目のテストドメインを使用してテストを実行しphp7.0ます。ただし、これを行う場合は、サイトのコピーを作成する必要があります。別のテスト用コピーが必要になる可能性があります。これによりphp7.0、での作業が完了した後、問題。

残念ながら、同じサーバーブロック内で作成php5してphp7.0作業する簡単な方法はありません。サイトやアプリケーションなどのパスを1つと1つに変更することなくしてphp5php7.0、このようなサイトの手直しは厄介になる可能性があるため、サイトコードの2つの別々のコピーを実行することをお勧めします。1つはphp7.0移行用、もう1つphp5は本番用です。


この方法を選択する場合*php5.6*は、Ondřejが提供するパッケージの使用に固執し、プレーンphp5パッケージを削除する必要があります。
muru

@muruおそらく正しい、それを書こう
トーマス・ウォード

ありがとう!これは思ったよりうまくいきました。最初はpearとcliに問題がありましたが、更新する必要があるリポジトリのバグであることが判明し、機能しました。私のサイトはphp7で非常に高速に動作します。すごい。
恐怖のセミコロン

fpm靴下の名前にも5.6がありました。
toster-cx 2017

2018年のほとんどの時点で、NGINXのphp5.6構成はfastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
Ecksters '28
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.