Цель: Дать методику написания рецепта для VMManager, с самим рецептом в конце. В итоге упростить установку блога GHost для не подготовленных пользователей.

Целевая аудитория: Блогеры и те кто хотят ими стать, а так же хостеры желающие использовать подобный рецепт и просто администраторы.

Причина написания статьи кроется в том, что только за последний месяц ко мне уже второй раз обращаются за помощью в установке GHost, причём заваливаются на банальном. Поискал инструкции по установке и понял что рядовой пользователь, который не общается с консолью, вероятно не быстро их распробует.

Поехали…

Для начала нужно понять как же вообще пишется рецепт, кому интересно эти знания я подцепил тут

У меня после прочтения принципа создания рецепта получилось вот это:

#!/bin/bash
#
# metadata_begin
# recipe: ghost
# tags: debian9
# revision: 1
# description_ru: Тут будет описание когда рецепт будет готов напишем его.
# metadata_end
#

Всё остальное чистый bash, то есть надо написать скрипт, который ставит все необходимые программы для работы ghost. Перечислим эти программы:

  1. NodeJS >=4.5 <5 >=6.9 <7
  2. Nginx
  3. yarn

NodeJS нужной версии можно взять из официальных репозиториев Debian, на момент написания статьи там 6.11.4~dfsg-1 версия.
Те, кому эта идея может показаться рискованной могут использовать репозитории NodeJS с официального сайта.

Nginx и yarn будем ставить из предустановленных репозиториев. Чтобы добавить репозиторий unstable понадобится такая строчка.

Если Вам не нужен рецепт для панели, а просто нужно поставить GHost через консоль на Debian 9, то можете выполнять все команды в консоли от root-пользователя. Данный рецепт тестировался только на Debian 9, хотя и на других версиях Debian он тоже должен сработать.

echo 'deb http://ftp.ru.debian.org/debian unstable main' > /etc/apt/sources.list.d/nodejs.list

Но если оставить эту строчку без правки её приоритета в системе сервер в процессе обновлений перетечёт из стабильной в не стабильную ветку, а так как этого нам не надо установим приоритеты.

echo -e 'Package: *\nPin: release a=unstable\nPin-Priority: -9' > /etc/apt/preferences

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

Теперь необходимо обновить список пакетов.

apt update

Установим NodeJS

apt -y install --no-install-recommends -t unstable nodejs npm

Теперь установим Nginx и yarn

apt -y install --no-install-recommends nginx-light yarn

Теперь будем придерживаться официальной инструкции по установке.

Добавим пользователя

adduser --shell /bin/bash --gecos 'Ghost application' ghost --disabled-password

Установим ghost-cli

npm i -g ghost-cli

Пояснения к параметрам запуска можно посмотреть выполнив в консоли

ghost help

или посмотреть тут и тут

Запускаем установку GHost

Если Вы тот, кто пользуется мануалом для установки GHost, перед выполнением этой команды убедитесь что команда

hostname -f

выводит в консоль Ваше доменное имя, в противном случае замените в данной строчке и далее в следующих командах $(hostname -f) на Ваше доменное имя


ghost install -d /var/www/$(hostname -f) --no-stack --url http://$(hostname -f) --db sqlite3 --dbpath /home/ghost/bd --no-setup-nginx --no-setup-systemd --no-start

Подправим права после установки

chown -R ghost:ghost /var/www/$(hostname -f)

Переходим в папку с сайтом для завершения установки

cd /var/www/$(hostname -f)

Удаляем конфигурационный файл по умолчанию в Nginx

rm /etc/nginx/sites-enabled/default

Настраиваем Nginx

ghost setup nginx

настраиваем демона и запускаем его

ghost setup systemd && ghost start

Можно использовать как скрипт для установки GHost

Посмотреть что получилось
#!/bin/bash
#
# metadata_begin
# recipe: ghost
# tags: debian9
# revision: 1
# description_ru: Установка GHost
# metadata_end
#
echo 'deb http://ftp.ru.debian.org/debian unstable main' > /etc/apt/sources.list.d/nodejs.list
echo -e 'Package: *\nPin: release a=unstable\nPin-Priority: -9' > /etc/apt/preferences
apt update
apt -y install --no-install-recommends -t unstable nodejs npm
apt -y install --no-install-recommends nginx-light yarn
adduser --shell /bin/bash --gecos 'Ghost application' ghost --disabled-password
npm i -g ghost-cli
ghost install -d /var/www/$(hostname -f) --no-stack --url http://$(hostname -f) --db sqlite3 --dbpath /home/ghost/bd --no-setup-nginx --no-setup-systemd --no-start
chown -R ghost:ghost /var/www/$(hostname -f)
cd /var/www/$(hostname -f)
rm /etc/nginx/sites-enabled/default
ghost setup nginx
ghost setup systemd && ghost start

Комментарии (2)


  1. wispoz
    10.10.2017 10:33

    Раз уж рецепт, то поделились бы рецептом для Ansible и прочих, ну и рассказали бы что такое Ghost.


    1. castomi Автор
      10.10.2017 10:37

      поделились бы рецептом для Ansible
      Обязательно поделюсь если буду его делать.

      рассказали бы что такое Ghost

      Отвечу ссылкой на википедию
      https://ru.wikipedia.org/wiki/Ghost_(%D0%B1%D0%BB%D0%BE%D0%B3-%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0)