Как установить несколько версий PHP с Nginx на Ubuntu 18.04 и 16.04

Данный учебный материал поможет вам настроить два VirtualHost на веб-сервере Nginx с различными версиями PHP. Первый VirtualHost будет использовать PHP 5.6, а второй — PHP 7.Просто следуйте инструкциям. Также возможно использование большего количества версий PHP с Nginx, но в этом руководстве рассмотрим только два варианта.

Для начала убедитесь, что у вас установлены все необходимые зависимости. Установите Nginx, если он еще не установлен:

sudo apt update
sudo apt install nginx

После этого добавьте репозитории для нужных версий PHP. Для этого вам потребуется установить ondrej/php репозиторий:

sudo add-apt-repository ppa:ondrej/php
sudo apt update

Теперь установим необходимые версии PHP:

sudo apt install php5.6-fpm
sudo apt install php7.2-fpm

Настройка Nginx для работы с несколькими версиями PHP заключается в использовании разных сокетов для каждой версии. Откройте файл конфигурации вашего первого VirtualHost:

sudo nano /etc/nginx/sites-available/example1.com

Внутри этого файла добавьте следующий код:

server {
listen 80;
server_name example1.com;bashCopy coderoot /var/www/example1.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
}
}

Теперь создайте файл конфигурации для второго VirtualHost:

sudo nano /etc/nginx/sites-available/example2.com

Добавьте следующий код:

server {
listen 80;
server_name example2.com;bashCopy coderoot /var/www/example2.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}

Сохраните и закройте оба файла, затем создайте символьные ссылки в директории sites-enabled:

sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/

Теперь проверьте конфигурацию Nginx на наличие ошибок:

sudo nginx -t

Если все верно, перезапустите Nginx:

sudo systemctl restart nginx

Теперь вы можете проверить работу каждого VirtualHost, создав простые index.php файлы в корневых директориях:

Зайдите на http://example1.com и http://example2.com, чтобы убедиться, что каждая версия PHP работает корректно. Удачи в настройке!

Установка PHP

Для установки нужных версий PHP мы воспользуемся PPA, который доступен для использования. Введите следующие команды, чтобы добавить PPA в вашу систему.

sudo apt install python-software-properties sudo add-apt-repository ppa:ondrej/php

В рамках этого урока я использовал PHP 5.6 и PHP 7.2 для настройки их с веб-сервером Nginx. Для работы с несколькими версиями PHP мы применим PHP FPM и FastCGI. Давайте установим необходимые пакеты на вашей системе.

apt update sudo apt install php5.6 php5.6-fpm sudo apt install php7.2 php7.2-fpm

Также может потребоваться установка дополнительных модулей PHP, однако для данного учебника достаточно перечисленных выше пакетов.

После установки службы php-fpm запустятся автоматически. Используйте команды ниже, чтобы проверить состояние обеих служб.

sudo systemctl status php5.6-fpm sudo systemctl status php7.2-fpm

Если службы не запустились автоматически, вы можете запустить их вручную с помощью следующих команд:

sudo systemctl start php5.6-fpm sudo systemctl start php7.2-fpm

Кроме того, вы можете настроить автоматический запуск этих служб при загрузке системы:

sudo systemctl enable php5.6-fpm sudo systemctl enable php7.2-fpm

Не забудьте также установить необходимые модули для работы с базами данных и другими сервисами, которые могут понадобиться в вашем проекте. Например:

sudo apt install php5.6-mysql php7.2-mysql

Это обеспечит совместимость с MySQL. Для работы с другими системами, такими как PostgreSQL, установите соответствующие модули.

Теперь вы готовы использовать несколько версий PHP на вашем сервере. Не забудьте также настроить конфигурацию Nginx для правильной обработки запросов к каждой версии PHP.

Установка Nginx

Пакеты веб-сервера Nginx можно найти в официальном репозитории Ubuntu. Откройте терминал на вашей машине или подключитесь по SSH к удаленной системе. Выполните следующие команды для установки последней версии веб-сервера Nginx.

sudo apt update

sudo apt install nginx

После завершения установки Nginx, вы можете запустить его с помощью команды:

sudo systemctl start nginx

Также рекомендуется настроить Nginx для автоматического запуска при загрузке системы:

sudo systemctl enable nginx

Для проверки статуса службы выполните:

sudo systemctl status nginx

Если всё прошло успешно, вы сможете открыть веб-браузер и ввести http://localhost или IP-адрес вашего сервера. Вы должны увидеть страницу приветствия Nginx.

Дополнительно, если вы хотите управлять конфигурацией Nginx, файлы конфигурации обычно находятся в директории /etc/nginx/. Основной файл конфигурации — nginx.conf, а дополнительные конфигурации для сайтов можно разместить в папке sites-available и создать символьные ссылки в папке sites-enabled.

Также не забудьте проверить конфигурацию на наличие ошибок перед перезапуском Nginx. Это можно сделать с помощью команды:

sudo nginx -t

Если проверка прошла успешно, вы можете перезапустить Nginx для применения изменений:

sudo systemctl restart nginx

Для управления журналами Nginx можно использовать следующие команды. Журнал доступа находится по пути /var/log/nginx/access.log, а журнал ошибок — по пути /var/log/nginx/error.log. Вы можете просматривать их с помощью команды:

tail -f /var/log/nginx/error.log

Это позволит вам следить за записями в реальном времени. Убедитесь, что у вас есть соответствующие права доступа для работы с этими файлами.


Конфигурация Nginx

Теперь пора приступить к настройке сайтов на сервере Nginx. Для тестирования я создам два сайта, каждый из которых будет использовать свою версию PHP. Сначала создайте две папки на вашем сервере.

sudo mkdir /var/www/php56
sudo mkdir /var/www/php72

Теперь создайте файл index.php, который будет содержать функцию phpinfo().

echo "" > /var/www/php56/index.php
echo "" > /var/www/php72/index.php

Далее создайте серверные блоки для обоих сайтов в Nginx. Последние версии Nginx хранят конфигурационные файлы серверных блоков в директории /etc/nginx/sites-available. Создайте файл для первого виртуального хоста и откройте его в удобном текстовом редакторе.

sudo vim /etc/nginx/sites-available/php56.example.com

Добавьте следующий контент, убедившись, что используете корректное имя сервера и путь к каталогу в соответствии с вашей конфигурацией. Этот сайт будет работать с PHP 5.6.

# Приложение на PHP 5.6
server {
listen 80;
root /var/www/php56;
index index.php;
server_name php56.example.com;
location ~ \.php$ {
# С php-fpm через unix-сокеты
fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}

Аналогичным образом создайте второй файл конфигурации VirtualHost для работы с PHP 7.Откройте файл конфигурации в текстовом редакторе:

sudo vim /etc/nginx/sites-available/php72.example.com

Добавьте следующий контент в файл, используя корректные ServerName и DocumentRoot.

# Приложение на PHP 7.2
server {
listen 80;
root /var/www/php72;
index index.php;
server_name php72.example.com;
location ~ \.php$ {
# С php-fpm через unix-сокеты
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}

Отлично, вы успешно создали оба сайта в Nginx. Однако они пока не активированы. Nginx сохраняет активные сайты в каталоге /etc/nginx/sites-enabled. Вам нужно создать символическую ссылку для каждого конфигурационного файла в этом каталоге или воспользоваться следующей командой.

sudo ln -s /etc/nginx/sites-available/php56.example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/php72.example.com /etc/nginx/sites-enabled/

После того как вы внесли все изменения, перезапустите Nginx, чтобы применить новые настройки.

sudo systemctl restart nginx.service

Ваши настройки завершены. Переходите к следующему шагу, чтобы проверить свою конфигурацию.

Чтобы проверить, что ваши сайты работают корректно, откройте браузер и перейдите по адресам http://php56.example.com и http://php72.example.com. Если всё настроено правильно, вы увидите информацию о версии PHP для каждого сайта.

Также рекомендуется проверять логи ошибок Nginx, если что-то идет не так. Логи обычно находятся по пути:

/var/log/nginx/error.log

Если вы видите ошибки в логах, это может помочь вам быстро диагностировать и исправить проблемы. Убедитесь, что ваши настройки конфигурации правильные и что PHP-FPM запущен для обеих версий PHP.

Кроме того, вы можете использовать команду nginx -t для проверки синта

Тестирование настройки

Теперь все готово. Вы можете открыть оба сайта в своем любимом веб-браузере. Вы увидите, что php56.example.com отображает версию PHP 5.6, а php72.example.com — конфигурацию PHP 7.2.

Несколько версий PHP с Nginx и PHP 7.2
Несколько версий PHP с Nginx и PHP 5.6

Поздравляем, ваша платформа полностью готова для размещения веб-сайтов с различными версиями PHP. Желаем удачи в хостинге!

Важно помнить, что использование нескольких версий PHP может потребовать настройки дополнительных параметров конфигурации для каждой версии. Убедитесь, что ваши веб-приложения совместимы с выбранной версией PHP. Также рекомендуется периодически проверять обновления безопасности для всех установленных версий PHP.

Если вы столкнетесь с проблемами при работе с различными версиями PHP, проверьте логи ошибок сервера и настройки виртуальных хостов в конфигурации Nginx. Это поможет быстро выявить и устранить возможные проблемы.

Для повышения производительности ваших сайтов стоит рассмотреть использование кеширования, например, с помощью Redis или Memcached. Это особенно полезно при работе с динамическими веб-приложениями, использующими PHP.

Также не забывайте о резервном копировании данных. Регулярное создание резервных копий поможет вам избежать потери информации в случае сбоя системы или ошибки на сайте.

Настройка виртуальных хостов для разных версий PHP

Организация работы с несколькими конфигурациями программного обеспечения требует продуманного подхода к настройке окружений. Эффективное распределение запросов между различными экземплярами позволяет оптимизировать производительность и адаптировать систему под специфические требования приложений. В данном разделе рассмотрим, как создать виртуальные хосты, чтобы обеспечить нужную среду для каждого проекта.

Первым шагом станет создание отдельных конфигурационных файлов для каждого хоста. Это обеспечит возможность использования различных настроек и параметров для разных приложений. Важно правильно указать пути к необходимым ресурсам и соответствующие параметры окружения.

После этого необходимо настроить обработку запросов. Для каждого хоста можно указать конкретный сокет или порт, к которому будет подключаться нужная конфигурация. Таким образом, система будет автоматически направлять входящие запросы к правильному экземпляру, что гарантирует совместимость и стабильность работы приложений.

Заключительным этапом станет проверка работоспособности настроенных хостов. Убедитесь, что каждое приложение функционирует корректно и получает доступ к необходимым ресурсам. Это позволит избежать конфликтов и обеспечит надежную работу всех проектов в одном окружении.

Читайте также:  Рейтинг предпочтений пользователей Linux

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *