Deployment guide for rails - SumitBisht/checklist_and_guides GitHub Wiki
Step by Step Deployment for Rails 3 with Capistrano Nginx/Unicorn Environment
this is a step-by-step deployment guide for rails 3 with capistrano, to set a nginx/unicorn/postgresql environment according to the railscast episodes by Ryan Bates, http://railscasts.com/episodes/337-capistrano-recipes and http://railscasts.com/episodes/335-deploying-to-a-vps
Production Stack
- ubuntu 10.04
- nginx
- unicorn
- postgres
- rbenv
- linode vps
Global Variables
- $USER : the linux server user to deploy the app (with sudo privileges)
- $RUBY_VERSION : the ruby version to use (ex: 1.9.2-p290)
- $GIT_REPO : the github address of the project (ex: [email protected]:fespinoz/perorg)
- $APP_NAME : the app name (ex: "personal_organizer")
- $DEPLOY_PATH : the basic root path to deploy (ex: "/home/#{user}/apps/#{application}")
- $SERVER : the IP address or public dns of the server (ex: "172.9.182.12" or "ec2asda.aws.com")
- $GIT_BRANCH : the git branch to deploy (ex: "master")
Steps
-
Check VPS (ex Linode)
- purchase linode
- rebuild
- select ubuntu 10.04
- set root password
- view remote access
-
Create deployer user (ubuntu user also works fine)
Add $USER user, only if needed, the user ubuntu works just fine
adduser $USER --ingroup admin
-
Configure easy access to server
3.1 To enter the server without password, ssh setup
cat ~/.ssh/id_rsa.pub | ssh $USER@$SERVER 'cat >> ~/.ssh/authorized_keys'
3.2 enable capistrano's forward_agent option to use local ssh keys to deploy from github
ssh-add # -K on Mac OS X
-
SetUp Git
mate .gitignore # add config/database.yml cp config/database.yml config/database.example.yml git init git add . git commit -m "initial commit" git remote add origin $GIT_REPO git push
-
Installing and Setting Up Capistrano and Unicorn
5.1 add capistrano and unicorn gems
5.2 generating capistrano, unicorn and nginx config files
capify .
5.2.1 copy the deploy.rb file and the recipes folder to your config/
5.3 check configurations and set variables
* deploy file * recipy files
-
Capfile (and uncomment the assets section) 5.4 commit deploy changes
git add . git commit -m "deployment configs"
-
-
Install dependencies
6.1 install git
sudo apt-get install git-core
6.2 Get to know github.com
ssh [email protected]
6.3 Then install dependencies with the capistrano recipes
cap deploy:install
-
Launch deployment Setup
cap deploy:setup # it will ask for the $USER password
-
Edit config files in $DEPLOY_PATH/shared
-
Deploying for the very first time
cap deploy:cold
-
Extra Installation
EX. Postfix if you want to send emails within your app
* apt-get -y install telnet postfix