我想将一个php应用程序从git存储库部署到AWS Opsworks服务。 我已经设置了一个应用程序和配置的厨师烹饪书,因此它运行数据库模式创建,转储资产等...
但我的应用程序在web根目录下的子文件夹中有一些用户生成的文件。 git repository在该文件夹中有一个.gitignore文件,因此当我运行deploy命令时,会有一个空文件夹。
我的问题是:在该文件夹中生成一些文件(通过使用该网站)后,如果我再次运行'deploy'命令'Opsworks'在'site_name / releases / xxxx'文件夹下添加一个新版本,并从中添加符号链接'site_name / current'文件夹。
因此它使我以前的'用户生成的东西'无法访问。对于这种情况,最佳解决方案是什么?
提前感谢您的回答。
答案 0 :(得分:1)
您有几种不同的选择。下面按个人喜好排列:
使用OpsWorks时考虑可复制/一次性服务器。
我的意思是,如果您可以创建一个服务器(称为服务器A)然后切换到同一堆栈中的另一个服务器(称为服务器B),则使用服务器A或服务器B的结果应该是不影响您的应用程序如何工作。
虽然在销毁服务器时将用户生成的文件保存在应用程序的不同版本之间通用的目录(每次部署新版本目录时)似乎是个好主意,但是运行破坏文件的风险。
使用S3的好处和缺点?
<强>优点:强>
<强>缺点:强>
使用EBS的好处和缺点?
<强>优点:强>
<强>缺点:强>
使用数据库的缺点?
我首选的选择是使用S3,但最终这是您的决定。
祝你好运!编辑:
看看这个存储库opsworks-chef-cookbooks它包含一些在OpsWorks上部署Symfony2应用程序的方法。我已经使用它超过一年,并且运作良好。
答案 1 :(得分:0)
使用Chef模板,并在opsworks deploy 生命周期事件中的配方中使用它们。