Начало работы с Jekyll на сервере Ubuntu

Jekyll – простой генератор статических сайтов. Он принимает данные на языках Markdown, Textile, Liquid, HTML и CSS и выдаёт полноценные статические HTML-страницы. Jekyll отлично взаимодействует с GitHub, однако с некоторыми ограничениями (это касается, к примеру, плагинов). Попробуйте разместить сайт Jekyll на своём виртуальном выделенном сервере.

Требования

В руководстве используются:

  • Генератор сайтов Jekyll (для созданияконтента);
  • Веб-сервер nginx (для обслуживания контента);
  • Capistrano (для развёртывания).

Для работы нужно предварительно настроить виртуальный сервер Ubuntu и установить nginx.

Также необходимо установить Ruby и RubyGems на локальную машину; для этого лучше всего использовать RVM (Ruby Version Manager). Используйте следующую команду:

curl -L https://get.rvm.io | bash -s stable --ruby=2.0.0

Затем следуйте инструкциям программы. После установки Ruby установите RubyGems:

gem install jekyll capistrano

Создание блога Jekyll

На сайте Jekyll есть простой мануал по созданию и поддержке сайта. Для примера создайте простой блог. Просто откройте каталог, созданный для этого блога, и запустите:

jekyll new .
cd myblog
jekyll serve

Сайт будет запущен на localhost:4000.

Откройте каталог myblog, в нём теперь находится несколько папок. Найдите папку _site; она содержит статический сайт, сгенерированный Jekyll, который позже нужно будет развернуть.

Развёртывание блога Jekyll при помощи Capistrano

Если после запуска команды jekyll serve сайт не был отключён, завершите этот процесс. В каталоге myblog запустите:

capify .

Эта команда создаст все файлы, необходимые для развёртывания Capistrano.

Capistrano требует использовать SSH. Предыдущая команда должна была создать файл config/deploy.rb; откройте его и замените содержимое следующим кодом:

# replace this with your site's name
set :application, "Blog"
set :repository, '_site'
set :scm, :none
set :deploy_via, :copy
set :copy_compression, :gzip
set :use_sudo, false
# the name of the user that should be used for deployments on your VPS
set :user, "deployer"
# the path to deploy to on your VPS
set :deploy_to, "/home/#{user}/blog"
# the ip address of your VPS
role :web, "123.456.789.10"
before 'deploy:update', 'deploy:update_jekyll'
namespace :deploy do
[:start, :stop, :restart, :finalize_update].each do |t|
desc "#{t} task is a no-op with jekyll"
task t, :roles => :app do ; end
end
desc 'Run jekyll to update site before uploading'
task :update_jekyll do
# clear existing _site
# build site using jekyll
# remove Capistrano stuff from build
%x(rm -rf _site/* && jekyll build && rm _site/Capfile && rm -rf _site/config)
end
end

Теперь нужно создать структуру каталогов, которую требует Capistrano; просто запустите:

cap deploy:setup

Чтобы запустить развёртывание, используйте:

cap deploy

Команда deploy выполняет следующие действия:

  • Удаляет все существующие статические сайты Jekyll;
  • Создаёт сайт Jekyll;
  • Удаляет ненужные файлы, включенные в сборку (в основном это файлы cap);
  • Копирует содержимое статического сайта с помощью SFTP на виртуальный выделенный сервер, помещая их в указанный каталог.

Обслуживание сайта Jekyll

Войдите на сервер и откройте каталог веб-сервера sites-available:

cd /etc/nginx/sites-available

Команда ls, запущенная в данном каталоге, отобразит файл default (как минимум). Его можно использовать в качестве шаблона:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com

Статические сайты не требуют объёмных конфигураций; для корректной работы сайта будет достаточно следующего кода:

server {
# listen on http (port 80)
# remove the "default_server" if you are running multiple sites off the same VPS
listen 80 default_server;
# the IP address of your VPS
server_name 123.456.789.10;
# see http://nginx.org/en/docs/http/server_names.html for options
# to use your own domain, point a DNS A record at this IP address
# and set the server name to (eg.) "blog.example.com"
# the path you deployed to. this should match whatever was in your
# Capistrano deploy file, with "/current" appended to the end
# (Capistrano symlinks to this to your current site)
root /home/deployer/blog/current;
index index.html
# how long should static files be cached for, see http://nginx.org/en/docs/http/ngx_http_headers_module.html for options.
expires 1d;
}

Это основные настройки статического сайта (конечно, их можно расширить).

Примечание: Можно также использовать базовые настройки, размещённые здесь.

В этом каталоге создайте новый файл и внесите в него базовые конфигурации nginx. Затем создайте символьную ссылку на этот файл из каталога sites-enabled:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

Примечание: Символьные ссылки позволяют быстро убрать сайт из общего доступа, не меняя основных настроек; для этого нужно просто удалить символьную ссылку.

Теперь нужно убедиться, что nginx может читать файлы, которые он должен обслуживать. У веб-сервера должны быть права на чтение и изменение всех обслуживаемых каталогов и их родительских каталогов. Для этого нужно сделать пользователя www-data владельцем каталога сайта, а после этого передать ему права на чтение и запись в соответствующих каталогах:

sudo chown -R www-data:www-data /home/deployer/blog/current
sudo chmod 755 -R /home

В завершение перезапустите nginx, чтобы обновить настройки:

# tests the nginx configuration; if this is not successful you should fix any errors raised
sudo nginx -t
# safely restarts the nginx worker
sudo kill -HUP `cat /var/run/nginx.pid`

Вместо этих команд (которые являются более безопасным вариантом) можно использовать следующую команду, которая просто перезапустит nginx:

sudo service nginx restart

Тестирование настроек

Откройте IP-адрес своего сервера в браузере. На экране должна появиться домашняя страница Jekyll.

Теперь можно приступать к наполнению нового сайта контентом. Чтобы опубликовать новый контент, просто используйте команду:

cap deploy

Tags: , , , , ,

Добавить комментарий