Создаем свой персональный сайт на Github.
Содержание:
Mало кто знает, что Github кроме превосходного хостинга ваших Git проектов может также хостить ваш персональный сайт. Например на нем расположен этот блог. В своей первой статье я расскажу как максимально удобно настроить эту функциональность.
Введение
Для начала вам нужно быть зарегистрированным пользователем Github и уметь работать с системой контроля версий Git. Предположим вы готовы.
- Первое, что вам потребуется — это создать на Github репозиторий с именем вида: username.github.com, где username ваш логин на сервисе. Например для этого блога создан репозиторий http://github.com/klen/klen.github.com
- Вторым шагом мы создадим локальный репозиторий и привяжем его к удаленному:
Note
В дальнейшем я буду приводить примеры для своего сайта: klen.github.com
mkdir ~/Projects/klen.github.com
cd ~/Projects/klen.github.com
git init
echo 'Hello world!' > index.html
git add .
git commit -m 'Initial commit'
git remote add origin git@github.com:klen/klen.github.com.git
git push -u origin master
- Отлично, ваш статический сайт уже готов! В течении 10 минут он появится по адресу:
- username.github.com. В дальнейшем он будет обновляться при коммитах в удаленный репозиторий.
Использование генераторов статических сайтов
Созданный нами сайт не слишком удобен для работы, трудно писать содержание используя HTML, сложно поддерживать целостность ссылок. Использовать его например как блог очень затруднительно.
Существует масса проектов генерации статических сайтов и блогов. При работе с ними фактически вы пишете страницы и статьи в удобном для вас формате, а затем генератор обновляет структуру сайта. По-умолчанию Github уже поддерживает написанный на ruby генератор Jekyll. То есть вам необязательно использовать только HTML синтаксис, из коробки вы можете писать в ваш сайт на Markdown. Подробнее читайте в документации Github Pages и Jekyll.
Я предпочитаю генерировать страницы локально и проверять результат без выгрузки содержания на Github. Мне привычнее работать с Python поэтому в качестве генератора сайта мной используется Pelican. Ниже я покажу как поставить его и настроить для работы.
Если вы предпочитаете ruby дальше можете не читать.
Установка и настройка Pelican
Предполагается, что вы знакомы с Python и VirtualEnv.
- Так как мы будем использовать Pelican нам необходимо выключить встроенный в Github генератор Jekyll. Это делается добавлением в корень репозитория файла .nojekyll.
touch .nojekyll
git add .
git commit -m 'Disable Jekyll'
- Теперь создадим и активируем виртуальное окружение для модулей нашего сайта:
virtualenv .ve_blog
source .ve_blog/bin/activate
- Установим в созданный нами VirtualEnv генератор Pelican и необходимый для него движок шаблонов Jinja2:
easy_install pelican
easy_install jinja2
- Мы будем держать исходники сайта в поддиректории source, а созданные статические страницы в корне репозитория, чтобы Github их видел. Создадим файл source/hello.rst с нашей первой статьей:
Hello world!
############
:slug: hello
Hello from Pelican!
Note
Я использую синтаксис RST, но вы можете использовать Markdown для своего сайта. Просто сохраняйте файлы с расширением *.md Pelican поддерживает и другие форматы, но надо ставить соответствующие модули.
- И соберем статику:
pelican source -o .
Note
Опция -o . заставляет Pelican производить сборку статики в корне проекта.
Если все прошло успешно в корне проекта вы увидите несколько HTML файлов. Откройте index.html в браузере и посмотрите на ваш сайт.
git add .
git commit -m 'Add virtualenv and setup pelican.'
git push origin master
Автоматизация
Настроим наш сайт и немного автоматизируем рутинные операции.
- Создадим файл настроек нашего сайта source/settings.py:
AUTHOR = 'Kirill Klenov'
SITENAME = 'klen.github.com'
SITEURL = 'http://klen.github.com'
Note
Подробнее про настройки Pelican, можно прочитать в его документации.
- Для упрощения сборки создадим sh-файл .compile
#!/bin/sh
PRJ_DIR=/home/klen/Projects/klen.github.com
VE_DIR=$PRJ_DIR/.ve_blog
# Modify path
OLD_PATH=$PATH
PATH="$VE_DIR/bin:$PRJ_DIR:$PATH"
export PATH
# Compile static files
pelican $PRJ_DIR/source -o $PRJ_DIR -s $PRJ_DIR/source/settings.py -v
# Return PATH
PATH=$OLD_PATH
export PATH
И дадим ему права на исполнение:
chmod +x .compile
Теперь в директории проекта можно вызывать ./.compile и собирать статику даже без активации виртуального окружения.
- Следующим шагом создадим Git хук для автоматической генерации сайта при коммитах. Создадим и отредактируем файл .git/hooks/pre-commit:
#!/bin/sh
PRJ_DIR=/home/klen/Projects/klen.github.com
$PRJ_DIR/.compile
Note
Не забудьте сделать его исполнемым.
При каждом коммите изменений в репозиторий, проект будет пере-собран автоматически.
На этом нашу предварительную работу по созданию github-сайта можно считать оконченной. В дальнейшем стоит поподробнее прочитать документацию Pelican, модифицировать стандартную или создать собственную тему оформления и подключить какой нибудь сервис комментариев.
Note
Как нетрудно догадаться исходники этого блога расположены по адресу: http://github.com/klen/klen.github.com