Mало кто знает, что Github кроме превосходного хостинга ваших Git проектов
может также хостить ваш персональный сайт.
Например на нем расположен этот блог. В своей первой статье я
расскажу как максимально удобно настроить эту функциональность.


Введение


Для начала вам нужно быть зарегистрированным пользователем Github и уметь
работать с системой контроля версий Git. Предположим вы готовы.



  • Первое, что вам потребуется — это создать на Github репозиторий с именем вида: username.github.com, где username ваш логин на сервисе. Например для этого блога создан репозиторий http://github.com/klen/klen.github.com

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

  • В дальнейшем я буду приводить примеры для своего сайта: klen.github.com



    Отлично, ваш статический сайт уже готов! В течении 10 минут он появится по адресу:

    username.github.com.
    В дальнейшем он будет обновляться при коммитах в удаленный репозиторий.

    Использование генераторов статических сайтов


    Созданный нами сайт не слишком удобен для работы, трудно писать содержание
    используя HTML, сложно поддерживать целостность ссылок. Использовать его
    например как блог очень затруднительно.


    Существует масса проектов генерации статических сайтов и блогов.
    При работе с ними фактически вы пишете страницы и статьи в удобном для вас формате,
    а затем генератор обновляет структуру сайта. По-умолчанию Github уже поддерживает
    написанный на ruby генератор Jekyll. То есть вам необязательно использовать только
    HTML синтаксис, из коробки вы можете писать в ваш сайт на Markdown. Подробнее читайте
    в документации Github Pages и Jekyll.


    Я предпочитаю генерировать страницы локально и проверять результат без выгрузки
    содержания на Github. Мне привычнее работать с Python поэтому в качестве генератора
    сайта мной используется Pelican. Ниже я покажу как поставить его и настроить для работы.


    Если вы предпочитаете ruby дальше можете не читать.


    Установка и настройка Pelican


    Предполагается, что вы знакомы с Python и VirtualEnv.


  • Так как мы будем использовать Pelican нам необходимо выключить встроенный в Github генератор Jekyll. Это делается добавлением в корень репозитория файла .nojekyll.



  • Теперь создадим и активируем виртуальное окружение для модулей нашего сайта:



  • Установим в созданный нами VirtualEnv генератор Pelican и необходимый для него движок шаблонов Jinja2:



  • Мы будем держать исходники сайта в поддиректории source, а созданные статические страницы в корне репозитория, чтобы Github их видел. Создадим файл source/hello.rst с нашей первой статьей:



  • Я использую синтаксис RST, но вы можете использовать Markdown для своего сайта. Просто сохраняйте файлы с расширением *.md
    Pelican поддерживает и другие форматы, но надо ставить соответствующие модули.
  • И соберем статику:



  • Опция -o . заставляет Pelican производить сборку статики в корне
    проекта.

    Если все прошло успешно в корне проекта вы увидите несколько HTML файлов.
    Откройте index.html в браузере и посмотрите на ваш сайт.
  • Теперь наши изменения можно сохранить в Git и отправить на Github.



  • Автоматизация


    Настроим наш сайт и немного автоматизируем рутинные операции.

  • Создадим файл настроек нашего сайта source/settings.py:


  • Подробнее про настройки Pelican, можно прочитать в его документации.


  • Для упрощения сборки создадим sh-файл .compile


  • И дадим ему права на исполнение:



    Теперь в директории проекта можно вызывать ./.compile и собирать статику даже без активации
    виртуального окружения.


  • Следующим шагом создадим Git хук для автоматической генерации сайта при коммитах. Создадим и отредактируем файл .git/hooks/pre-commit:



  • Не забудьте сделать его исполнемым.

    При каждом коммите изменений в репозиторий, проект будет пересобран автоматически.

    На этом нашу предварительную работу по созданию github-сайта можно считать оконченной. В дальнейшем стоит поподробнее прочитать документацию Pelican,
    модифицировать стандартную или создать собственную тему оформления и подключить какой нибудь сервис комментариев.
    Как нетрудно догадаться исходники этого блога расположены по адресу: http://github.com/klen/klen.github.com

    http://klen.github.io/github-blog.html

    Profile

    uzverss: (Default)
    uzverss

    December 2024

    S M T W T F S
    12345 67
    891011121314
    15161718192021
    22232425262728
    293031    

    Most Popular Tags

    Style Credit

    Expand Cut Tags

    No cut tags
    Page generated Jan. 22nd, 2026 02:27 pm
    Powered by Dreamwidth Studios