Как запустить Ghost блог на постоянное выполнение
Для запуска ваших NodeJs приложений в фоне существует отличный модуль — forever. Этот модуль позволяет вам запустить приложение и освободить командную строку, ну и конечно же когда вы закроете терминал ваше приложение не отвалится а продолжит выполняться. Так же при падениях приложения модуль будет заботливо его перезапускать.
Установка Forever
Forever как и прочие модули для ноды устанавливаются одной командой через менеджер пакетов, вот так:
npm install -g forever
Запуск Ghost
Для начала перейдите в каталог вашего установленного Ghost. Если вы установили его как завещает официальная документация то у вас получится вот такой путь cd /var/www/ghost. Теперь отсюда выполните следующую команду:
forever start index.js
Обратите внимание это запустит Ghost в режиме разработки "Developer mode" для запуска продакшен версии используйте вот такую команду:
NODE_ENV=production forever start index.js
Запуск Ghost на основном домене
Для того что бы ваш блог стал доступен на вашем домене без указания порта :2368 вам нужно всего лишь проксировать порт на домен через Nginx.
Ниже я приведу простейшую конфигурацию виртуального хоста (бокса) который будет проксировать Ghost с :2368 на :80й порт
<code>server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:2368;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
</code>
Не забудьте перезапустить Nginx sudo service nginx restart и в config.js вашего блога указать домен как для продакшена так и для разработки, иначе ваш блог не будет видно из интернета.
Вот пример моей конфигурации для продакшена:
<code>var path = require('path'),
config;
config = {
production: {
url: 'http://blog.mysite.com',
mail: {},
database: {
client: 'sqlite3',
connection: {
filename: path.join(__dirname, '/content/data/ghost.db')
},
debug: false
},
server: {
host: '193.170.170.70',
port: '2368'
}
},
...
</code>
Полезные команды для с модуля Forever:
start Запуск приложения
stop Остановка выполнения приложения
stopall Остановка выполнения всех приложений
restart Перезапуск демона приложения
restartall Перезапуск всех приложений
list Показать все запущенные приложения
На случай отказа или перезапуска
В реальной жизни бывают такие ситуции как отказ оборудования, банальные сбои у хостера итд. И тут наш модуль Forever уже не всесилен. Что бы ваше приложение снова запустилось после перезагрузки вашего сервера или VPS нужно выполнить несколько нехитрых действий.
Для начала в папке вашего блога /var/www/ghost создайте файл starter.sh и поместите туда следующий код
<code>#!/bin/sh if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ] then export PATH=/usr/local/bin:$PATH NODE_ENV=production forever start index.js </code>
Теперь необходимо добавить этот файл в список кронтаба. Если он до сих пор не установлен у вас на сервере, выполните данную команду sudo apt-get install gnome-schedule что бы редактировать записи в кронтабе используйте следующую команду: crontab -e и добавьте туда вот такую запись:
@reboot /var/www/ghost/starter.sh