Инструменты развертывания
Для поддержки процессов развертывания (деплоя) Pimcore предоставляет следующие инструменты.
Конфигурации Pimcore
Все конфигурации Pimcore сохраняются в виде YAML или PHP файлов в файловой системе. Благодаря этому их можно включать в системы контроля версий и, используя функцию Multi Environment, можно определять различные конфигурационные файлы для разных этапов развертывания.
- https://github.com/pimcore/demo/tree/11.x/config
- https://github.com/pimcore/demo/tree/11.x/config/pimcore
- https://github.com/pimcore/demo/tree/11.x/var/config
Определения классов 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 для ассетов, объектов и документов для программного переноса данных.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.