Як встановити php 7 для запуску поруч із php 5 на ubuntu з nginx


9

Я хочу спробувати php 7 і змусити мій сайт працювати над php 7 і одночасно підтримувати інші сайти, що працюють на php 5 на всякий випадок. так що з конфігурації віртуального хоста домену я можу вирішити, який php запустити.

Я переглянув управління версіями php і побачив, що можна запустити дві версії, хоча те, що я знайшов, схоже на apache. Я шукаю більш чіткі вказівки, як це зробити під nginx. Я також hhvm працює у випадку, якщо це має значення.

Відповіді:


11

По-перше, вам потрібно встановити php5-fpmі php7.0-fpmз PPA Ondřej Surý для спільної установки php5 та php7.0. :

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. По суті, це стосується всього вашого серверного блоку. Найпростіший спосіб зробити це - мати другий блок сервера (для, скажімо, test.domain.tld) та надати замість призначення PHP 7.0 fastcgi_pass. У php7.0 на Xenial це закінчиться чимось подібним (витягнутий з виправленого файлу, недавно завантаженого до пакета nenix Xenial), однак я не знаю макет пакету 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сокета (який ми щойно видалили).

Потім використовуйте другий тестовий домен для запуску php7.0тестування. Хоча, будь ласка, зробіть копію свого веб-сайту, якщо ви хочете це зробити - можливо, знадобиться окрема тестова копія, щоб після закінчення роботи над нею php7.0можна просто переключитися без проблема.

На жаль, не існує простого способу створення php5та php7.0роботи в межах одного серверного блоку, не змінюючи ваших шляхів для вашого веб-сайту, додатків тощо, щоб вони були одним php5і одним php7.0; така переробка сайтів може стати неприємною, отже, пропозиція запустити дві окремі копії коду сайту, одну для php7.0міграції та одну для php5виробництва.


Якщо ви виберете цей спосіб, тоді вам слід дотримуватися використання *php5.6*пакунків, які надає Ondřej, і видалити звичайні php5пакунки.
муру

@muru, ймовірно, прав, я напишу це в
Thomas Ward

Дякую! Це працювало краще, ніж я очікував. Спочатку були проблеми з грушею та клі, але виявилося, що це помилка в репо, яку мені потрібно було оновити, і вона спрацювала. Мій сайт працює дуже швидко на php7. це дивовижно.
Похмурий крапку з комою

Носок fpm також мав 5,6 у назві.
toster-cx

Станом на майже 2018 рік, конфігурація php5.6 для NGINX становитьfastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
Ecksters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.