Opsworks before-migrate.rb
Opsworks is a convenient, powerful and free service provided by AWS to simplify the management of EC2 nodes. The real power of the system is exposed through customizing various stages of the instance lifecycle by creating custom-tailored chef-solo recipes.
While Amazon provides a powerful deployment layer for PHP applications, it stops short once the PHP code has been checked out of git. For Laravel or other composer apps, you’ll have to customize your deployment. The most elegant and straightforward method is through custom deployment hooks. Here’s how to build a before_migration.rb script to build a Laravel app.
At the top of your build, add a file deploy/before_migrate.rb like this:
[release_path].each do |path| log "before_migrate hook [#{path}]" do level :debug end # run composer install execute "composer install" do user "deploy" cwd path command "composer install --no-dev --no-interaction --optimize-autoloader" # only execute for composer projects only_if "test -f \"#{path}/composer.json\"" end # correct permissions to allow apache to write execute "chown #{path}/app/storage" do cwd "#{path}/app/storage" command "chown -R deploy.www-data ." end execute "chmod #{path}/app/storage" do cwd "#{path}/app/storage" command "chmod -R u+rwX,g+rwX ." end