如何在云无状态托管环境中处理用户可编辑的模板


How to handle user editable templates in a cloud stateless hosting environment?

几年来我一直在为我的客户使用基于Symfony组件的自制PHP CMS/ERP。每个使用这个框架的站点都托管在一个"经典"的linux主机上,我使用git来部署更新。每个网站都有一个文件夹,存储html/css模板,图像和可下载的文件,网站管理员可以访问自定义他们的网站。这个文件夹是git忽略的,所以我通过git更新的框架不会覆盖站点管理员的更改。

我正在考虑将这些站点迁移到像Heroku这样基于云的可扩展环境中。据我所知,每当我将git push到Heroku或创建每个新动态时,都会重置这个被git忽略的文件夹。如果不在git仓库中包含这个自定义文件夹,我怎么处理这个问题呢?

我想过在数据库中存储HTML/CSS模板,并在每次git部署或新实例创建后,每次更新时将它们复制到驱动器中。但这并不能解决图片或可下载文件的问题。

与其将用户上传的文件存储在本地,Heroku建议将它们放在Amazon S3等外部服务上。

您可能需要使用现有的库,例如KnpGaufretteBundle:

在Symfony项目中轻松使用Gaufrette

Gaufrette本身是"一个提供文件系统抽象层的PHP5库"。Amazon S3是它支持的后端之一。