我对使用OpsWorks可靠地部署简单的PHP应用程序感到非常沮丧,我无法找到有关如何管理srv/www/app-name/releases
目录的任何文档,但我认为可能是我当前问题的原因。
我正在部署Laravel应用程序,所以我需要在部署时使用厨师食谱做两件事:composer install,以及一些可写的目录。 Composer似乎确实安装得很好,但是我的创建配方& chmod目录似乎发生在之前的版本中 - 这对我来说毫无意义。
安装composer:
node[:deploy].each do |application, deploy|
script "composer-install" do
interpreter "bash"
cwd "#{deploy[:deploy_to]}/current"
user "root"
code <<-EOH
composer install
EOH
end
end
这很好用,我可以刷新供应商目录,因为它运行时会看到出现的依赖项。但下一个要运行的方法是:
node[:deploy].each do |application, deploy|
Chef::Log.info("Application path: #{deploy[:deploy_to]}");
node['directories'].each do |path|
# Get the path we need
new_path = "#{deploy[:deploy_to]}/current/"+path
Chef::Log.info("Checking directory: "+new_path);
# Ensure the dir exists
unless File.exists?(new_path)
Chef::Log.info("Creating directory: "+new_path);
Dir.mkdir( new_path, 777 )
end
# Ensure its writable
File.chmod( 777, new_path )
end
end
来自Chef::log
的内容确实出现在日志中,没有错误,但目录根本就不存在 - 它们是在PREVIOUS release/timestamp
目录中创建的,就像&#39;电流&#39;符号链接已在此配方的持续时间内恢复。它们也是使用权限&#39; 411&#39;。
任何人都可以解释我在哪里出错吗? 我是否可以访问新的目录路径,而不是使用&#39; current&#39;符号链接?
答案 0 :(得分:0)
最有可能发生的是您在部署的不同阶段应用这两个指定的配方。由于您正在使用Current - 它将在旧目录的一个阶段,同时检查应用程序的下一部分。
你应该做的事情是:
如果您提供正在调用的食谱的屏幕截图以及图层编辑视图中的哪个图层,它将帮助此处的人查看正在发生的事情并为您提供更好的反馈。