几年来我一直在为我的客户使用基于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是它支持的后端之一。