Bagaimana cara Menggunakan Selamanya Dengan Express agar Server NodeJS Tetap Berjalan?

Saya memiliki server Express NodeJS yang saya mulai secara manual melalui terminal dengan npm start di folder root proyek saya. Saya mengunduh dan menginstal paket Forever secara global. Ketika saya menjalankan Forever pada file app.js saya menggunakan:

forever start app.js

server saya tidak mulai. Saya berasumsi ini karena tidak ada perintah createServer yang eksplisit di file app.js. File apa yang harus saya jalankan terhadap perintah forever start untuk memulai server saya?


person Lloyd Banks    schedule 01.08.2014    source sumber


Jawaban (4)


Di server simpul saya, saya menggunakan npm forever dengan:

sudo forever start app.js

Perhatikan Anda perlu sudo itu

person Sterling Archer    schedule 01.08.2014
comment
Saya sudah mencobanya dengan sudo, tetapi server masih belum bisa berfungsi. Saya tidak mendapatkan kesalahan terminal sehingga sepertinya perintah telah dijalankan, tetapi tidak pada file yang benar. Jika saya memulai dengan npm start, saya dapat mencapai titik akhir yang telah saya siapkan, tetapi dengan forever start, titik akhir tidak aktif - person Lloyd Banks; 01.08.2014
comment
apakah aplikasi Anda mendengarkan? - person Sterling Archer; 01.08.2014

Yang perlu Anda lakukan hanyalah, di folder proyek Anda, jalankan perintah forever start ./bin/www dan semuanya akan baik-baik saja :)

person Danilo    schedule 15.12.2015

Pertama, saya membuat skrip Upstart. Saya menjalankan Amazon EC2 AMI, tetapi ada alat lain seperti ini untuk OS lain.

# This is an upstart (http://upstart.ubuntu.com/) script
# to run the node.js server on system boot and make it
# manageable with commands such as
# 'start app' and 'stop app'
#
# This script is to be placed in /etc/init to work with upstart.
#
# Internally the 'initctl' command is used to manage:
# initctl help
# initctl status node-app
# initctl reload node-app
# initctl start node-app

description "node.js forever server for app"

#node child process might not really fork, so don't except it
#expect fork

# used to be: start on startup
# until we found some mounts weren't ready yet while booting:

start on runlevel [2345]
stop on runlevel [016]

# Automatically Respawn:
respawn
respawn limit 99 5

chdir /path/to/directory/node-app

exec node start.js

#post-start script
#   # Optionally put a script here that will notifiy you node has (re)started
#   # /root/bin/hoptoad.sh "node.js has started!"
#end script

Lalu saya menggunakan file start.js yang "menghosting" aplikasi saya. Aplikasi saya yang sebenarnya terletak di index.js. Anda dapat melewatkan process.on hal di bawah, tapi saya suka di sana.

/*jslint node: true */
"use strict";

/**
 * File to start using forever, logs crashes, restarts on file changes, etc.
 */

var cmd = ( process.env.DBG ? "node --debug" : "node" );

var forever = require( 'forever' ),
  //exec = require('child_process').exec,
  child = new( forever.Monitor )( 'index.js', {
    'silent': false,
    'pidFile': 'pids/node-app.pid',
    'watch': true,
    'command': cmd,
    //"max" : 10,
    'watchDirectory': './lib', // Top-level directory to watch from.
    'watchIgnoreDotFiles': true, // whether to ignore dot files
    'watchIgnorePatterns': [], // array of glob patterns to ignore, merged with contents of watchDirectory + '/.foreverignore' file
    'logFile': 'logs/forever.log', // Path to log output from forever process (when daemonized)
    //'outFile': 'logs/forever.out', // Path to log output from child stdout
    'errFile': 'logs/forever.err'
  } );

child.on( "exit", function() {
  console.log( 'node-app has exited!' );
} );
child.on( "restart", function() {
  console.log( 'node-app has restarted.' );
} );


child.start();
forever.startServer( child );

process.on( 'SIGINT', function() {
  console.log( "\nGracefully shutting down \'node forever\' from SIGINT (Ctrl-C)" );
  // some other closing procedures go here
  process.exit();
} );

process.on( 'exit', function() {
  console.log( 'About to exit \'node forever\' process.' );
} );

process.on( 'uncaughtException', function( err ) {
  console.log( 'Caught exception in \'node forever\': ' + err );
} );

Bekerja untuk saya! Anda dapat melewati hal-hal pemula jika Anda hanya ingin melihat aplikasi Anda terus berjalan - ini adalah solusi produksi saya.

person clay    schedule 04.08.2014

forever -w ./bin/www 

Di folder proyek Anda, jalankan perintah forever -w ./bin/www. Itu berhasil untuk saya. Saya yakin ini akan berhasil untuk Anda.

person Gourab Sarkar    schedule 04.04.2016