octopress and capistrano
30 Mar 2013To deploy your octopress blog with Capistrano, you should do these steps:
First, add capistrano
gem to your Gemfile. Then, after running a bundle install
, run bundle exec capify .
(or bin/capify .
if you use binstubs) to generate the Capistrano files.
After that, you should add a content like this to your config/deploy.rb file.
# Set this forward agent option to not have to add your server's ssh public key to your repository's host authorized keys
ssh_options[:forward_agent] = true
require "bundler/capistrano"
set :keep_releases, 5
set :scm, :git
set :scm_verbose, false
# Set your repository URL
set :repository, 'YOUR REPO HERE'
# Set your application name
set :application, "YOUR APPLICATION NAME"
set :deploy_via, :remote_cache
# Set your machine user
set :user, 'YOUR SSH USER'
set :deploy_to, "/home/#{user}/apps/#{application}"
set :use_sudo, false
# Set your host, you can use the server IPs here if you don't have one yet
role :app, 'YOUR HOSTNAME', :primary => true
default_run_options[:pty] = true
namespace :octopress do
task :generate, :roles => :app do
run "cd #{release_path} && bundle exec rake generate"
end
end
after 'deploy:update_code', 'deploy:cleanup'
after 'bundle:install', 'octopress:generate'
Now, you should add the group production
to the development
group
on your Gemfile. Doing this, capistrano will be able to run octopress:generate on
your server.
source "http://rubygems.org"
group :development, :production do
gem 'rake', '~> 0.9'
gem 'rack', '~> 1.4.1'
gem 'jekyll', '~> 0.12'
gem 'rdiscount', '~> 1.6.8'
gem 'pygments.rb', '~> 0.3.4'
gem 'RedCloth', '~> 4.2.9'
gem 'haml', '~> 3.1.7'
gem 'compass', '~> 0.12.2'
gem 'sass-globbing', '~> 1.0.0'
gem 'rubypants', '~> 0.2.0'
gem 'rb-fsevent', '~> 0.9'
gem 'stringex', '~> 1.4.0'
gem 'liquid', '~> 2.3.0'
end
gem 'sinatra', '~> 1.3.5'
gem 'capistrano'
Finally, before doing the first cap deploy
, do a git clone
of your blog’s repository on the server (or try to connect through ssh to the repository server on your blog server), you will need to use the -A
option on ssh command to forward your keys.
This is needed because ssh asks for the fingerprint confirmation on the first ssh connection. As capistrano won’t do the ‘yes’ on the confirmation you should do it manually.
Doing this, you will be able to deploy your blog through capistrano. Do you have any tips on how to improve this capistrano recipe ? Please say them on the comments :).