Node.js uygulaması bir önyükleme hizmeti oluşturarak makine önyüklemesinde nasıl başlatılır


0

Makinem Ubuntu 16.04. Makine her açılışında node.js uygulamamı başlatmak istiyorum. Bu yazıya göre otomatik başlatma hizmetleri hakkında. Aşağıdakileri yaparak bir hizmet yapmaya çalıştım:

1) Düğüm uygulamasını düğümün forevermodülüyle başlatmak için bir komut dosyası oluşturdum .

#!/bin/bash

echo "Starting App"

forever -a start /opt/app/app.js

echo "App started"

2) Bu betiği adlandırdım startApp.shve bu betiği /etc/init.d/ klasörüne koydum .

3) Komutanlığı koştum update-rc.d startApp defaults

Ama error -rc.d hatası aldım : hata: initscript mevcut değil: /etc/init.d/startApp

Neyi yanlış yaptım?


Aradaki tutarsızlığa dikkat edin: "Bu komut dosyasını startApp.sh olarak adlandırdım ve bu komut dosyasını /etc/init.d/ klasörüne yerleştirdim." ve "initscript mevcut değil: /etc/init.d/startApp". .shikinci durumda eksik, bu yüzden başlatırken eklemeniz gerekebilirupdate-rc.d
Patrick Mevzek

@PatrickMevzek mantıklı ama nedense, bu yazıdaki bağlantı içermiyordu, .shbu yüzden bu komutu çalıştırırken yapılan bir dönüşüm olduğunu varsaymıştım
b11

Yanıtlar:


0

İnit.d 'standard' yazı servislerini kullanmanız şiddetle tavsiye edilir, bu aynı zamanda başka bir kişi init.d servislerinin farkında olan birisine baktığında daha az kafa karışıklığı yaratır. Lütfen aşağıdaki örneğe bakınız:

#!/bin/sh
#
# Author: Your Name <email@address.domain>
#
### BEGIN INIT INFO
# Provides:       Name
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $syslog
# Should-Stop:    $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Add a description here
### END INIT INFO

# Using LSB functions:
. /lib/lsb/init-functions

set -e

NAME="NAME"
DAEMON=/opt/app/app.js
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Function that starts the daemon/service.
d_start() {
        log_daemon_msg "Starting" "$NAME"
        start-stop-daemon --start --quiet --background --pidfile $PIDFILE --make-pidfile --startas $DAEMON
        log_end_msg $?
}

# Function that stops the daemon/service.                                         
d_stop() {                                                                        
        log_daemon_msg ":: stopping" "$NAME"                                      
        start-stop-daemon --stop --pidfile $PIDFILE --retry 10                    
        log_end_msg $?                                                            
}                                                                                 

# Function that sends a SIGHUP to the daemon/service.                             
case "$1" in                                                                      
  start|stop)                                                                     
        d_${1}                                                                    
        ;;                                                                        
  restart|reload|force-reload)                                                    
        d_stop                                                                    
        sleep 1                                                                   
        d_start                                                                   
        ;;                                                                        
  status)                                                                         
        status_of_proc "$NAME" "$DAEMON" && exit 0 || exit $?                     
        ;;                                                                     
  *)                                                                           
        echo "Usage: $SCRIPTNAME {start|stop|restart|status}"                  
        exit 3                                                                 
        ;;                                                                     
esac                                                                           

exit 0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.