Сценарий Bash для блога Ghost не запускается при перезагрузке сервера

У меня есть очень простой bash-скрипт, который должен запускать мой призрачный блог. Я использую crontab для запуска скрипта при запуске, вот команда crontab, которую я запускаю:

@reboot /var/www/ghost/launch.sh

Скрипт имеет следующий код:

#!/bin/sh

ps auxw | grep apache2 | grep -v grep > /dev/null

if [ $? != 0 ]
then
        NODE_ENV=production forever start --sourceDir /var/www/ghost index.js
fi

Когда я sudo reboot сервер и использую forever list для поиска запущенных процессов, я вижу следующее:

data:    [0] sHyo /usr/bin/nodejs index.js 1299    1314 /home/webadmin/.forever/sHyo.log 0:0:1:25.957

Когда я nano захожу в этот файл журнала, в журнале говорится следующее:

^[[31m
ERROR:^[[39m ^[[31mCould not locate a configuration file.^[[39m
^[[37m/home/webadmin^[[39m
^[[32mPlease check your deployment for config.js or config.example.js.^[[39m

Error: Could not locate a configuration file.
    at checkTemplate (/var/www/ghost/core/config-loader.js:16:36)
    at Object.cb [as oncomplete] (fs.js:168:19)

error: Forever detected script was killed by signal: null

Кажется, он ищет в /home/webadmin/, но привидение установлено в /var/www/ghost????

Когда я запускаю точно такой же сценарий в терминале вручную после запуска сервера путем ssh входа на сервер, сценарий работает нормально. Я запускаю: cd /var/www/ghost/, а затем ./launch.sh, и блог-призрак появляется и работает нормально. Журнал для этого процесса forever говорит следующее:

^[[32mGhost is running...^[[39m
Your blog is now available on http://blog.example.com ^[[90m
Ctrl+C to shut down^[[39m

Что не так с моим скриптом или crontab, из-за чего он не может правильно запустить скрипт?


person Neil    schedule 27.11.2013    source источник


Ответы (2)


Я запускаю: cd /var/www/ghost/, а затем ./launch.sh, и блог-призрак появляется и работает нормально.

В том-то и дело, что ваша работа cron не делает то же самое:

@reboot /var/www/ghost/launch.sh

Этот скрипт выполняется из вашего домашнего каталога. Один из способов исправить это изменить ваш crontab:

@reboot cd /var/www/ghost; ./launch.sh

Другой способ — добавить эту строку вверху launch.sh, в любом месте перед запуском forever:

# change to the directory of this script
cd $(dirname "$0")
person janos    schedule 27.11.2013

Просто к вашему сведению всем, кто сталкивается с этим, я настоятельно рекомендую изучить pm2, чтобы запустить Ghost и контролировать Ghost. Он будет отслеживать Ghost как Forever и имеет встроенную функцию для создания сценария инициализации для запуска pm2 при перезапуске вашего сервера. Также имеет лучшие функции для мониторинга Ghost во время его работы. Ознакомьтесь с моими инструкциями здесь.

person howtoinstallghost    schedule 12.12.2013