Развертывание сайта на Jekyll – Capistrano и Rsync
Jekyll представляет собой простой генератор статических сайтов. Он берет директорию с шаблонами и преобразует их с использованием Textile/Markdown и Liquid в обычные статические html-страницы, которые могут отдаваться напрямую через Apache, Nginx или любой другой web-сервер.
Многие уже привыкли разворачивать свои web-приложения с помощью Capistrano, запуская команду cap deploy. Поэтому удобно использовать такой же способ и для статического сайта, генерируемого при помощи Jekyll. Для этого необходимо создать Capfile в директории с Jekyll-сайтом:
set :user, 'username'
set :deploy_to, '/path/to/site'
namespace :deploy do
desc 'Deploy'
task :default do
build
sync
end
desc 'Build _site locally'
task :build do
run_locally "jekyll --no-auto"
end
desc 'Remote sync _site'
task :sync do
local_site_path = File.join(File.dirname(File.expand_path(__FILE__)), '_site')
find_servers(:except => {:no_release => true}).each do |server|
run_locally "rsync -rlcv --delete #{local_site_path}/ #{user}@#{server}:#{deploy_to}/"
end
end
end
def run_locally(cmd)
logger.trace "executing locally: #{cmd.inspect}" if logger
system(cmd)
end
В первых 3-х строках нужно прописать информацию о сервере, логине пользователя и директории, в которую будет развернут сайт. Деплой происходит в 2 этапа:
- генерация сайта в поддиректории
_siteкомандойjekyll --no-auto - синхронизация поддиректории
_siteи директории на сервере с помощью rsync.
Чтобы Capfile не включался в генерируемый сайт (директория _site), нужно исключить его, добавив в файл _config.yml (при необходимости создав этот файл в корне сайта):
- Capfile
Теперь достаточно запустить привычную команду:
и изменения будут залиты на сервер.
Related posts: