Установка и настройка 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/ # Кастомные сущности (extends 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_ru:
name: "Интернет-магазин"
code: "WEB_RU"
locales:
- "ru_RU"
- "en_US"
currencies:
- "RUB"
countries:
- "RU"
- "BY"
- "KZ"
hostname: "myshop.ru"
contact_email: "[email protected]"
enabled: true
default_locale: "ru_RU"
base_currency: "RUB"
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
# YooKassa (community)
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
Checklist после установки
- БД создана, миграции применены
- Начальные данные загружены (
sylius:install:setup) - Каналы настроены (URL, валюта, локали)
- Shipping methods созданы
- Tax categories и rates настроены
- Payment methods добавлены и активны
- Ассеты собраны (
yarn build) - Symfony Messenger Worker запущен
- Admin UI доступен (
/admin) - Shop API отвечает (
/api/v2/shop/products)







