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 source /home/lookup/.rvm/scripts/rvm rvm reload 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.