Ini adalah pertanyaan lama, tetapi berperingkat tinggi di Google. Saya hampir tidak bisa percaya pada jawaban dengan suara terbanyak, karena menjalankan proses node.js di dalam sesi layar, dengan &
atau bahkan dengan nohup
bendera - semuanya - hanyalah solusi.
Khususnya solusi layar / tmux, yang harus benar-benar dianggap sebagai solusi amatir . Layar dan Tmux tidak dimaksudkan untuk menjaga proses berjalan, tetapi untuk sesi terminal multiplexing. Tidak apa-apa, ketika Anda menjalankan skrip di server Anda dan ingin memutuskan sambungan. Tetapi untuk server node.js Anda tidak ingin proses Anda dilampirkan ke sesi terminal. Ini terlalu rapuh. Agar semuanya tetap berjalan, Anda perlu melakukan daemonisasi proses!
Ada banyak alat bagus untuk melakukannya.
PM2 : http://pm2.keymetrics.io/
# basic usage
$ npm install pm2 -g
$ pm2 start server.js
# you can even define how many processes you want in cluster mode:
$ pm2 start server.js -i 4
# you can start various processes, with complex startup settings
# using an ecosystem.json file (with env variables, custom args, etc):
$ pm2 start ecosystem.json
Satu keuntungan besar yang saya lihat mendukung PM2 adalah dapat menghasilkan skrip startup sistem untuk membuat proses bertahan di antara restart:
$ pm2 startup [platform]
Di mana platform
bisa ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
.
forever.js : https://github.com/foreverjs/forever
# basic usage
$ npm install forever -g
$ forever start app.js
# you can run from a json configuration as well, for
# more complex environments or multi-apps
$ forever start development.json
Skrip init :
Saya tidak masuk ke detail tentang bagaimana menulis skrip init, karena saya bukan ahli dalam hal ini dan itu akan terlalu lama untuk jawaban ini, tetapi pada dasarnya mereka adalah skrip shell sederhana, dipicu oleh peristiwa OS. Anda dapat membaca lebih lanjut tentang ini di sini
Docker :
Jalankan saja server Anda dalam wadah Docker dengan -d
opsi dan, ya ampun , Anda memiliki server node.js yang terubah!
Berikut ini adalah contoh Dockerfile (dari panduan resmi node.js ):
FROM node:argon
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install
# Bundle app source
COPY . /usr/src/app
EXPOSE 8080
CMD [ "npm", "start" ]
Kemudian buat gambar Anda dan jalankan wadah Anda:
$ docker build -t <your username>/node-web-app .
$ docker run -p 49160:8080 -d <your username>/node-web-app
Semoga ini bisa membantu seseorang mendarat di halaman ini. Selalu gunakan alat yang tepat untuk pekerjaan itu. Ini akan menghemat banyak sakit kepala dan berjam-jam!
exit
. Ketika saya hanya menutup jendela Putty gagal.