Как запустить 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