When I was Rails developer I used to deploy using capistrano with a single command
cap production deploy
But when I came back to PHP development, the old FTP drag and drop welcomed me and I was like WTF?. I couldn’t agree to this, since it takes too much time for deployment. So I decided to setup capistrano for my Yii project.
Since I was a ruby developer all the ruby and capistrano setup was already there in my laptop. But I need to setup these things in server. This blog post deals only with the setting up server only. The setting up of Yii project for capistation deployment comes in next post.
Setting up server
Installing ruby, git and capistrano
First step to setting up server for cap deployment is install ruby and git. I usually install ruby using Ruby Version Manager (rvm). It helps me to manage the ruby versions.
apt-get install -y build-essential git-core libyaml-dev
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -L get.rvm.io | bash -s stable
rvm install 2.2.2
gem install capistrano --no-ri --no-rdoc
Add a usergroup and user for deployment.
After installing ruby and git, we need to add a new usergroup and user for deployment and give appropriate permissions for the deployment directory. I used the default
/var/www directory for the deployment.
sudo addgroup www # create a new usergroup
sudo adduser deploy # create a new user
sudo adduser deploy www # add deploy user to www group
Since apache will run as
www-data user we need to add
www-data to our newly created user group.
sudo adduser www-data www
Now we need to give appropriate permission for the usergroup. Open
/etc/sudoers file and add the following.
# open /etc/sudoers
deploy ALL=(ALL:ALL) ALL
and run the following commands to set the permissions of deploy directory in my case
# Set the ownership of the folder to members of `www` group
sudo chown -R :www /var/www
# Set folder permissions recursively
sudo chmod -R g+rwX /var/www
# Ensure permissions will affect future sub-directories etc.
sudo chmod g+s /var/www
Now our server is ready for deployment. Next we need to setup our Yii project.