Jobeet, день 1: Начало проекта

Прежде всего, нам нужна дружественное рабочее окружение для веб-разработки. Мы будем использовать Docker с образами nginx и PHP из Docker Hub. Чтобы проверить минимальные требования для работы Symfony 4.1, вы можете обратиться к этой странице.

Конфигурация Docker

После установки Docker и Docker Compose создайте новый каталог с именем jobeet, скопируйте архив и распакуйте его в этом каталоге. Это первоначальная конфигурация для стандартного PHP-проекта, которая была сгенерирована сервисом phpdocker.io. Она включает в себя PHP 7.2, MySQL 5.7 и nginx. Для запуска контейнеров просто выполните следующую команду:

docker-compose up -d

Что мы только что сделали:

  • вызвали docker-compose, который обёртывает функциональность Docker и облегчает работу с ним
  • эта команда считывает конфигурацию из docker-compose.yml из каталога, в котором выполняется команда
  • up означает запуск и выполнение всего нашего приложения
  • -d означает отдельный режим. Команда будет запускать контейнеры в фоновом режиме, и консоль будет доступна для ввода следующих команд.

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

docker-compose ps

Результат должен быть таким же:

      Name                   Command             State           Ports          
-------------------------------------------------------------------------------
jobeet-mysql       docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp 
jobeet-php-fpm     /bin/sh -c /usr/bin/php-fpm   Up      9000/tcp               
jobeet-webserver   nginx -g daemon off;          Up      0.0.0.0:80->80/tcp

Поздравляем! Теперь вы подготовили окружение для проекта Jobeet.

Загрузка и установка Symfony 4.1

Для создания нашего проекта на Symfony, мы будем использовать метод, описанный в официальной документации.

Прежде всего, выполните контейнер с PHP:

docker-compose exec php-fpm bash
  • Команда exec используется для выполнения команд в контейнере
  • php-fpm — это имя контейнера (строка 27 в файлеdocker-compose.yml)
  • bash выполняет bash в контейнере

Теперь вы находитесь в контейнере PHP. Запустите php -v, чтобы проверить, что PHP работает и его версия 7.2.x.

После этого создайте проект Symfony в каталоге tmp (временном каталоге), скопируйте его в каталог проекта, выйдите из контейнера и измените разрешение файлов, чтобы иметь возможность редактировать их из вашей среды IDE:

composer create-project symfony/website-skeleton:4.1 /tmp/jobeet/
cp -aR /tmp/jobeet/. .
exit;
sudo chown -R $USER:$USER .

Мы устанавливаем проект в директорию tmp и копируем его в нужный каталог, потому что команда create-project требует, чтобы целевой каталог был пустой, но в каталоге проекта у нас уже есть файлы Docker.

Проверка установки Symfony

Теперь откройте свой браузер и введите URL http://127.0.0.1. Вы должны увидеть ошибку No route found for "GET /", но в данный момент это нормально, поскольку у нас ещё нет созданных маршрутов.

Консоль Symfony

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

bin/console list

Примечание. Не забудьте сначала войти в PHP-контейнер, если вы ещё не там: docker-compose exec php-fpm bash и выполните эту команду из контейнера php

Окружения

У Symfony 4 есть разные окружения. Если вы взгляните на каталог проекта, то увидите файл .env с переменной APP_ENV=dev внутри. Значение prod означает окружения для продакшена, а dev используется веб-разработчиками при работе над приложением в окружении разработки.

Окружение разработки окажется очень удобной, поскольку оно отобразит вам все ошибки и предупреждения, а панель инструментов веб-отладки (Web Debug Toolbar ) — лучший друг разработчика. Проверьте работу среду разработки, перейдя по URL-адресу http://127.0.0.1 в браузере (обратите внимание на нижнюю панель инструментов отладки).

Панель инструментов отладки

Это все на сегодня. Код можно найти здесь: https://github.com/gregurco/jobeet/tree/day1. Увидимся на следующий день этого урока, где мы поговорим о том, что именно будет на сайте Jobeet!

Дополнительная информация

Следующие шаги

Продолжение учебника: Jobeet, день 2: Проект

Главная страница: Учебник Jobeet с Symfony 4.1