Как установить php 7 для запуска около php 5 в Ubuntu с помощью nginx

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

Я посмотрел на управление версиями php и увидел, что можно запустить две версии, хотя те, которые я нашел, похоже на apache. Я ищу более четкие инструкции о том, как сделать это под Nginx. У меня также есть HHVM работает в случае, если это имеет значение.

9
задан 3 April 2016 в 18:11

1 ответ

Во-первых, необходимо установить php5-fpm и php7.0-fpm от PPA Ondřej Surý для co-installable 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 только может быть столь же хорошим как Ваши конфигурации. У Вас очень вероятно есть PHP обработка блока на Вашем nginx блоке (блоках) сервера, подобном этому (от конфигурации в качестве примера 'по умолчанию'):

# 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 на Гостеприимном это собирается закончиться что-то вроде этого (извлеченный из фиксации, недавно загруженной на Гостеприимный 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 сокет (который мы просто удалили).

Затем используйте второй тестовый домен для выполнения php7.0 тестирование. Удостоверьтесь, тем не менее, что сделали копию своего сайта, если Вы захотите сделать это то - вероятно, будет необходимо иметь отдельную копию тестирования так, чтобы, после того как Вы закончили получать его работающий с php7.0, можно просто 'переключиться' без проблемы.

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

11
ответ дан 4 April 2016 в 04:11

Другие вопросы по тегам:

Похожие вопросы: