OpsWorks を使用して単純な PHP アプリケーションを確実にデプロイすることに深刻な不満を感じています。srv/www/app-name/releases
ディレクトリの管理方法に関するドキュメントが見つかりませんが、それが現在の問題の原因である可能性があると思います。
私は Laravel アプリケーションをデプロイしているので、デプロイ時に Chef レシピで 2 つのことを行う必要があります。composer のインストールと、いくつかのディレクトリを書き込み可能にすることです。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
はログに表示されますが、エラーはありませんが、ディレクトリは単純にそこにありませんrelease/timestamp
。このレシピの期間中に「現在の」シンボリックリンクが元に戻ったかのように、それらは PREVIOUS ディレクトリに作成されます。また、権限「411」で作成されます。
ここで私が間違っている場所を誰かが説明できますか? 「現在の」シンボリック リンクを使用する代わりに、新しいディレクトリ パスにアクセスできますか?