Хостинг статического сайта
Статические сайты пользуются большой популярностью, т.к. обладают определенными преимуществами по сравнению с CMS
- простой хостинг
- любая структура сайта
- держит высокую нагрузку
Чтобы публикация статического сайта не вызывала страдания, надо как можно лучше автоматизировать этот процесс. Рассмотрим связку: Bitbucket → Tagy → Codeship → Github.
Генерация статического сайта
Я использую Tagy. Он очень гибкий, а также обладает удобными встроенными плагинами для картинок и т.п. Для сборки требуется одна команда
./tagy.py -b
, или из python
#!/usr/bin/env python
import tagy
tagy.generate()
Исходный код сайта (страницы, картинки, файлы) хранится в системе контроля версий Bitbucket.
Codeship static site
Для публикации используется сервис CI Codeship. Он подключается к репозиторию в BibBucket или GitHub и после каждого коммита выполняет предписанные действия:
- выкачивает исходники (всегда, дефолтное поведение)
- устанавливает генератор сайта
- запускает сборку сайта
- публикует готовый контент на хостинг (GH-pages)
Codeship имеет бесплатные варианты аккаунтов. Регистрируем свой репозиторий https://codeship.com/projects/new и переходим в настройки.
Установка покетов
Setup command - скрипты для установки зависимостей
pip install tagy
Генерация сайта
Configure test pipline - скрипты самой сборки.
- Исходники по умолчанию загружаются в папку
~/clone/
. - в файле build.py команда для генерации
cd ~/clone/ python build.py
Публикация
На вкладке Deployment пишем что делать в случае успешной сборки. Я использую GitHub-Pages для хостинга, т.к. он проще всего настраивается и поддерживает доменные имена. Соответственно в скрипте пушим папку со сгенеренным сайтом в github. На вкладке 'General' есть поле 'SSH public key'. Добавляем этот ключ в настройках github-репозитория (Settings -> Deploy keys)
cd public/
git config --global user.email "<your email>"
git config --global user.name "<your name>"
git add .
git commit -m "$CI_MESSAGE"
git push --force git@github.com:melnikov-ivan/melnikov-ivan.github.io.git
Теперь сайт доступен по адресу melnikov-ivan.github.io.
Custom domain for GitHub pages
Для подключения доменного имени к github-pages надо:
- добавить файл
CNAME
, содержащий имя домена, в корень репозитория - у регистратора доменов добавляем a-записи с ip-адресами github'а
Подробнее на странице помощи github-pages192.30.252.153 192.30.252.154