Nginx ile ubuntu üzerinde php 5 yanında çalıştırmak için php 7 nasıl kurulur


9

Ben php 7 denemek ve aynı zamanda diğer sitelerin php 5 üzerinde çalışan tutmak aynı zamanda php 7 üzerinde çalışan sitemi almak istiyorum. böylece etki alanı sanal ana bilgisayar yapılandırmasından hangi php çalıştırılacağına karar verebilirim.

Ben php sürüm yönetimi baktı ve buldum olanlar apache için görünüyor olsa da, iki sürümü çalıştırmak mümkün olduğunu gördüm. Bunu nginx altında nasıl yapacağınız hakkında daha net talimatlar arıyorum. Ben de önemli durumlarda hhvm çalışan var.

Yanıtlar:


11

Öncelikle, yüklemeniz gerekir php5-fpmve php7.0-fpmgelen eş-yüklenebilen php5 ve php7.0 için Ondřej sury en PPA. :

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

Daha sonra nginxFPM paketlerini kullanmanızı öneririz. Yani, paketleri buna göre kurun:

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

Kaynak: "Php 7 nasıl kurulur?" soru ve kendimden gelen özel yorumlar ve değişiklikler.


İkincisi nginx,. nginxyalnızca yapılandırmalarınız kadar iyi olabilir. Büyük olasılıkla nginx sunucu bloklarınızda buna benzer bir PHP işleme bloğunuz var ('varsayılan' örnek yapılandırmadan):

# 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;
}

Bu yapılandırma yalnızca adresine geçer php5-fpm. Aslında bu, tüm sunucu bloğunuz için geçerli olacaktır. Bunu yapmanın en kolay yolu ikinci bir sunucu bloğuna (örneğin, test.domain.tld) sahip olmak ve bunun yerine PHP 7.0 fastcgi_passhedefini sağlamaktır . Xenial üzerinde php7.0, bu böyle bir şey (son zamanlarda Xenial nginx paketine yüklenen bir düzeltmeden çıkarılır) sona erecek, ancak Ondrej paketinin düzenini bilmiyorum, bu yüzden orada tam özellikleri veremiyorum (kontrol /etc/php7.0/fpm/pool.d/www.confveya nerede dinlediğini belirlemeye benzer):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;

    # With php7.0-fpm:
    fastcgi_pass unix:/var/run/php7.0-fpm.sock;
}

Yerleşik soket (yeni çıkardığımız) yerine soketlerin kullanıldığını php5doğrulamak için bloğunuz için benzer bir şey yapmanız gerekecektir .php5.6php5

Ardından, testi çalıştırmak için ikinci test etki alanını kullanın php7.0. Bununla birlikte, bunu yapmak istiyorsanız sitenizin bir kopyasını oluşturduğunuzdan emin olun - çalışmayı bitirdikten sonra php7.0, yalnızca 'geçiş' yapabilmeniz için ayrı bir test kopyasına sahip olmanız gerekecektir. konu.

Maalesef kolay bir yolu yok yapmak vardır php5ve php7.0aynı sunucu blok içinde çalışması, değil birine sahip vb siteniz uygulamaları için Yollarınızı değiştirmeden php5ve bir için php7.0; sitelerin bu şekilde yeniden işlenmesi kötü olabilir, bu nedenle site kodu, biri php7.0geçiş ve diğeri php5üretim için olmak üzere iki ayrı kopya çalıştırma önerisi .


Bu yolu seçerseniz *php5.6*, Ondřej tarafından sağlanan paketleri kullanmaya devam etmeli ve düz php5paketleri kaldırmalısınız .
muru

@muru muhtemelen doğru, bunu yazacağım
Thomas Ward

Teşekkürler! Bu beklediğimden daha iyi çalıştı. ilk başta armut ve cli ile ilgili sorunlar vardı, ancak güncellemem gereken repoda bir hata olduğu ortaya çıktı ve çalıştı. Sitem php7 üzerinde gerçekten hızlı çalışıyor. inanılmaz.
Korkunç noktalı virgül

Fpm çorap adında 5.6 vardı.
toster-cx

Neredeyse 2018 itibariyle, NGINX için php5.6 yapılandırmasıfastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
Ecksters
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.