Добавить в корзинуПозвонить
Найти в Дзене
М

Обучение Symfony PHP: Установка

Во время установки Symfony, как Вы можете видеть в видео - мне пришлось донастраивать много вещей. На самом же деле, если у нас полностью настроена рабочая среда - то установка Symfony максимально проста. Что бы в этом убедиться - я опишу ниже последовательность действий необходимых непосредственно для установки Symfony и всех пакетов, а после перейдем к разбору необходимых настроек внутри Docker окружения. Итак, вся информация о установке берется с официальной документации Symfony. Создание самого приложения:
API-Приложение: composer create-project symfony/skeleton my_project_name Стандартное web-Приложение: composer create-project symfony/website-skeleton my_project_name Далее нам необходимо перейти в папку нашего проекта, сделать это можно с помошью команды смены дериктории cd. cd my_project_name Следующим шагом нам нужно добавить в приложение компонент "Анотации", он необходим для простого и удобного управления url адресами вашего приложения(роутинг). composer require annotati
Оглавление

Во время установки Symfony, как Вы можете видеть в видео - мне пришлось донастраивать много вещей. На самом же деле, если у нас полностью настроена рабочая среда - то установка Symfony максимально проста.

Что бы в этом убедиться - я опишу ниже последовательность действий необходимых непосредственно для установки Symfony и всех пакетов, а после перейдем к разбору необходимых настроек внутри Docker окружения.

Итак, вся информация о установке берется с официальной документации Symfony.

Создание самого приложения:


API-Приложение:

composer create-project symfony/skeleton my_project_name

Стандартное web-Приложение:

composer create-project symfony/website-skeleton my_project_name

Далее нам необходимо перейти в папку нашего проекта, сделать это можно с помошью команды смены дериктории cd.

cd my_project_name

Следующим шагом нам нужно добавить в приложение компонент "Анотации", он необходим для простого и удобного управления url адресами вашего приложения(роутинг).

composer require annotations

Если Вы собираете полноценное веб-приложение, то Вам понадобиться так же установить компонент TWIG. Это шаблонизатор, который позволяет удобно и безопасно интегрировать PHP код в HTML разметку.

composer require twig

Наверняка Вам нужно где-то хранить данные? Давайте установим ORM для работы с базой данных. В Symfony это крайне мошьный пулемет под названием Doctrina.

composer require symfony/orm-pack
composer require --dev symfony/maker-bundle

На этом все :) Ваше приложение Symfony полностью готово к работе - просто пишите код :)

Донастройки нашей сборки Docker:

1. MySQL8 требует особой настройки.

Как я обьясняю в видео - MySQL8 использует новый вид шифрования sha, который еще не поддерживается(по неясной мне причине) в php7.2 который мы используем. В данном случае выхода у нас 2:

Выход первый: Не использовать MySQL8.

Выход второй: Настроить контейнер MySQL что бы он использовал понятный PHP метод шифрования.

Как Вы понимаете, мы пошли по 2 пути. Для этого были выполнены следующие действия:

1) в docker-compose.yml в секцию mysql был добавлен вызов команды.(опция command - вызывается до сборки контейнера, т.е. 1 раз)

command: mysqld --sql_mode="" --default_authentication_plugin=mysql_native_password

2) По скольку контейнер mysql у нас уже был однажды собран, для того что бы новая команда применилась - нам нужно удалить этот контейнер. Я использовал команду: которая полностью удалила все контейнеры:

Останавливаем все контейнеры:

docker stop $(docker ps -a -q)

Удаляем все контейнеры:

docker container prune

Удаляем все виртуальные хранилища:

docker volume prune

Удаляем все образы контейнеров:

docker image prune

Пересобираем все контейнеры:

docker build --no-cache

Запускаем контейнеры опять:

docker-compose up -d

Если интересно, подробнее о том что делают команды можно почитать в моей подборке тут.

2. Не были установлены необходимые расширения PHP. В частности pdo_mysql.

Тут думаю особо останавливаться нету смысла, в видео наглядно показано и рассказано. Если в двух словах:
В Dockerfile PHP нужно добавить все расширения - которые планирует использовать ваше приложение. Делается это очень просто, пример файла Вы всегда можете посмотреть на нашем ГИТе вот
тут.

Собственно это все что требовалось изменить в Docker для корректной работы с приложением. Больше нам, скорее всего, не придется залезать в настройки Docker.

Важно

В видео я показываю как реальзовать запрос из под докер приложения. Т.е. запустить команду прямо внутри Docker контейнера. Но считаю нужным добавить пару слов:

Все манипуляции с базой данных, нужно производить только через docker exec.

Это обусловленно тем - что соединение с базой данных есть только внутри вашего php контейнера. Например для создания базы данных нельзя использовать:

bin/console doctrine:database:create

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

docker exec -it {ID_PHP_КОНТЕЙНЕРА} app/bin/console doctrine:database:create

Вместо app используем соответственно название дирректории в которой у вас лежит приложение(то как указали в docker-compose).

А вместо {ID_PHP_КОНТЕЙНЕРА} использует ID контейнера PHP полученное с помошью команды docker ps.

_______

GIT занятия: https://github.com/overvoidjs/SymfonyLessons/tree/main/AppSymfony