- PVSM.RU - https://www.pvsm.ru -
Долгое время все проекты нашей компании работали на PHP5, и вот возникло желание их ускорить путём перехода на PHP7, попутно обновиви всё окружение, необходимое для работы. Сразу возник вопрос: «Как заставить разные проекты работать на разных версиях PHP?»
Что пришло в голову:
Вариант 1, очевидно экономически не выгоден. Вариант 2 мы посчитали сложным в настройке и слишком ресурсоёмким. С этим многие, наверное, не согласятся, однако, мы приняли решение использовать технологию Docker, ввиду её легковесности и простоты переноса приложений. Главным критерием выбора стало то, что Docker решает проблему «works on my machine».
Из СУБД выбрали Maria DB, так как во всех наших проектах важно быстрое чтение данных, необходимости одновременной записи данных нет.
Решили использовать связку Apache2 + Nginx, где Nginx обслуживает статические файлы а Apache2 берёт ответственность за динамику.
В будущем, в систему легко добавить, при необходимости, такие вещи как Redis, Memcached и т.п.
Все наши проекты имеют копии на боевом сервере, используемые для тестирования изменений перед релизом. Поэтому мы условно разделили окружение на 2 части: demo и prod
Каждая из частей иммеют собственный контейнер с б/д. Т.е. базы данных demo и prod разделены. Так же demo и prod и включают в себя котейнер с PHP5 и контейнер с PHP7.
Во главе всего стоит Nginx proxy, направляя запросы именнно в тот контейнер который указан в конфигурационном файле. Это даёт возможность легко переключать версии PHP, просто перенаправив запрос в требуемый контейнер, так как файлы проектов доступны в каждом из них. Разница лишь в том, в какой среде они исполняются.
Пример конфигурации сайта для Nginx proxy:
server {
listen 80;
server_name example.ru www.example.ru;
location / {
proxy_pass http://demo_php7_web;
}
}
Наглядно рассмотреть структуру системы можно на схеме:
Большинство наших проектов работают на платформе 1С-Битрикс, поэтому мы настроили Apache2 и Nginx с учётом требований скипта bitrix_server_test, предоставляемого компанией 1С-Битрикс.
В контейнеры с веб-серверами установлены все необходимые расширения PHP, а также curl, rsyslog, htop, xvfb, libfontconfig, wkhtmltopdf, jpegoptim, optipng. Кроме того, настроено серверное сжатие файлов.
В настоящее время данная система, в которой запущено более 30 проектов, исправно работает на нашем сервере.
Проект доступен на GitHub [1]. Там же приведено более подробное описание файловой структуры проекта и описано как начать работу.
Автор: serkyron
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nginx/275397
Ссылки в тексте:
[1] GitHub: https://github.com/serkyron/dms
[2] Источник: https://habrahabr.ru/post/351286/?utm_campaign=351286
Нажмите здесь для печати.