Установка та налаштування Symfony

Дата оновлення перекладу 2022-12-23

Установка та налаштування 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.

Створення додатків 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_name/, завантажать у нього деякі залежності і навіть створять базові каталоги та файли, які вам знадобляться для початку. Іншими словами, ваш новий застосунок готовий!

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, та 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

У сервісах безперервної інтеграції ви можете перевірити вразливості безпеки, використовуючи інший окремий проект під назвою Локальний PHP перевірник безпеки. Це такий само проект, використовуваний внутрішньо check:security, але набагато менший у розмірі, ніж вся Symfony CLI.

Версії 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_directory --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

Почніть писати код!

Коли налаштування вже позаду, час створити вашу першу сторінку в Symfony.