Перейти к основному содержимому

Инструменты развертывания

Для поддержки процессов развертывания (деплоя) Pimcore предоставляет следующие инструменты.

Конфигурации Pimcore

Все конфигурации Pimcore сохраняются в виде YAML или PHP файлов в файловой системе. Благодаря этому их можно включать в системы контроля версий и, используя функцию Multi Environment, можно определять различные конфигурационные файлы для разных этапов развертывания.

Определения классов Pimcore

Как и конфигурации, определения классов Pimcore сохраняются в виде PHP-файлов конфигурации, поэтому их можно добавлять в системы контроля версий и развертывать на различных этапах.

По умолчанию PHP-файлы конфигурации и PHP-классы записываются в директорию var/classes. Чтобы запретить изменение и сделать класс доступным только для чтения, вы можете создать его копию в config/pimcore/classes.

Что касается модификации класса, существует дополнительная переменная ENV PIMCORE_CLASS_DEFINITION_WRITABLE, которая управляет правами на изменение классов:

  • Установите 0, чтобы полностью запретить доступ на запись, включая создание новых классов.
  • Установите 1, чтобы разрешить модификацию, включая классы в config/pimcore/classes (которые обычно доступны только для чтения).
  • Если переменная не установлена: классы в config/pimcore/classes доступны только для чтения, но создание новых классов разрешено (они будут создаваться в var/classes).

С помощью переменной PIMCORE_CLASS_DEFINITION_DIRECTORY можно указать произвольную директорию для поиска определений классов, если вы не хотите, чтобы Pimcore искал в var/classes или config/pimcore/classes.

Примечание: Изменения в определениях классов влияют не только на файлы конфигурации, но и на структуру базы данных. При деплое изменений между стадиями необходимо обновить базу данных с помощью команды pimcore:deployment:classes-rebuild.

После каждого обновления кода следует использовать команду pimcore:deployment:classes-rebuild для синхронизации изменений с базой данных.

./bin/console pimcore:deployment:classes-rebuild  

Используйте опцию create-classes, чтобы создать новые классы в БД на основе конфигурационных файлов.

./bin/console pimcore:deployment:classes-rebuild --create-classes  

Если вы используете оптимизацию автозагрузчика Composer, не забудьте зарегистрировать новые классы:

composer dump-autoload --optimize  

В качестве альтернативы можно использовать экспорт классов в JSON-файлы и команды импорта.

./bin/console pimcore:definition:import:objectbrick /brick_jsonfile_path.json  

./bin/console pimcore:definition:import:fieldcollection /collection_jsonfile_path.json

./bin/console pimcore:definition:import:class /class_jsonfile_path.json

Консоль Pimcore

Консоль Pimcore предоставляет множество задач, полезных для деплоя. Их можно интегрировать в кастомные рабочие процессы. Одним из примеров для них могут служить определения классов Pimcore, описанные выше.

Чтобы получить полный список команд, выполните ./bin/console list.

Полезные команды:

КомандаОписание
pimcore:mysql-toolsОптимизация и «прогрев» базы данных MySQL
pimcore:search-backend-reindexПереиндексация поиска в административной панели (доступно только в том случае, если у вас установлен simpleBackendSearchBundle)
pimcore:cache:clearОчистка системного кэша Pimcore
cache:clearОчистка кэша Symfony
pimcore:cache:warmingПрогрев кэша
pimcore:classificationstore:delete-storeУдалить хранилище классификаций
pimcore:definition:import:classИмпорт определения класса из JSON-файла
pimcore:definition:import:customlayoutИмпорт определения пользовательского макета из JSON-файла
pimcore:definition:import:fieldcollectionИмпорт определения FieldCollection из JSON-файла
pimcore:definition:import:objectbrickИмпорт определения ObjectBrick из JSON-файла
pimcore:definition:import:unitsИмпорт определения единиц измерения количества из JSON-файла
pimcore:deployment:classes-rebuildПересборка классов и структуры БД на основе файлов var/classes/definition_*.php
pimcore:thumbnails:imageСоздание миниатюр изображений, полезно для предварительного создания эскизов в фоновом режиме. Используйте опцию --processes для параллельной обработки
pimcore:thumbnails:optimize-imagesОптимизация размера файлов всех изображений во временной папке web/var/tmp
pimcore:thumbnails:videoСоздание миниатюр видео, полезно для предварительного создания эскизов в фоновом режиме. Используйте опцию --processes для параллельной обработки

Узнайте больше о консоли Pimcore на специальной странице.

Миграция контента

Миграция контента (данных) между средами не предусмотрена инструментами Pimcore и не рекомендуется.

Предполагается, что контент создается редакторами непосредственно в продакшн-среде. Управление видимостью данных на фронтенде осуществляется встроенными функциями: публикация/снятие с публикации, версионирование, планирование и режим предварительного просмотра.

Редакторы не должны работать на разных стадиях (dev/stage/prod).

Если миграция контента всё же необходима, это считается индивидуальной задачей, зависящей от модели данных.

В таких случаях следует использовать PHP API для ассетов, объектов и документов для программного переноса данных.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.