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

Jekyll – это инструмент для создания статических сайтов HTML, основанных на каталоге файлов markdown. В результате получается быстрый и портативный веб-сайт, способный одновременно обслуживать большое количество пользователей, не прибегая к кэшированию, который легко разместить на сервере вроде Nginx.

Как правило, файлы сайта, созданного при помощи Jekyll, хранятся в Git-репозитории, что позволяет контролировать их версии, а также редактировать их локально, а затем использовать git push для развертывания сайта на выделенном сервере.

Локальная установка Jekyll

Кроме Jekyll, для выполнения данного руководства нужно установить Ruby и Git.

Чтобы установить последний релиз Ruby 2.0 при помощи RVM, запустите команду:

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

Это займет несколько минут. После завершения установки выйдите и снова войдите.

Процесс установки Jekyll очень прост, поскольку инструмент устанавливается в качестве gem-а:

gem install jekyll

Осталось установить Git; эту систему можно скачать с официального сайта или установить при помощи менеджера пакетов.

Примечание: Пользователи Mac могут обратиться к Homebrew.

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

Примечание: Данное руководство охватывает основы работы с Jekyll. За более подробной информацией рекомендуется обратиться к сайту Jekyll, где можно найти документацию проекта, а также простое руководство по использованию инструмента.

На локальной машине перейдите в каталог, в котором будут храниться файлы блога, и создайте новый блог:

jekyll new mynewblog

Это создаст каталог mynewblog, содержащий конфигурационные файлы, каталог постов и другие необходимые компоненты. Теперь можно прейти в этот каталог и запустить процесс сервера, чтобы просмотреть блог в браузере.

cd mynewblog
jekyll serve

Jekyll соберет блог, и в течение нескольких секунд появится доступ к http://localhost:4000 в браузере.

Теперь создайте в том же каталоге Git-репозиторий, чтобы иметь возможность отслеживать изменения.

git init
git add .
git commit -m "Initial commit"

Подготовка сервера

Примечание: Подразумевается, что на предварительно настроенный VPS уже установлен веб-сервер nginx или Apache. Инструкции по установке и настройке веб-сервера можно найти здесь. Кроме того, подразумевается, что /var/www – рутовый каталог веб-сервера (хотя этот каталог может отличаться в зависимости от дистрибутива и настроек).

Для начала установите Git на виртуальный выделенный сервер. В Ubuntu или Debian нужно установить пакет git-core при помощи команды:

apt-get install git-core

В ОС Fedora запустите:

yum install git-core

Также нужно установить Ruby и Jekyll. Это делается так же, как было показано ранее:

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

Затем перейдите в домашний каталог и создайте пустой каталог для развертывания:

cd ~/
mkdir repos && cd repos
mkdir mynewblog.git && cd mynewblog.git
git init --bare

После этого нужно установить перехватчик (или hook) post-receive. Это скрипт оболочки, который запускается системой Git, когда файлы были переданы в репозиторий. Чтобы создать post-receive, запустите:

cd hooks
touch post-receive
nano post-receive

Затем вставьте следующий скрипт, отредактировав переменные. GIT_REPO – это путь к только что созданному пустому каталогу; TMP_GIT_CLONE – это локация, в которой скрипт будет проверять файлы и собирать блог, копируя их /var/www; PUBLIC_WWW – это путь, по которому будет размещаться завершенный вариант сайта. В данном случае сайт появится по http://example.org/mynewblog (учитывая, что /var/www – root сайта) или же по ссылке http://example.org, если PUBLIC_WWW сначала читает /var/www.

#!/bin/bash -l
GIT_REPO=$HOME/repos/mynewblog.git
TMP_GIT_CLONE=$HOME/tmp/git/mynewblog
PUBLIC_WWW=/var/www/mynewblog
git clone $GIT_REPO $TMP_GIT_CLONE
jekyll build --source $TMP_GIT_CLONE --destination $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

Сохраните файл (Ctrl+O+enter) и сделайте его исполняемым.

chmod +x post-receive

Добавление удаленного репозитория Git

Вернитесь на локальную машину и добавьте удаленный репозиторий

git remote add server user@example.org:repos/mynewblog.git

Теперь можно отправлять коммиты пр помощи команды:

git push server master

Публикуя в блоге Jekyll новый пост, отправляйте извещение о коммите в репозиторий Git. Облачный сервер соберет сайт и внесет изменения в течение нескольких секунд.

Tags: , , , , , ,

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