Встановлення та налаштування 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=uk \
  --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

Backoffice Sulu — 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 дні.