Встановлення та налаштування Sylius (Symfony)
Sylius встановлюється через Composer як Symfony-додаток. Є два варіанти: sylius/sylius-standard (повний стек з AdminUI та storefront) та окремі компоненти для вбудовування в існуючий Symfony-додаток. Для нового інтернет-магазину — завжди sylius-standard.
Системні вимоги
- PHP 8.1+ (рекомендується 8.2; підтримка 8.3 з Sylius 2.x)
- Composer 2.x
- PostgreSQL 13+ або MySQL 8.0+
- Node.js 18+ (побудова ассетів)
- Redis (Symfony Messenger, кешування, сесії)
- Elasticsearch 7/8 (опціонально, для пошуку через
bitbag/elasticsearch-plugin)
Створення проекту
composer create-project sylius/sylius-standard my_shop "~2.0"
cd my_shop
Sylius 2.0 — поточна стабільна версія. Для PHP 8.1 з мінімальним стеком:
composer create-project sylius/sylius-standard my_shop "~1.13"
Налаштування .env
# .env.local
APP_ENV=dev
APP_SECRET=your_32_char_secret_here
DATABASE_URL="postgresql://sylius:[email protected]:5432/sylius?serverVersion=16&charset=utf8"
MAILER_DSN=smtp://user:[email protected]:587?encryption=tls&auth_mode=login
MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
# Для admin UI
SYLIUS_ADMIN_ROUTE_PREFIX=/admin
# Опціонально
ELASTICSEARCH_URL=http://localhost:9200
Ініціалізація
# БД
bin/console doctrine:database:create
bin/console doctrine:migrations:migrate --no-interaction
# Завантажити початкові дані: країни, валюти, локалі, типи доставки
bin/console sylius:install:setup
# Завантажити приклади даних (тільки dev)
bin/console sylius:fixtures:load
sylius:install:setup — інтерактивний мастер. Запитує:
- Мову за замовчуванням
- Валюту за замовчуванням
- Дані адміністратора
Структура директорій
my_shop/
├── config/
│ ├── packages/
│ │ ├── sylius_core.yaml
│ │ ├── sylius_product.yaml
│ │ └── sylius_payment.yaml
│ └── routes/
│ ├── sylius_shop.yaml
│ └── sylius_admin.yaml
├── src/
│ ├── Entity/ # Кастомні сутності (розширюють Sylius)
│ │ ├── Product/
│ │ ├── Order/
│ │ └── Customer/
│ ├── Repository/
│ ├── Form/
│ └── EventListener/
├── templates/
│ └── bundles/
│ └── SyliusShopBundle/ # Переопределення шаблонів
└── migrations/
Налаштування каналів через fixtures
Для відтворюваної конфігурації — Suite fixtures:
# config/fixtures/channels.yaml
sylius_fixtures:
suites:
default:
fixtures:
channel:
options:
custom:
web_ua:
name: "Інтернет-магазин"
code: "WEB_UA"
locales:
- "uk_UA"
- "en_US"
currencies:
- "UAH"
countries:
- "UA"
- "BY"
- "KZ"
hostname: "myshop.ua"
contact_email: "[email protected]"
enabled: true
default_locale: "uk_UA"
base_currency: "UAH"
theme_name: ~
tax_calculation_strategy: "order_items_based"
skipping_payment_step_allowed: false
skipping_shipping_step_allowed: false
account_verification_required: false
bin/console sylius:fixtures:load --suite=default
Побудова ассетів
# Встановити npm залежності
yarn install # або npm install
# Dev
yarn dev
# Production
yarn build
Sylius 1.x використовує Webpack Encore. Sylius 2.x — Vite або Webpack (залежно від версії).
Docker Compose
# docker-compose.yaml
version: "3.9"
services:
php:
image: php:8.2-fpm
volumes:
- .:/app
- vendor:/app/vendor
environment:
- APP_ENV=prod
nginx:
image: nginx:alpine
ports: ["80:80"]
volumes:
- .:/app
- ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: sylius
POSTGRES_USER: sylius
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes: [pgdata:/var/lib/postgresql/data]
redis:
image: redis:7-alpine
worker:
image: php:8.2-cli
command: php /app/bin/console messenger:consume async catalog_promotions
volumes:
- .:/app
depends_on: [postgres, redis]
volumes:
pgdata:
vendor:
# docker/nginx.conf
server {
listen 80;
root /app/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
Налаштування методів оплати
Методи оплати додаються через Admin UI (Конфігурація → Методи оплати) або fixtures. Потрібні відповідні плагіни:
# Stripe
composer require sylius/stripe-plugin
# PayPal
composer require payum/paypal-express-checkout-nvp-php
# Спільнотні шлюзи
composer require prometeytrading/sylius-yookassa-plugin
Налаштування Symfony Messenger для черг
# config/packages/messenger.yaml
framework:
messenger:
transports:
async:
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
retry_strategy:
max_retries: 3
delay: 1000
multiplier: 2
catalog_promotions:
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
options:
stream: sylius_catalog_promotions
routing:
'Sylius\Bundle\CoreBundle\CatalogPromotion\Command\UpdateCatalogPromotionState': catalog_promotions
'Sylius\Bundle\CoreBundle\CatalogPromotion\Command\ApplyCatalogPromotionsOnVariants': catalog_promotions
Контрольний список після встановлення
- БД створена, міграції застосовані
- Початкові дані завантажені (
sylius:install:setup) - Канали налаштовані (URL, валюта, локалі)
- Методи доставки створені
- Податкові категорії та ставки налаштовані
- Методи оплати додані та активні
- Ассети побудовані (
yarn build) - Symfony Messenger Worker запущено
- Admin UI доступен (
/admin) - Shop API відповідає (
/api/v2/shop/products)







