Установка и настройка Sulu CMS (Symfony)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Установка и настройка Sulu CMS (Symfony)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Установка и настройка Sulu CMS (Symfony)

Sulu устанавливается как Symfony-проект через Composer. Требует PHP 8.2+, MySQL/MariaDB или PostgreSQL, и желания разобраться с концепцией Webspaces. Это не WordPress — без понимания Symfony процесс установки занимает больше времени.

Системные требования

  • PHP 8.2+ с расширениями: intl, gd или imagick, pdo_mysql / pdo_pgsql, xml, zip, curl
  • MySQL 8.0+ / MariaDB 10.6+ / PostgreSQL 14+
  • Composer 2
  • Node.js 18+ (для сборки фронтенда backoffice)

Установка

composer create-project sulu/skeleton my-project
cd my-project

Настройка .env.local:

APP_ENV=dev
APP_SECRET=your-secret-key-here

DATABASE_URL="mysql://sulu:[email protected]:3306/sulu_db?serverVersion=8.0"
# или PostgreSQL:
# DATABASE_URL="postgresql://sulu:[email protected]:5432/sulu_db?serverVersion=14&charset=utf8"

[email protected]

Инициализация базы данных

# создать базу данных
php bin/console doctrine:database:create

# запустить миграции Sulu
php bin/console doctrine:migrations:migrate --no-interaction

# создать первого администратора
php bin/console sulu:security:user:create \
  --firstName="Admin" \
  --lastName="Admin" \
  --username=admin \
  [email protected] \
  --locale=ru \
  --role=ROLE_SULU_ADMIN

# заполнить необходимые данные Sulu
php bin/console sulu:document:initialize
php bin/console sulu:phpcr:init

Конфигурация Sulu

# config/packages/sulu.yaml
sulu_core:
    content:
        structure:
            default_type:
                homepage: 'default'
                page: 'default'
            paths:
                app:
                    path: '%kernel.project_dir%/config/templates'
                    type: 'page'
                app_homepage:
                    path: '%kernel.project_dir%/config/templates'
                    type: 'home'

sulu_document_manager:
    mapping:
        - alias: 'page'
          phpcr_type: 'sulu:page'
          class: 'Sulu\Bundle\ContentBundle\Document\PageDocument'

sulu_media:
    storage:
        name: 'local'
        options:
            base_path: '%kernel.project_dir%/public/uploads/media'
            base_url: '/uploads/media'
    image_format_files:
        - '%kernel.project_dir%/config/image-formats.xml'

Настройка Nginx

server {
    listen 443 ssl http2;
    server_name example.com en.example.com admin.example.com;

    root /var/www/my-project/public;
    index index.php;

    ssl_certificate     /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    client_max_body_size 50M;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }

    location /uploads/ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

Jackalope и PHPCR

Sulu использует PHPCR (PHP Content Repository) через Jackalope. По умолчанию — Jackalope Doctrine DBAL (хранит контент в реляционной БД). Альтернатива — Jackrabbit (Java), но для большинства проектов DBAL достаточно.

# config/packages/doctrine_phpcr.yaml
doctrine_phpcr:
    session:
        backend:
            type: doctrinedbal
            connection: default
            caches:
                meta: cache.app
                nodes: cache.app
        workspace: default
    odm:
        auto_mapping: true
        auto_generate_proxy_classes: '%kernel.debug%'

Конфигурация маршрутов

# config/routes_website.yaml
sulu_website:
    resource: "@SuluWebsiteBundle/Resources/config/routing/website.xml"
    type: xml

app_default:
    path: /{slug}
    requirements:
        slug: .*
    defaults:
        _controller: Sulu\Bundle\WebsiteBundle\Controller\DefaultController::indexAction
# config/routes_admin.yaml
sulu_admin:
    resource: "@SuluAdminBundle/Resources/config/routing/admin.xml"
    prefix: /admin

sulu_core_api:
    resource: "@SuluCoreBundle/Resources/config/routing/api.xml"
    prefix: /api

app_admin:
    resource: ../src/Controller/Admin/
    type: annotation
    prefix: /api

Сборка фронтенда backoffice

# установка зависимостей
npm install

# разработка
npm run build:dev   # или npm run watch

# продакшн
npm run build

Sulu backoffice — React-приложение. Кастомные компоненты добавляются через свои Bundle-ы.

Кэш и производительность

# прогрев кэша
php bin/console cache:warmup --env=prod

# сброс кэша PHPCR
php bin/console cache:clear

# очередь задач (Messenger)
php bin/console messenger:consume async --limit=100

Для продакшна рекомендуется Redis как кэш-бэкенд:

# config/packages/cache.yaml
framework:
    cache:
        default_redis_provider: 'redis://127.0.0.1:6379'
        pools:
            cache.app:
                adapter: cache.adapter.redis

Деплой

# на сервере
composer install --no-dev --optimize-autoloader
npm ci && npm run build
php bin/console cache:warmup --env=prod
php bin/console doctrine:migrations:migrate --no-interaction --env=prod

Сроки

Базовая установка с одним Webspace, двумя языками и первым пользователем: 1 день. С настройкой Nginx, Redis, Messenger и первичной конфигурацией шаблонов: 2–3 дня.