Rate this post

В этой статье мы рассмотрим одну из задач, которая превратилась в типовую во многих прогрессивных компаниях. Это будет актуально и для тех, кто планирует так или иначе связать свою деятельность с методикой DevOps. Конечно, некоторое программное обеспечение может отличаться друг от друга по версиям, но это не столь критично, так как действия и их последовательность практически идентичны.nnОсновное, на что стоит обратить внимание – это взаимодействие Nginx или Appache с SQL, а также вездесущего PHP. Кстати, база данных может подключаться любая. Все зависит от ваших личных предпочтений, либо требований заказчика. С инструментами определились, но нужно учитывать и тот факт, что все это будет разложено в отдельных контейнерах. Итак, начнем.nnМы не будем останавливаться на разборе всех инструментов, которыми будем пользоваться, так как будем считать, что вы и так все знаете. Иначе, зачем тогда вам эта статья? А если в отношении чего-то у вас возникнут вопросы, то Google всегда под рукой.nnРазделим нашу работу на несколько этапов, каждый из которых будем описан подробно:n

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

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

Здесь стоит отметить, что способ установки docker будет зависеть от той ОС, на которой вы собираетесь работать. Благо, кроссплатформенность еще никто не отменял. Разберем самые популярные варианты:Linux:nnКоманда установки:nnЗапускаем DockernnnnДля упрощения создания структуры понадобится docker-compose, который нужно собрать предварительно из нескольких компонентов:nnУстановка docker-compose с последующим обновлением python:nnАльтернативный вариант установки можно реализовать с помощью # pip install docker-composennnnWindows (не рекомендуем этого делать).nnЕсли вы читаете описание этого метода дальше, значит вы решили не идти легким путем. Поэтому, очень советуем обратить внимание на наличие в ОС поддержку Hyper-V. Она есть в профессиональной версии Windows 10 например. Включите эту опцию в разделе «Включение и отключение компонентов Windows».nnЗатем стоит установить с официального сайта дистрибутив Docker. Рекомендуется дополнительно поставить GUI, такой как Kitematiс, чтобы наблюдать непосредственно за процессом.Чтобы создать нужное окружение нужно указать путь для устанавливаемого проекта в определённую папку. Создадим ее и начнем сам процесс:nnСоздаем структуру папок:nnРеализуем окружение для nginx:nnПосле этого, нужно создать папку MySQL, куда можно будет сложить все данные из базы. Это пригодится, если понадобиться сделать бэкап или осуществить перенос.nВ папке Nginx мы будем хранить лог-файлы, а также конфиги проекта. А в папку PHP переместим Dockerfile, где хранятся все наши настройки и php.ini. В корне расположим сам docker-compose.yml. Итак, создаем конфигурацию для Nginx:nnЕсли вам нужно поставить какой-нибудь сторонний редактор, то на помощь придет эта установочная строка:nnТеперь прописываем в кофиг nginx.conf ниже указанные строки:nnЗдесь стоит отметить, что содержимое конфигурации приведено в базовом минимально необходимом виде. Этого вполне достаточно для безболезненного запуска проекта.nПройдем по самому коду. В первой части мы указываем рабочие порты, а также все нужные index страниц.nnЗатем реализуем сам alias, чтобы указать в нем длинный путь к magento2. Для дальнейшей работы указываем путь к логам и месту их хранения, а потом даем знать системе, где находится непосредственно magento2. В нашем примере – это alias $MAGE_ROOT.nnВо второй части мы указываем необходимые настройки для fastcgi.Третья часть кода отвечает за само отображение, так как зачастую во время запуска показывается пустая страница. Если почитать мануал по magento2, то можно узнать, что для этого нам понадобится перезапись (по-буржуйски реврайтинг).nnЭто уникальный случай, которого вы не встретите на других ОС. Мы предупреждали! Чтобы решить возникшую проблему, перейдем к созданию нового каталога в папке www:nnТеперь нужно загрузить с официального сайта дистрибутив magento2, а затем извлечь содержимое в /mage/Nginx/www/magento2. Настройка Nginx завершена.nnПерейдем к PHP.nnСперва займемся Dockerfile:nnСборку проведем вручную:nnВесь этот код понадобится для задействования необходимых модулей проекта. Также, мы указываем, какие именно части нужно установить, указав заранее их путь, и те настройки, хранящиеся в php.ini, которые нужно перенести.nnПроведем настройку php.ini:nnЗдесь ничего нового мы не придумываем, так как это вариант предложен самими разработчиками Magento2. Просто копируем все из php.ini.sample:n

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

Переходим к созданию docker-compose для сборки проекта:nnУказываем сервисы и параметры для запуска:nnnnНебольшое замечание: если вам вдруг перехочется наблюдать за процессом сборки, можно указать в коде –d. Все, запускаем и наслаждаемся!nnОбратите внимание, что по завершению процесса установки, в директории будет создано множество различных файлов с папками, где и будет расположен наш magento2. И, конечно, первые логи! Найти их можно в папке Nginx/Logs.nnТеперь можно запустить браузер и зайти на localhost, где откроется страница с предложением установить Magento2. В случае, если что-то все равно не работает, вот вам несколько советов:n

    n

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

    1. Зайдите в SQL с помощью «phpmyadmin localhost:8090 логин root пароль mypassword». После этого нужно выбрать magento2 и записать следующий sql запрос:n
    2. Теперь подключитесь к PHP-контейнеру и пропишите следующее:nnСистема перепроверит все содержимое и исправит ошибки, если таковые найдутся. Все должно заработать.

    n

  4. Если вы не можете заставить Docker записать данные в определенную папку, о чем вы узнаете с помощью строки docker-compose up, то:n
      n

    1. Для Линукса: отключите политику защиты и отметьте «отключение до перезагрузки»nnМожно отключить это и навсегдаnnТеперь замените строку:n
    2. Для Windows: зайдите в настройки docker и отметьте shared drivers. Пропишите или укажите путь к месту хранения вашего проекта. Перезапустите Docker. Проблема решена!

    n