Настройка пользователя в upstart script для Node.JS и навсегда

я запускаю веб-сайт, который использует узел.JS на Ubuntu Server (14.04 LTS). После перезагрузки машины, мой текущий рабочий процесс вручную запустить сервер вручную, выполнив команду

$ forever start app.js

Я сейчас пытаюсь автоматизировать этот процесс с Upstart. Я использовал chkconfig на RHEL раньше, но я новичок в выскочке. Я написал следующий скрипт и сохранил его в / etc/init / myapp.conf.

#!upstart                                                          
description "Start the node process with Upstart"         

start on startup                                                   
stop on shutdown                                                   
expect fork                                                        

env APP_DIR="/path/to/app"                         
env NODE_BIN="/usr/local/bin"                                      
env HOME_DIR="/home/admin"                                     

script                                                             
    date                                                           
    echo "Starting"                                             
    su admin                                                   
    cd $APP_DIR                                                    
    PATH=$NODE_BIN:$PATH                                           
    HOME=$HOME_DIR                                                 
    echo "Running forever start"                                   
    forever start app.js                                      
end script                                                         

pre-stop script                                                    
    date                                                           
    echo "Stopping"                                             
    su admin                                                   
    cd $APP_DIR                                                    
    PATH=$NODE_BIN:$PATH                                           
    HOME=$HOME_DIR                                                 
    echo "Running forever stop"                                    
    forever stop app.js                                       
end script

тем не менее, сценарий, кажется, не работа. Когда я бегу sudo start myapp или sudo stop myapp консоль просто зависает.

Я хотел бы Upstart эмулировать как можно ближе к тому, что произойдет, если я просто вошел в компьютер после перезагрузки и побежал forever start app.js, включая пользователя, выполняющего процесс, расположения файлов журнала по умолчанию и т. д.

какие идеи?

16
задан sffc
12.01.2023 20:17 Количество просмотров материала 3268
Распечатать страницу

1 ответ

С помощью upstart вы сможете перестать использовать forever для управления процессом узла. upstart имеет механизмы для обеспечения запуска/остановки/перезапуска вашего процесса в случае сбоя (или почти любого другого события в этом отношении)

вот модифицированная версия вашего скрипта upstart, которая использует upstart's respawn директива для обработки перезапуска процесса, если он выходит из строя:

description "Start the node process with Upstart"         
author "you"

# use if your process is going to fork *once*
# expect fork

# use if your process is going to fork *twice*
# exepect daemon

# respawn the process indefinitely
# (ie. disregard the number of times it crashed
# during a given interval and continuously 
# restart the process)
respawn
respawn limit unlimited

setuid admin

# ensures the process is only started once we have
# filesystem access and an ethernet interface other
# than loopback is available (ie. internet conn)
# if your node process doesn't require net connectivity
# just remove the `and net-device-up...`
start on (local-filesystem and net-device-up IFACE!=lo)
stop on shutdown

# chdir sets the directory for all script blocks 
# (pre/post/errethang)
chdir "/path/to/your/app"

script
    # we're already in /path/to/your/app cause of `chdir`                                       
    echo "app is starting"
    /usr/local/bin/node app.js 2>&1 > app.log
end script

pre-stop script
    echo "app is about to stop"
end script

наконец, чтобы быть уверенным, что в вашем сервисе нет синтаксических ошибок conf, вы можете использовать init-checkconf /etc/init/myapp.conf.

мой основной источник информации для upstart здесь. однако этот документ немного тяжеловесный. и трудно отличить реальное использование от некоторых примеров.

2
отвечен antino 2023-01-14 04:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх