我对使用 OpsWorks 可靠地部署一个简单的 PHP 应用程序感到非常沮丧,我找不到任何有关如何srv/www/app-name/releases
管理目录的文档,但我认为这可能是我当前问题的原因。
我正在部署一个 Laravel 应用程序,所以我需要在部署时使用厨师食谱发生两件事:composer install,以及一些可写的目录。Composer 似乎安装得很好,但是我创建和 chmod 目录的方法似乎发生在以前的版本中——这对我来说根本没有意义。
安装作曲家:
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
确实出现在日志中,没有错误,但目录根本不存在 - 它们是在 PREVIOUSrelease/timestamp
目录中创建的,就好像“当前”符号链接在本食谱期间已恢复。它们也是使用权限“411”创建的。
谁能解释我在这里出错的地方?我可以访问新目录路径而不是使用“当前”符号链接吗?