11/9/2015 · Технические темы

Свой блог на ghost+buster для почти простых смертных

Нашей целью является свой собственный блог, независимый от воли хозяев ЖЖ, Blogger и прочих Medium. Эта небольшая инструкция, позволит завести блоговое хозяйство за несколько минут и получить:

  1. приятный и необременительный способ написания статей
  2. маркдаун везде
  3. неплохой внешний вид блога и возможность проявить индивидуальность с выбором оформления
  4. быть готовым к всплеску популярности и выжить при практически любой нагрузке

Кроме того, для тех, кто хочет копнуть глубже:

  1. Возможность публикации блога на S3, Google Nearline или на любое подобное место
  2. Автоматически сохранять копии всех ваших постов в очень универсальном формате markdown

Вот краткое описание того, что мы будем делать:


Поднимаем дроплет

Первым делом надо завести себе экаунт на DigitalOcean. Это можно (и нужно ;) сделать по моей реферальной ссылке и получить 2мес бесплатно, либо прямо с их сайта. Цена вопроса - $5/мес. За эти деньги вы получите 1Т трафика в месяц, что на практике более чем достаточно.

Далее запускаем новый дроплет кликнув на зеленый "CREATE". Даем ему какое-нибудь имя (любое) на ваш вкус. Я, например, дал своему "ghost-buster-test". Выбираем (в "Select Size") 512MB/1CPU, а в "Select Region" то место, где вы хотите расположить свой блог.

Далее в секции "Select Image" переходим в "Applications" и там выбираем "Docker 1.8.1 on Ubuntu"

После этого жмем на "Create Droplet" и ждем минуту (иногда чуть больше) пока оно создается.

Предварительная настройка

Достаем docker-compose и устанавливаем на нашем дроплете:

curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose  
chmod +x /usr/local/bin/docker-compose  

Берем из моего репозитория:

cd /srv  
git clone https://github.com/umputun/ghost-buster-docker.git  

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

Настраиваем и запускаем блог

Зайдя в каталог с нашим ghost-buster (cd /srv/ghost-buster-docker) мы там обнаружим файл docker-compose.yml который надо немного поменять для вашего блога. Делаем nano /srv/ghost-buster-docker/docker-compose.yml находим там - BLOG_DOMAIN=http://p.umputun.com и меняем мой домен на ваш. Да, и важно, чтоб вы оставили начало с http://. Т.е. если ваш блог будет жить по адресу myblog.blah.ru то у вас должно получиться - BLOG_DOMAIN=http://myblog.blah.ru

Сохраняем файл (F2, Y) и выходим (ESC)

Первый запуск

Теперь мы запустим все, что надо. Если вам интересны детали, то посмотрите в репозитории, а для всех остальных - мы запустим 2 контейнера:

  1. ghost-buster - это сам движок блога плюс автоматическая генерация статистических страниц
  2. ghost-nginx - веб сервер для статики и прокси сервер для управления блогом.

Делается это так:

cd /srv/ghost-buster-docker  
docker-compose pull  
docker-compose up -d  

Выполнение docker-compose займет несколько минут, не мешайте ему. Когда все закончится, мы получим почти готовый блог.

обновление от 20 сентября 2015: я упростил процесс посредством использования предварительно собранного образа.

Заводим пользователя и начинаем писать шедевры.

К этому моменту вы должны заиметь работающий блог, но пока этого не видно. Для того, чтоб стало хорошо, надо зайти адрес/ghost (в моем случае это было http://162.243.228.100/ghost) и ghost попросит завести пользователя.

После завершения этого немудернного процесса у вас, по адресу http://<ваш-адрес>/ будет блог в который можно писать и который может кто и будет читать.

Для возврата в админскую часть, ту где вы будете писать, редактировать и настраивать, добавьте /ghost к адресу, и вы там.

Как добавить темы оформления

На просторах интернета можно найти много разных тем оформления для ghost. Чтоб они появились в вашем блоге, их надо положить в /srv/ghost-buster-docker/data/content/themes. Вот так, например я добавлю тему crisp

mkdir -p /srv/ghost-buster-docker/data/content/themes  
cd /srv/ghost-buster-docker/data/content/themes  
git clone https://github.com/kathyqian/crisp-ghost-theme.git  

Установка обновлений

Для того, чтоб достать обновленную конфигурацию надо сделать вот такое:

cd /srv/ghost-buster-docker  
docker-compose pull  
docker-compose up -d  

Эта процедура загрузит свежий образ с docker-hub, перестроит и перезапустит контейнеры. Она безопасна для ваших данных и не затронет постов, тем оформления и прочих установок вашего блога.

Дополнительная информация

Возможные проблемы и методы их решения

  1. После начальной установки блога и регистрации пользователя сайт недоступен.

    Возможно вы просто недождались, генерация может занять несколько секунд. Второй вариант починки: перегрузите контейнеры `/srv/ghost-buster-docker && docker-compose restart

  2. Нет доступа к сайту и к админской (/ghost) части.

    Видимо на вашем дроплете запущен файрвол (UFW). По умолчанию его там нет, но если вы ставите это на один из ваших созданных заранее дроплетов, то все может быть. Надо разрешить доступ к 80 порту - sudo ufw allow 80/tcp

  3. Попытка запустить docker-compose падает с сообщением Unsupported config option for nginx service: 'container_name'

    Это означает, что у вас уже установлена старая версия docker-compose. Проще всего его обновить сделав sudo pip install -U docker-compose. Если вы не хотите или не можете этого сделать, то просто добавьте /usr/local/bin к команде docker-compose, т.е. /usr/local/bin/docker-compose up -d

  4. Возникло желание собрать образ самому, вместо использования готового

    1. Добавляем swap, он нужен для сборки контейнера на мелких дроплетах - fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
    2. Меняем в docker-compose.yml строку image: umputun/ghost-buster-docker на build: build/ghost-buster

исправления неточностей и предложения по усовершенствованию принимаются в комментариях.

Comments powered by Disqus