Установка и настройка Symfony

Дата обновления перевода 2023-01-11

Установка и настройка Symfony

Screencast

Предпочитаете видео-уроки? Посмотрите сериал Stellar Development with Symfony.

Технические требования

До создания вашего первого приложения Symfony вы должны:

  • Установить PHP 8.1 или выше, и следующие PHP-расширения (которые устанавливаются и подключаются по умолчанию в большинсте установок PHP 7): Ctype, iconv, JSON, PCRE, Session, SimpleXML, и Tokenizer;
  • Установить Composer, который используется для установки PHP-пакетов.

По желанию вы также можете установить Symfony CLI. Он создает бинарность под названием symfony, которая предоставляет все необходимые вам инструменты для разработки и запуска вашего приложения Symfony локально.

Бинарность symfony также предоставляет инструмент для проверки соответствия вашего компьютера всем требованиям. Откройте ваш консольный терминал и выполните эту команду:

1
$ symfony check:requirements

Note

The Symfony CLI is written in Go and you can contribute to it in the symfony-cli/symfony-cli GitHub repository.

Cоздание приложений Symfony

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

1
2
3
4
5
# выполните это, если вы создаете традиционное веб-приложение
$ symfony new my_project_directory --version="6.2.*" --webapp

# выполните это, если вы создаете микросервис, конспольное приложение или API
$ symfony new my_project_directory --version="6.2.*"

Единственное различие между этими двумя командами - количество пакетов, установленных по умолчанию. Опция --webapp устанавливает все пакеты, которые вам обычно нужны для создания веб-приложения. поэтому и размер установки будет больше.

Если вы не используете бинарность Symfony, выполните эти команды, чтобы создать новое приложение Symfony используя Composer:

1
2
3
4
5
6
7
# выполните это, если вы создаете традиционное веб-приложение
$ composer create-project symfony/skeleton:"6.2.*" my_project_directory
$ cd my_project_directory
$ composer require webapp

# выполните это, если вы создаете микросервис, конспольное приложение или API
$ composer create-project symfony/skeleton:"6.2.*" my_project_directory

Не важно, какую команду вы выполняете для создания приложения Symfony. Все они создадут новый каталог my_project_directory/, скачают в него некоторые зависимости и даже создадут базовые каталоги и файлы, которые вам понадобятся для начала. Другими словами, ваше новое приложение готово!

Note

Кеш проекта и каталог логов (по умолчанию, <project>/var/cache/ и <project>/var/log/) должны быть перезаписываемыми веб-сервером. Если у вас есть проблемы, прочтите как настроить разрешения для приложений Symfony.

Настройка существующего проекта Symfony

В дополнение к созданию новых проектов Symfony, вы также будете работать над проектами. уже созданными другими разработчиками. В таком случае, вам только нужно получить код проекта и установить зависимости с помощью Composer. Предполагая, что ваша команда использует Git, настройте ваш проект следующими командами:

1
2
3
4
5
6
7
# клонировать проект, чтобы скачать его содержание
$ cd projects/
$ git clone ...

# заставить Composer установить зависимости проекта в vendor/
$ cd my-project/
$ composer install

Вам скорее всего также понадобится настроить ваш файл .env и выполнить несколько других задач для проекта (например, создать базу данных). При работе над существующим приложением Symfony впервые, может быть полезно выполнить эту команду, которая отображает информацию о проекте:

1
$ php bin/console about

Запуск приложений Symfony

В производстве, вам нужно установить веб-сервер вроде Nginx или Apache и сконфигурировать его для запуска Symfony. Этот метод также может быть использован, если вы не используете локальный веб-сервер Symfony для разработки.

Однако, для локальной разработки, наиболее удобный способ запуска Symfony - использование локального веб-сервера, предоставленного бинарностью symfony. Этот локальный сервер предоставляет, кроме всего прочего, поддержку HTTP/2, параллельные запросы, TLS/SSL и автоматическое генерирование сертификатов безопасности.

Откройте ваш консольный терминал, перемместите каталог вашего нового проекта и запустите локальный веб-сервер следующим образом:

1
2
$ cd my-project/
$ symfony server:start

Откройте ваш браузер и перейдите на http://localhost:8000/. Если все работает, вы увидите страницу приветствия. Позже, когда вы закончите работать, остановите сервер, нажав Ctrl+C в вашем терминале.

Tip

Веб-сервер работает с любиым PHP-приложением, а не только с проектами Symfony, поэтому это в общем очень полезный инструмент разработки.

Интеграция Symfony с Docker

Если вы хотите использовать Docker с Symfony, см. Использование Docker с Symfony

Установка пакетов

Распространенной практикой при разработке приложений Symfony является установка пакетов (Symfony называет их bundles), которые предоставляют готовые к использованию функции. Пакеты обычно требуют некоторой настройки перед их использованием (редактирования какого-то файла для подключения пакета, создания какого-то файла для добавления изначальной конфигурации, и т.д.).

В большинстве случаев эта настройка может быть автоматизирована и это то, почему Symfony имеет Symfony Flex, инструмент для упрощения установки/удаления пакетов в приложениях Symfony. Технически, Symfony Flex - это плагин Composer, который устанавливается по умолчанию при создании нового приложения Symfony, и который автоматизирует наиболее распространенные задачи приложений Symfony.

Symfony Flex изменяет поведение команд Composer require, update, b remove, чтобы предоставить продвинутые функции. Рассмотрите следующий пример:

1
2
$ cd my-project/
$ composer require logger

Если вы выполните эту команду в приложении Symfony, не использующем Flex, вы увидите ошибку Composer, объясняющую, что logger - это не валидное имя пакета. Однако, если в приложении установлен Symfony Flex, эта команда установит и подключит все пакеты, необходимые для использования официального логгера Symfony.

Это возможно потому что множество пакетов Symfony определяют "рецепты", которые являются набором автоматизированных инструкций для установки и подключения пакетов в приложениях Symfony. Flex ведет учет всех установленных им рецептов в файле symfony.lock, который должен быть отправле в ваше хранилище кода.

Рецепты Symfony Flex предоставляются сообществом и они хранятся в двух публичных хранилищах:

  • Основное хранилище рецептов, текущий список рецептов для пакетов высокого качества. Symfony Flex ищет только в этом хранилище по умолчанию.
  • Хранилище рецептов Contrib, содержит все рецепты, созданные сообществом. Все из них гарантированно работают, но их ассоциированные пакеты могут быть заброшены. Symfony Flex попросит вашего разрешения прежде, чем устанавливать любой из этих рецептов.

Прочтите документацию рецептов Symfony, чтобы узнать все о том, как создавать рецепты для ваших собственных пакетов.

Пэки Symfony

Иногда одна функция требует установки нескольких пакетов; Вместо установки их по одному, Symfony предоставляет пэки, которые являются метапэками Composer, которые включают в себя несколько зависимостей.

Например, чтобы добавить функции отладки в ваше приложение, вы можете выполнить команду composer require --dev debug. Она устанавливает symfony/debug-pack, который, в свою очередь, устанавливает несколько пакетов вроде symfony/debug-bundle, symfony/monolog-bundle, symfony/var-dumper, и т.д.

Вы не увидите зависимости symfony/debug-pack в вашем composer.json, так как Flex автоматически распоквывает пэк. Это означает, что он добавлет только реальные пакеты и зависимости (например, вы увидите новый symfony/var-dumper в require-dev). Хотя это не рекомендуется, вы можете использовать опцию composer require --no-unpack ..., чтобы отключить распаковку.

Проверка уязвимостей безопасности

Бинарность symfony. созданная; когда вы установили Symfony CLI, предоставляет команду для проверки на предмет того, содержат ли зависимости вашего проекта какие-либо известные уязвимости безопасности:

1
$ symfony check:security

Хорошей практикой безопасности является выполнение этой команды регулярно, чтобы обновить или заменить скомпроментированные зависимости как можно быстрее. Проверка безопасности проводится локально путем извлечения публичной базы данных консультативной безопасности PHP, поэтому ваш файл composer.lock не отправляется в сеть.

Команда check:security завершается с ненулевым кодом выхода, если какая-либо из ваших зависимостей затронута известной уязвимостью безопасности. Таким образом, вы можете добавить ее в рабочие процессы построения проекта и непрерывной интеграции, чтобы они были неуспешными при наличии уязвимостей.

Tip

Команда check:security завершается с ненулевым кодом выхода, если какая-либо из ваших зависимостей подверглась известной уязвимости безопасности. Таким образом, вы можете добавить ее в процесс создания вашего проекта, и ваши постоянные рабочие процессы интеграции, чтобы они прекращались при наличии уязвимостей.

Версии Symfony LTS

В соответствии с процессом релиза Symfony, версии "долгосрочной поддержки" (сокращенно LTS) публикуются каждые два года. Посмотрите релизы Symfony, чтобы знать, какая версия LTS является последней.

По умолчанию, команда, которая создает новые приложения Symfony, использует последнюю стабильную версию. Если вы хотите использовать версию LTS, добавьте опцию --version:

1
2
3
4
5
6
7
8
# использовать наиболее новую версию LTS
$ symfony new my_project_name --version=lts

# использовать 'следующую' версию Symfony, которая будет выпущена (все еще в разработке)
$ symfony new my_project_name --version=next

# вы также можете выбрать конкретную версию Symfony
$ symfony new my_project_name --version=5.4

Ярлыки lts и next доступны только при использовании Symfony для создания новых проектов. Если вы используете Composer, вам нужно сообщить точную версию:

1
$ composer create-project symfony/skeleton:"^5.4" my_project_name

Демо-приложение Symfony

Демо-приложение Symfony - это полностью функциональное приложение, которое показывает рекомендованные способ разработки приложений Symfony. Это отличный инструмент обучения для новичков в Symfony и его код содержит десятки комментариев и полезных примечаний.

Выполните эту команду, чтобы создать новый проект, основанный на демо-приложении Symfony:

1
$ symfony new my_project_name --demo