Decided to use Jekyll to host my blog posts. Its really cool! I love Markdown, so when I found Jekyll, I was happy.

Here are the relevant sections of my Capistrano, Nginx and Vagrant setup that I use to test my web hosting setup on a Vagrant VM.

nginx config: /etc/nginx/sites-available/linuxsimba


server {
        listen 80;

        root /home/vagrant/blog/current/_site;
        index index.html index.htm;

        server_name linuxsimba.com;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        error_page 404 /404.html;
}

Capistrano3 config

Gemfile

....
......
gem 'capistrano', '~> 3.3.0'
gem 'capistrano-rvm'
gem 'capistrano-bundler'

CapFile

....
......
gem 'capistrano', '~> 3.3.0'
gem 'capistrano-rvm'
gem 'capistrano-bundler'
....
........

config/deploy.rb

lock '3.3.5'

set :rvm_type, :user
set :rvm_ruby_version, '2.2.0'
set :application, 'linuxsimba'
set :repo_url, 'http://github.com/skamithi/linuxsimba.git'
set :branch, 'master'
# executes jekyll with 'bundle exec'.
# Tried 'bundler_bins'. Didn't work.
# tried rvm_map_bins. only works in vagrant env not prod
# so disabled till I figure out why
# set :rvm_map_bins, fetch(:rvm_map_bins, []).push('jekyll')

namespace :deploy do

  task :update_jekyll do
    on roles(:app) do
      within "#{deploy_to}/current" do
        execute :bundle, "exec jekyll build"
      end
    end
  end

  after "deploy:symlink:release", "deploy:update_jekyll"

config/deploy/vagrant.rb

....
......
role :app, %w{vagrant@192.168.33.10}
set :deploy_to, "/home/vagrant/blog"
...
.......

VagrantFile


Vagrant.configure(2) do |config|
....
......
    # setup private network
     config.vm.network "private_network", ip: "192.168.33.10"
....
........

/etc/hosts on Host PC

127.0.0.1 localhost
# remove linuxsimba.com when done with testing.
192.168.33.10 linuxsimba.com

Before executing Capistrano, I copied the public key of my host PC user to the /home/vagrant/.ssh/authorized_keys file on the Vagrant VM. Then, I confirmed the passwordless ssh setting by using ssh vagrant@192.168.33.10.

To run Capistrano, I use the command $ bundle exec cap vagrant deploy