Связаться по:
[email protected]

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Как развернуть на Magento2 Nginx+Php-Fpm+MySQL с раскладкой на Docker

5/5 - (6 голосов)

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

Основное, на что стоит обратить внимание – это взаимодействие Nginx или Appache с SQL, а также вездесущего PHP. Кстати, база данных может подключаться любая. Все зависит от ваших личных предпочтений, либо требований заказчика. С инструментами определились, но нужно учитывать и тот факт, что все это будет разложено в отдельных контейнерах. Итак, начнем.

Мы не будем останавливаться на разборе всех инструментов, которыми будем пользоваться, так как будем считать, что вы и так все знаете. Иначе, зачем тогда вам эта статья? А если в отношении чего-то у вас возникнут вопросы, то Google всегда под рукой.

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

  • Nginx как инструмент для быстрой и оптимальной настройки всех веб-сервисов проекта.
  • Основная БД — MySQL.
  • Использование PHP седьмой версии с учетом некоторых индивидуальных настроек.
  • Сам проект для разворачивания — magento2.

Первый шаг самый простой – устанавливаем Docker

Здесь стоит отметить, что способ установки docker будет зависеть от той ОС, на которой вы собираетесь работать. Благо, кроссплатформенность еще никто не отменял. Разберем самые популярные варианты:

Linux:

Команда установки:

Запускаем Docker

Для упрощения создания структуры понадобится docker-compose, который нужно собрать предварительно из нескольких компонентов:

Установка docker-compose с последующим обновлением python:

Альтернативный вариант установки можно реализовать с помощью # pip install docker-compose

Windows (не рекомендуем этого делать).

Если вы читаете описание этого метода дальше, значит вы решили не идти легким путем. Поэтому, очень советуем обратить внимание на наличие в ОС поддержку Hyper-V. Она есть в профессиональной версии Windows 10 например. Включите эту опцию в разделе «Включение и отключение компонентов Windows».

Затем стоит установить с официального сайта дистрибутив Docker. Рекомендуется дополнительно поставить GUI, такой как Kitematiс, чтобы наблюдать непосредственно за процессом.Чтобы создать нужное окружение нужно указать путь для устанавливаемого проекта в определённую папку. Создадим ее и начнем сам процесс:

Создаем структуру папок:

Реализуем окружение для nginx:

После этого, нужно создать папку MySQL, куда можно будет сложить все данные из базы. Это пригодится, если понадобиться сделать бэкап или осуществить перенос.
В папке Nginx мы будем хранить лог-файлы, а также конфиги проекта. А в папку PHP переместим Dockerfile, где хранятся все наши настройки и php.ini. В корне расположим сам docker-compose.yml. Итак, создаем конфигурацию для Nginx:

Если вам нужно поставить какой-нибудь сторонний редактор, то на помощь придет эта установочная строка:

Теперь прописываем в кофиг nginx.conf ниже указанные строки:

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

Затем реализуем сам alias, чтобы указать в нем длинный путь к magento2. Для дальнейшей работы указываем путь к логам и месту их хранения, а потом даем знать системе, где находится непосредственно magento2. В нашем примере – это alias $MAGE_ROOT.

Во второй части мы указываем необходимые настройки для fastcgi.Третья часть кода отвечает за само отображение, так как зачастую во время запуска показывается пустая страница. Если почитать мануал по magento2, то можно узнать, что для этого нам понадобится перезапись (по-буржуйски реврайтинг).

Это уникальный случай, которого вы не встретите на других ОС. Мы предупреждали! Чтобы решить возникшую проблему, перейдем к созданию нового каталога в папке www:

Теперь нужно загрузить с официального сайта дистрибутив magento2, а затем извлечь содержимое в /mage/Nginx/www/magento2. Настройка Nginx завершена.

Перейдем к PHP.

Сперва займемся Dockerfile:

Сборку проведем вручную:

Весь этот код понадобится для задействования необходимых модулей проекта. Также, мы указываем, какие именно части нужно установить, указав заранее их путь, и те настройки, хранящиеся в php.ini, которые нужно перенести.

Проведем настройку php.ini:

Здесь ничего нового мы не придумываем, так как это вариант предложен самими разработчиками Magento2. Просто копируем все из php.ini.sample:

С настройкой PHP закончили

Переходим к созданию docker-compose для сборки проекта:

Указываем сервисы и параметры для запуска:

Небольшое замечание: если вам вдруг перехочется наблюдать за процессом сборки, можно указать в коде –d. Все, запускаем и наслаждаемся!

Обратите внимание, что по завершению процесса установки, в директории будет создано множество различных файлов с папками, где и будет расположен наш magento2. И, конечно, первые логи! Найти их можно в папке Nginx/Logs.

Теперь можно запустить браузер и зайти на localhost, где откроется страница с предложением установить Magento2. В случае, если что-то все равно не работает, вот вам несколько советов:

  1. Проверьте версию docker-compose. Если ничего не заработало, то скорее всего проблема именно в этом. Просто укажите другую сборку участке кода «version: ‘**’». Ознакомиться с сопоставимыми версиями можно здесь на официальных сайтах.
  2. Если браузер все так же показывает вам пустую страницу, то загляните в конфиг — nginx.conf и добавьте:
  3. Если при запуске страницы вам выдается просто текст без каких-либо фреймов, то стоит выполнить следующие шаги:
    1. Зайдите в SQL с помощью «phpmyadmin localhost:8090 логин root пароль mypassword». После этого нужно выбрать magento2 и записать следующий sql запрос:
    2. Теперь подключитесь к PHP-контейнеру и пропишите следующее:

      Система перепроверит все содержимое и исправит ошибки, если таковые найдутся. Все должно заработать.
  4. Если вы не можете заставить Docker записать данные в определенную папку, о чем вы узнаете с помощью строки docker-compose up, то:
    1. Для Линукса: отключите политику защиты и отметьте «отключение до перезагрузки»

      Можно отключить это и навсегда

      Теперь замените строку:
    2. Для Windows: зайдите в настройки docker и отметьте shared drivers. Пропишите или укажите путь к месту хранения вашего проекта. Перезапустите Docker. Проблема решена!

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.