Nginx – Permission to write using ‘deploy’ user

capistranochefchef-solodeploymentnginx

I'm currently new to Chef and Capistrano. I'm using version 3.x of Capistrano to deploy Rails 4 application.

I have successfully bootstrapped a server using chef solo. One cookbook that I'm using is Nginx.

Back to my simple Rails 4 app, I'm trying to run this command to check the status of my deployment:

cap production deploy:check

However, it throws some error:

DEBUG [05e580a4] Command: /usr/bin/env mkdir -pv /var/www/shared /var/www/releases
DEBUG [05e580a4]    mkdir: cannot create directory `/var/www': Permission denied
DEBUG [05e580a4]    mkdir: cannot create directory `/var/www': Permission denied

I'm using deploy user for Capistrano, and on my Chef node config, I speficied the deploy user. I can also logged in on my instance using deploy user.

Is there a proper way for me to address the permissions on Chef or in Capistrano?

Best Answer

The directory you intend to deploy to should already exist and have the correct ownership and permissions before you try to run Capistrano to deploy to it. So you need to handle that beforehand, probably in the same chef recipe where you created the user.