Ho uno script node.js che deve essere avviato all'avvio e eseguito sotto l'utente www-data. Durante lo sviluppo ho sempre iniziato la sceneggiatura con:Esegui script con rc.local: lo script funziona, ma non all'avvio
su www-data -c 'node /var/www/php-jobs/manager.js
Ho visto esattamente cosa è successo, il manager.js funziona ora alla grande. Cercando così ho scoperto che dovevo collocarlo nel mio /etc/rc.local
. Inoltre, ho imparato a puntare l'output su un file di log e ad aggiungere lo 2>&1
a "redirect stderr to stdout" e dovrebbe essere un demone, quindi l'ultimo carattere è un &
.
Infine, la mia /etc/rc.local
assomiglia a questo:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
su www-data -c 'node /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2>&1 &'
exit 0
Se corro io stesso (sudo /etc/rc.local
): sì, funziona! Tuttavia, se eseguo un riavvio no processo node
è in esecuzione, il /var/log/php-jobs.log
non esiste e, quindi, il manager.js non funziona. Che cosa sta succedendo?
Funziona se si aggiunge 'nohup (1)'? 'su www-data -c 'nodo nohup /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2> & 1 &'' O devi dare un percorso assoluto per 'node' perché non è nel' PATH' che viene utilizzato durante l'avvio iniziale? 'su www-data -c '/ percorso/su/nodo /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2> & 1 &'' – sarnold
Sfortunatamente, questo non funziona anche lavorare. Ho provato a) aggiungere nohup b) aggiungere path assoluto/usr/bin/node ec) controllati i permessi di /var/log/php-jobs.log, sono impostati su www-data: www-data. Dopo il riavvio, non esiste un processo 'node' (che è il caso se lo avvio da solo) e /var/log/php-jobs.log è vuoto. Grazie per la rapida risposta, altri suggerimenti? –
Forse aggiungere un file di configurazione 'upstart'; [a quanto pare ha bisogno di 'HOME' per essere configurato] (http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/)? – sarnold