Встановлення — Symfony
Скрінкаст
Віддаєте перевагу відеоурокам? Перегляньте серію скрінкастів Cosmic Coding with Symfony.
Технічні вимоги
Перш ніж створити свій перший застосунок на Symfony, ви маєте:
- Встановити PHP 8.4 або новіший і ці розширення PHP (у більшості інсталяцій PHP 8 вони встановлені та ввімкнені за замовчуванням): Ctype, iconv, PCRE, Session, SimpleXML і Tokenizer;
- Встановити Composer, який використовується для встановлення пакетів PHP.
Також встановіть Symfony CLI. Це необовʼязково, але дає вам корисний бінарник під назвою symfony, який надає всі інструменти, потрібні для розробки та запуску вашого застосунку Symfony локально.
Бінарник symfony також надає інструмент для перевірки того, чи відповідає ваш компʼютер усім вимогам. Відкрийте консольний термінал і виконайте цю команду:
$ symfony check:requirements
Примітка
Symfony CLI має відкритий вихідний код, і ви можете зробити свій внесок у репозиторії symfony-cli/symfony-cli на GitHub.
Створення застосунків Symfony
Відкрийте консольний термінал і виконайте будь-яку з цих команд, щоб створити новий застосунок Symfony:
# виконайте це, якщо ви створюєте традиційний вебзастосунок
$ symfony new my_project_directory --version="8.1.*" --webapp
# виконайте це, якщо ви створюєте мікросервіс, консольний застосунок або API
$ symfony new my_project_directory --version="8.1.*"
Єдина різниця між цими двома командами — кількість пакетів, які встановлюються за замовчуванням. Опція --webapp встановлює додаткові пакети, щоб дати вам усе необхідне для створення вебзастосунку.
Якщо ви не використовуєте бінарник Symfony, виконайте ці команди, щоб створити новий застосунок Symfony за допомогою Composer:
# виконайте це, якщо ви створюєте традиційний вебзастосунок
$ composer create-project symfony/skeleton:"8.1.*" my_project_directory
$ cd my_project_directory
$ composer require webapp
# виконайте це, якщо ви створюєте мікросервіс, консольний застосунок або API
$ composer create-project symfony/skeleton:"8.1.*" my_project_directory
Незалежно від того, яку команду ви виконаєте для створення застосунку Symfony, усі вони створять новий каталог my_project_directory/, завантажать у нього деякі залежності й навіть згенерують базові каталоги та файли, потрібні вам для початку роботи. Іншими словами, ваш новий застосунок готовий!
Примітка
Каталоги кешу та логів проєкту (за замовчуванням
<project>/var/cache/і<project>/var/log/) мають бути доступні для запису вебсерверу. Якщо у вас виникнуть проблеми, прочитайте, як налаштувати права доступу для застосунків Symfony.
Налаштування наявного проєкту Symfony
Окрім створення нових проєктів Symfony, ви також працюватимете над проєктами, які вже створили інші розробники. У такому разі вам потрібно лише отримати код проєкту та встановити залежності за допомогою Composer. Припускаючи, що ваша команда використовує Git, налаштуйте свій проєкт такими командами:
# клонуйте проєкт, щоб завантажити його вміст
$ cd projects/
$ git clone ...
# нехай Composer встановить залежності проєкту в vendor/
$ cd my-project/
$ composer install
Імовірно, вам також знадобиться налаштувати свій файл .env і виконати кілька інших специфічних для проєкту завдань (наприклад, створити базу даних). Коли ви вперше працюєте з наявним застосунком Symfony, може бути корисно виконати цю команду, яка показує інформацію про проєкт:
$ php bin/console about
Запуск застосунків Symfony
У продакшені вам слід встановити вебсервер на кшталт Nginx чи Apache і налаштувати його на запуск Symfony. Цей метод також можна використовувати, якщо ви не користуєтеся локальним вебсервером Symfony для розробки.
Однак для локальної розробки найзручніший спосіб запуску Symfony — використання локального вебсервера, який надає інструмент Symfony CLI. Цей локальний сервер підтримує HTTP/2, паралельні запити, TLS/SSL та автоматичну генерацію сертифікатів безпеки, серед іншого.
Відкрийте термінал, перейдіть у каталог свого нового проєкту й запустіть локальний вебсервер так:
$ cd my-project/
# це блокує ваш термінал логами сервера; натисніть Ctrl+C, щоб зупинити його
$ symfony server:start
# це запускає сервер у фоні, тож ви можете й далі користуватися терміналом
$ symfony serve -d
Переглядайте свій застосунок за URL, який показує Symfony Server (наприклад, http://localhost:8000/). Ви також можете відкрити застосунок автоматично:
# відкриває URL застосунку у вашому браузері за замовчуванням
$ symfony open:local
# запускає сервер і відкриває застосунок однією командою
$ symfony server:start --open
Порада
Дізнайтеся більше про всі доступні команди в документації Symfony CLI.
Порада
Вебсервер працює з будь-яким PHP-застосунком, а не лише з проєктами Symfony, тож це дуже корисний універсальний інструмент розробки.
Інтеграція Symfony з Docker
Якщо ви хочете використовувати Docker із Symfony, дивіться /setup/docker.
Встановлення пакетів
Поширена практика під час розробки застосунків Symfony — встановлювати пакети (Symfony називає їх бандлами), які надають готові до використання можливості. Пакети зазвичай потребують певного налаштування перед використанням (відредагувати якийсь файл, щоб увімкнути бандл, створити якийсь файл, щоб додати початкову конфігурацію, тощо).
Здебільшого це налаштування можна автоматизувати, і саме тому Symfony містить Symfony Flex — інструмент для спрощення встановлення/видалення пакетів у застосунках Symfony. Технічно кажучи, Symfony Flex — це плагін Composer, який встановлюється за замовчуванням під час створення нового застосунку Symfony і який автоматизує найпоширеніші завдання застосунків Symfony.
Порада
Ви також можете додати Symfony Flex до наявного проєкту.
Symfony Flex змінює поведінку команд Composer require, update і remove, щоб надати розширені можливості. Розгляньте такий приклад:
$ cd my-project/
$ composer require logger
Якщо ви виконаєте цю команду в застосунку Symfony, який не використовує Flex, ви побачите помилку Composer, яка пояснює, що logger не є коректною назвою пакета. Проте якщо в застосунку встановлено Symfony Flex, ця команда встановлює й вмикає всі пакети, потрібні для використання офіційного логера Symfony.
Це можливо тому, що багато пакетів/бандлів Symfony визначають «рецепти» (recipes) — набір автоматизованих інструкцій для встановлення й увімкнення пакетів у застосунках Symfony. Flex відстежує встановлені ним рецепти у файлі symfony.lock, який має бути закомічений у ваш репозиторій коду.
Рецепти Symfony Flex створює спільнота, і вони зберігаються у двох публічних репозиторіях:
-
Основний репозиторій рецептів — курований список рецептів для якісних пакетів, які підтримуються. За замовчуванням Symfony Flex шукає лише в цьому репозиторії.
-
Репозиторій contrib-рецептів містить усі рецепти, створені спільнотою. Усі вони гарантовано працюють, але повʼязані з ними пакети можуть не підтримуватися. Symfony Flex запитає вашого дозволу перед встановленням будь-якого з цих рецептів.
Прочитайте документацію Symfony Recipes, щоб дізнатися все про те, як створювати рецепти для власних пакетів.
Symfony Packs
Іноді одна можливість потребує встановлення кількох пакетів і бандлів. Замість того щоб встановлювати їх окремо, Symfony надає паки (packs) — метапакети 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).
Перевірка вразливостей безпеки
Бінарник symfony, створений під час встановлення Symfony CLI, надає команду для перевірки того, чи містять залежності вашого проєкту якісь відомі вразливості безпеки:
$ symfony check:security
Добра практика безпеки — регулярно виконувати цю команду, щоб мати змогу якнайшвидше оновити або замінити скомпрометовані залежності. Перевірка безпеки виконується локально шляхом завантаження публічної бази даних PHP security advisories, тож ваш файл composer.lock не надсилається в мережу.
Команда check:security завершується з ненульовим кодом виходу, якщо будь-яка з ваших залежностей уражена відомою вразливістю безпеки. Так ви можете додати її до процесу збірки свого проєкту та робочих процесів безперервної інтеграції, щоб вони падали за наявності вразливостей.
Порада
У сервісах безперервної інтеграції ви можете перевіряти вразливості безпеки, виконуючи команду
composer audit. Вона внутрішньо використовує ті самі дані, що йcheck:security, але не потребує встановлення всього Symfony CLI під час CI або на CI-воркерах.
LTS-версії Symfony
Згідно з процесом випуску Symfony, версії з «довготривалою підтримкою» (або скорочено LTS) публікуються кожні два роки. Перегляньте релізи Symfony, щоб дізнатися, яка LTS-версія найновіша.
За замовчуванням команда, що створює нові застосунки Symfony, використовує останню стабільну версію. Якщо ви хочете використати LTS-версію, додайте опцію --version:
# використати найновішу LTS-версію
$ symfony new my_project_directory --version=lts
# використати 'наступну' версію Symfony, яка ще має вийти (усе ще в розробці)
$ symfony new my_project_directory --version=next
# ви також можете обрати точну конкретну версію Symfony
$ symfony new my_project_directory --version="7.4.*"
Скорочення lts і next доступні лише при використанні Symfony для створення нових проєктів. Якщо ви використовуєте Composer, вам потрібно вказати точну версію:
$ composer create-project symfony/skeleton:"7.4.*" my_project_directory
Демозастосунок Symfony
The Symfony Demo Application — це повністю функціональний застосунок, який показує рекомендований спосіб розробки застосунків Symfony. Це чудовий навчальний інструмент для новачків у Symfony, а його код містить безліч коментарів і корисних приміток.
Виконайте цю команду, щоб створити новий проєкт на основі демозастосунку Symfony:
$ symfony new my_project_directory --demo
Починайте кодувати!
Тепер, коли налаштування позаду, час створити вашу першу сторінку в Symfony.
Дізнатися більше
Виправити терміни, дописати розділ або взяти нову главу може кожен. Термінологію узгоджуємо в глосарії, щоб переклад лишався однорідним.