Данный учебный материал поможет вам настроить два 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. Желаем удачи в хостинге!
Важно помнить, что использование нескольких версий PHP может потребовать настройки дополнительных параметров конфигурации для каждой версии. Убедитесь, что ваши веб-приложения совместимы с выбранной версией PHP. Также рекомендуется периодически проверять обновления безопасности для всех установленных версий PHP.
Если вы столкнетесь с проблемами при работе с различными версиями PHP, проверьте логи ошибок сервера и настройки виртуальных хостов в конфигурации Nginx. Это поможет быстро выявить и устранить возможные проблемы.
Для повышения производительности ваших сайтов стоит рассмотреть использование кеширования, например, с помощью Redis или Memcached. Это особенно полезно при работе с динамическими веб-приложениями, использующими PHP.
Также не забывайте о резервном копировании данных. Регулярное создание резервных копий поможет вам избежать потери информации в случае сбоя системы или ошибки на сайте.
Настройка виртуальных хостов для разных версий PHP
Организация работы с несколькими конфигурациями программного обеспечения требует продуманного подхода к настройке окружений. Эффективное распределение запросов между различными экземплярами позволяет оптимизировать производительность и адаптировать систему под специфические требования приложений. В данном разделе рассмотрим, как создать виртуальные хосты, чтобы обеспечить нужную среду для каждого проекта.
Первым шагом станет создание отдельных конфигурационных файлов для каждого хоста. Это обеспечит возможность использования различных настроек и параметров для разных приложений. Важно правильно указать пути к необходимым ресурсам и соответствующие параметры окружения.
После этого необходимо настроить обработку запросов. Для каждого хоста можно указать конкретный сокет или порт, к которому будет подключаться нужная конфигурация. Таким образом, система будет автоматически направлять входящие запросы к правильному экземпляру, что гарантирует совместимость и стабильность работы приложений.
Заключительным этапом станет проверка работоспособности настроенных хостов. Убедитесь, что каждое приложение функционирует корректно и получает доступ к необходимым ресурсам. Это позволит избежать конфликтов и обеспечит надежную работу всех проектов в одном окружении.

