Я использую с тех пор уже несколько лет домашнюю CMS/ERP на основе компонентов Symfony для своих клиентов. Каждый сайт, использующий эту инфраструктуру, размещается на "классическом" Linux-хостинге, и я использую git для развертывания обновлений. На каждом сайте есть папка, в которой хранятся шаблоны, изображения и загружаемые файлы html/css, которые администратор сайта может получить, чтобы настроить свой сайт. Эта папка игнорируется git, поэтому обновления моей инфраструктуры через git не будут перезаписывать изменения администратора сайта.
Я думаю о перемещении этих сайтов в облачной масштабируемой среде, такой как Heroku. Насколько я понимаю, эта git-проигнорированная папка будет сбрасываться каждый раз, когда я буду нажимать на Heroku или для каждого нового созданного dyno. Как я могу справиться с этим без включения этой настраиваемой папки в git repo?
Я думал о хранении HTML/CSS-шаблонов в базе данных и копировать их на диск каждый раз, когда они обновляются, после каждого развертывания git или создания нового экземпляра. Но это не решило бы проблему для изображений или загружаемых файлов.
Вместо того, чтобы хранить локально загруженные пользователем файлы, Heroku рекомендует размещать их на внешней службе, например Amazon S3.
Вы можете использовать существующую библиотеку для этого, например KnpGaufretteBundle
:
Легко используйте Gaufrette в своих проектах Symfony.
Сам Gaufrette представляет собой "PHP5-библиотеку, которая обеспечивает уровень абстракции файловой системы". Amazon S3 является одним из поддерживаемых бэкендов.