Selanjutnya, mari kita lihat apakah selamanya dapat mencapai tujuan.
1. PENDAHULUAN SELAMANYA
Forever adalah daemon nodejs imperatif sederhana yang dapat memulai, menghentikan dan memulai kembali aplikasi aplikasi. Forever sepenuhnya didasarkan pada operasi baris perintah. Di bawah proses selamanya, proses anak node dibuat dan proses anak node dipantau melalui monitor. Setelah file diperbarui atau prosesnya habis, selamanya akan secara otomatis memulai kembali server node untuk memastikan bahwa aplikasi berjalan secara normal.
2. Instalasi selamanya
Instalasi global selamanya
Salinan kode adalah sebagai berikut:
~ D:/workspace/javascript> instal npm -g selamanya
D:/TOOLKIT/NODEJS/FORMER -> D:/TOOLKIT/NODEJS/NODE_MODULES/FORMER/BIN/FOREVER
D:/Toolkit/NodeJS/Foreverd -> D:/Toolkit/NodeJs/Node_Modules/Forever/Bin/Foreverd
Lihat Bantuan selamanya
Salinan kode adalah sebagai berikut:
~ D:/Workspace/JavaScript> Forever -H
Bantuan: Penggunaan: Selamanya [Tindakan] [Opsi] Script [opsi skrip]
membantu:
Bantuan: Memantau skrip yang ditentukan dalam proses saat ini atau sebagai daemon
membantu:
Bantuan: Tindakan:
Bantuan: Mulai skrip sebagai daemon
Bantuan: Berhenti hentikan skrip daemon
Bantuan: Stopall berhenti semua menjalankan skrip selamanya
Bantuan: mulai ulang restart skrip daemon
Bantuan: restartall restart semua skrip selamanya
Bantuan: Daftar daftar semua skrip Forever
Bantuan: Konfigurasi Daftar Semua Konfigurasi Pengguna Selamanya
BANTUAN: Atur <YEY> <VAL> Mengatur Forever Config yang ditentukan <Key>
BANTUAN: Hapus <Eyy> menghapus Config Forever yang ditentukan <yy key>
Bantuan: Log mencantumkan file log untuk semua proses selamanya
BANTUAN: Log <Script | Index> Ekor log untuk <skrip | index>
Bantuan: Kolom Tambahkan <col> Menambahkan kolom yang ditentukan ke output di `Daftar Selamanya`
Bantuan: Kolom RM <Col> menghapus kolom yang ditentukan dari output di `Daftar Selamanya`
Bantuan: Kolom Set <cols> Setel semua kolom untuk output di `Daftar Forever`
Bantuan: CleanLogs [hati -hati] Menghapus semua file log historis selamanya
membantu:
Bantuan: Opsi:
Bantuan: -m Max Hanya Jalankan Skrip Max Times yang Ditentukan
Bantuan: -L LogFile mencatat output selamanya ke logfile
Bantuan: -o outfile log stdout dari skrip anak ke outfile
Bantuan: -e errfile mencatat stderr dari skrip anak ke errfile
BANTUAN: -P jalur dasar jalur untuk semua file terkait selamanya (file PID, dll.)
Bantuan: -C Perintah Perintah Untuk mengeksekusi (default ke node)
Bantuan: -A, -Lapehkan Log Tambahkan
Bantuan: -f, -Fifo Stream Log ke stdout
Bantuan: -n, -jumlah jumlah baris log untuk dicetak
Bantuan: - -PIDFILE File PID
Bantuan: --sourcedir Direktori Sumber yang skripnya relatif
Bantuan: --Thinuptime Minimum Uptime (Millis) agar naskah tidak dianggap "berputar"
BANTUAN: --SPinsleepime Time To Wait (Millis) antara peluncuran skrip pemintalan.
Bantuan:--warna ---no-warna akan menonaktifkan pewarnaan output
Bantuan:-alias dapur-no-warna
Bantuan: -D, --Debug kekuatan selamanya untuk mencatat output debug
Bantuan: -V, --Verbose menyalakan pesan verbose dari selamanya
Bantuan: -s, - -silent menjalankan skrip anak yang membungkam stdout dan stderr
Bantuan: -W, -Watch Watch untuk Perubahan File
Bantuan:-WatchDirectory Direktori tingkat atas untuk ditonton
Bantuan: --watchignore untuk mengabaikan pola saat menonton diaktifkan (beberapa opsi diperbolehkan)
Bantuan: -H, -membantu Anda menatapnya
membantu:
Bantuan: [proses berjalan lama]
BANTUAN: Proses selamanya akan terus menjalankan outputting log log ke konsol.
Bantuan: Ex. forever -o out.log -e err.log my -script.js
membantu:
Bantuan: [Daemon]
Bantuan: Proses selamanya akan berjalan sebagai daemon yang akan membuat proses target dimulai
Bantuan: Di latar belakang. Ini sangat berguna untuk remote start script node.js sederhana
Bantuan: Tanpa menggunakan Nohup. Disarankan untuk menjalankan mulai dengan -o -l, & -e.
Bantuan: Ex. forever start -l forever.log -o out.log -e err.log my -daemon.js
Bantuan: Selamanya hentikan my-daemon.js
membantu:
Kami melihat bahwa selamanya mendukung banyak item perintah dan konfigurasi, yang seharusnya menjadi alat manajemen baris perintah.
3. Penjelasan Cina tentang Baris Perintah Selamanya
Tindakan Sub -perintah:
Salinan kode adalah sebagai berikut:
Mulai: Mulai proses daemon
Berhenti: Hentikan daemon
Stopall: Hentikan semua proses selamanya
Restart: Restart daemon
restartall: restart semua proses untuk
Daftar: Daftar Menampilkan Proses Selamanya
Konfigurasi: Sebutkan semua item konfigurasi pengguna
Atur <YEY> <VAL>: Atur Item Konfigurasi Pengguna
Hapus <Eyy>: Bersihkan Item Konfigurasi Pengguna
Log: daftar log untuk semua proses selamanya
Log <Script | Index>: Tampilkan log terbaru
Kolom Tambahkan <col>: Metrik Kustom ke Daftar Selamanya
Kolom RM <Col>: Hapus Metrik Daftar Selamanya
Kolom Set <cols>: Setel semua metrik ke daftar selamanya
CleanLogs: Hapus semua log sejarah selamanya
Opsi Parameter Konfigurasi:
Salinan kode adalah sebagai berikut:
-m Max: berapa kali skrip yang ditentukan dijalankan
-L LogFile: Output Log ke LogFile
-o outfile: Informasi konsol output ke outfile
-e errfile: kesalahan konsol output di errfile
-p Path: Root Directory
-C Perintah: Jalankan perintah, default adalah node
-a, tambahkan: gabungan log
-f, FIFO: Output log streaming
-n, Nomor: Jumlah baris cetak log
PIDFILE: File PID
Sourcedir: Direktori Kode Sumber
MinUptime: Waktu Pembaruan Spinum Minimum (MS)
Spinsleeptime: Interval antara dua putaran
Warna: pewarnaan output konsol
Polos: alias tanpa warna, output konsol tidak berwarna
-D, Debug: Mode Debug
-v, verbose: cetak output terperinci
-s, diam: jangan mencetak log dan pesan kesalahan
-W, Tonton: Monitor Perubahan File
WatchDirectory: Pantau direktori teratas
Watchignore: Abaikan pemantauan melalui pencocokan pola
-H, Bantuan: Informasi Bantuan Baris Perintah
4. Manajemen Server Selamanya
Buat proyek web (Express3+EJS) dan gunakan selamanya untuk mengelola server.
Instal Express3
Salinan kode adalah sebagai berikut:
~ D:/workspace/javascript> express -e nodeJs -forever
~ D:/workspace/javascript> cd nodejs-forever && npm instal
Mulai aplikasi melalui selamanya
Salinan kode adalah sebagai berikut:
~ D:/workspace/javascript/nodejs-forever> forever start app.js
PERINGATAN: - -MINUPTIME TIDAK DILAKUKAN. Default ke: 1000ms
WARN: --HERPINLEPTime tidak diatur. Skrip Anda akan keluar jika tidak begadang setidaknya 1000ms
Info: File Pemrosesan Selamanya: App.js
Buka browser: http: // localhost: 3000, Anda dapat melihat antarmuka web
Periksa status selamanya di bawah menang
Salinan kode adalah sebagai berikut:
~ D:/workspace/javascript/nodeJs-forever> forever list
Info: No Forever Proses Running
~ D:/workspace/javascript/nodejs-forever> forever stop app.js
Kesalahan: selamanya tidak dapat menemukan proses dengan indeks: app.js
Kami menemukan bahwa program Forever bekerja salah! Lai Program ini jelas dalam keadaan berjalan, tetapi tidak dapat dilihat melalui daftar. Selanjutnya, beralih ke Linux Ubuntu dan lanjutkan pengujian.
5. Selamanya mengelola server di Ubuntu
Lingkungan Sistem Linux
Linux: Ubuntu 12.04.2 64bit Server
Node: V0.11.2
NPM: 1.2.21
Proyek Inisialisasi: Perintah Instalasi tidak dijelaskan
Salinan kode adalah sebagai berikut:
~ CD/HOME/CONAN/NODEJS
~ Express -e NodeJs -forever
~ cd nodejs-forever && npm instal
~ sudo npm menginstal selamanya -g
Mulai selamanya
Salin kode sebagai berikut: ~ selamanya mulai app.js
PERINGATAN: - -MINUPTIME TIDAK DILAKUKAN. Default ke: 1000ms
WARN: --HERPINLEPTime tidak diatur. Skrip Anda akan keluar jika tidak begadang setidaknya 1000ms
Info: File Pemrosesan Selamanya: App.js
Periksa status server node
Salin kode sebagai berikut: ~ Daftar Selamanya
Info: Proses Selamanya Berjalan
Data: UID Command Script Forever PID Logfile Uptime
Data: [0] l2ty/usr/local/bin/node app.js 18276 18279/home/conan/.forever/l2ty.log 0: 0: 0: 37.792
# Proses Sistem
~ ps -acaux | grep node
Peringatan: Sintaks PS yang buruk, mungkin palsu '-'? Lihat http://procps.sf.net/faq.html
Conan 18296 0.5 1.1 597696 23776? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Conan 18299 0.4 0.8 630340 18392? SL 15:48 0:00/USR/LOCAL/BIN/NODE/HOME/CONAN/NODEJS/NodeJS-FORever/app.js
# Pekerjaan Port
~ netstat -nltp | grep node
TCP 0 0 0.0.0.0:3000 0.0.0.0:* Dengarkan 18299/Node
Hentikan server
Salin kode sebagai berikut: ~ selamanya berhenti app.js
Info: Proses berhenti selamanya:
Data: UID Command Script Forever PID Logfile Uptime
[0] l2ty/usr/local/bin/node app.js 18276 18279/home/conan/.forever/l2ty.log 0: 0: 0: 45.621
Kami melihat bahwa itu normal di lingkungan Linux Ubuntu.
6. Simulasikan Downtime Server
Dua solusi tes:
1. Gunakan perintah Linux untuk membunuh proses simpul secara langsung
2. Di aplikasi, simulasikan Excection Exit
1). Gunakan perintah linux untuk membunuh proses simpul secara langsung
Salinan kode adalah sebagai berikut:
# Periksa proses simpul, PID = 18299
~ ps -acaux | grep node
Conan 18296 0.0 1.1 597696 23776? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Conan 18299 0,0 0,8 630340 18392? SL 15:48 0:00/USR/LOCAL/BIN/NODE/HOME/CONAN/NODEJS/NodeJS-FORever/app.js
Conan 18315 0,0 0,0 13584 956 poin/5 R+ 15:52 0:00 GREP - -Color = Node Otomatis
# Bunuh PID = 19299
~ Bunuh -9 18299
# Lihatlah proses node lagi, simpul akan secara otomatis restart, PID baru = 18324
~ ps -acaux | grep node
Conan 18296 0.0 1.1 597696 23916? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Conan 18316 2.6 0.8 630340 18412? SL 15:52 0:00/USR/LOCAL/BIN/NODE/HOME/CONAN/NODEJS/NodeJS-FORever/app.js
Conan 18324 0.0 0.0 13584 956 poin/5 R+ 15:52 0:00 GREP -COLOR = Node Otomatis
Kami melihat bahwa membunuh proses node, selamanya akan membantu kami memulai ulang node.
Bunuh monitor selamanya
Salinan kode adalah sebagai berikut:
~ Bunuh -9 18296
~ ps -acaux | grep node
Conan 18316 0,0 0,9 630340 18644? SL 15:52 0:00/USR/LOCAL/BIN/NODE/HOME/CONAN/NODEJS/NodeJS-FORever/app.js
Conan 18333 0,0 0,0 13584 952 poin/5 S+ 15:57 0:00 GREP - -Color = Node Otomatis
# Bunuh proses simpul lagi
~ Bunuh -9 18316
~ ps -acaux | grep node
Conan 18336 0.0 0.0 13584 956 poin/5 S+ 15:58 0:00 GREP - -Color = Node Otomatis
Kami mencoba membunuh monitor selamanya. Program monitor tidak dimulai kembali secara otomatis. Setelah membunuh proses node, simpul tidak akan restart secara otomatis.
2). Dalam aplikasi, simulasikan keluar pengecualian
Modifikasi File: App.js
Salinan kode adalah sebagai berikut:
~ vi app.js
// ..
http.createServer (app) .listen (app.get ('port'), function () {
console.log (tanggal baru ());
console.log ('Express Server Listening di port' + app.get ('port'));
});
setTimeout (function () {
console.log (tanggal baru ());
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
}, 10*1000);
Mulailah dengan perintah node
Salin kode sebagai berikut: ~ node app.js
Kamis 26 Sep 2013 16:08:44 GMT+0800 (CST)
Mendengarkan server ekspres di port 3000
Kamis 26 Sep 2013 16:08:54 GMT+0800 (CST)
/home/conan/nodeejs/nodejs-forever/app.js:41
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
^
Kesalahan: Aplikasi adalah kesalahan dari dalam!
di null._onTimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
di timer.listonTimeout [sebagai ontimeout] (timers.js: 110: 15)
Setelah 10 detik, proses node digantung karena kesalahan internal.
Mulailah dengan perintah selamanya
Salinan kode adalah sebagai berikut:
~ log mkdir
~ CHMOD 777 -R LOG
~ selamanya -p. -l ./logs/access.log -e ./logs/error.log start app.js
# Periksa log kesalahan
~ Log Cat/Access.Log ls
Kamis 26 Sep 2013 16:15:02 GMT+0800 (CST)
Mendengarkan server ekspres di port 3000
Kamis 26 Sep 2013 16:15:12 GMT+0800 (CST)
/home/conan/nodeejs/nodejs-forever/app.js:41
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
^
Kesalahan: Aplikasi adalah kesalahan dari dalam!
di null._onTimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
di timer.listonTimeout [sebagai ontimeout] (timers.js: 110: 15)
Kesalahan: Skrip yang terdeteksi selamanya keluar dengan kode: 8
Kesalahan: Forever Restart Script untuk 1 waktu
Kamis 26 Sep 2013 16:15:13 GMT+0800 (CST)
Mendengarkan server ekspres di port 3000
Kamis 26 Sep 2013 16:15:23 GMT+0800 (CST)
/home/conan/nodeejs/nodejs-forever/app.js:41
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
^
Kesalahan: Aplikasi adalah kesalahan dari dalam!
di null._onTimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
di timer.listonTimeout [sebagai ontimeout] (timers.js: 110: 15)
Kesalahan: Skrip yang terdeteksi selamanya keluar dengan kode: 8
Kesalahan: Forever Restart Script untuk 2 waktu
Kamis 26 Sep 2013 16:15:23 GMT+0800 (CST)
Mendengarkan server ekspres di port 3000
Kamis 26 Sep 2013 16:15:33 GMT+0800 (CST)
/home/conan/nodeejs/nodejs-forever/app.js:41
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
^
Kesalahan: Aplikasi adalah kesalahan dari dalam!
di null._onTimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
di timer.listonTimeout [sebagai ontimeout] (timers.js: 110: 15)
Kesalahan: Skrip yang terdeteksi selamanya keluar dengan kode: 8
Kesalahan: Forever Restart Script untuk 3 Waktu
Kamis 26 Sep 2013 16:15:33 GMT+0800 (CST)
Mendengarkan server ekspres di port 3000
Kamis 26 Sep 2013 16:15:43 GMT+0800 (CST)
/home/conan/nodeejs/nodejs-forever/app.js:41
melempar kesalahan baru ('aplikasi adalah kesalahan dari dalam!');
^
Kesalahan: Aplikasi adalah kesalahan dari dalam!
di null._onTimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
di timer.listonTimeout [sebagai ontimeout] (timers.js: 110: 15)
Kesalahan: Skrip yang terdeteksi selamanya keluar dengan kode: 8
Kesalahan: Forever Restart Script untuk 4 waktu
Kami menemukan bahwa setiap 10 detik, simpul menutup dan kemudian dimulai kembali selamanya! Lai
Melalui daftar, kita juga dapat melihat bahwa PID telah berubah beberapa kali.
Salinan kode adalah sebagai berikut:
~ Daftar selamanya
Info: Proses Selamanya Berjalan
Data: UID Command Script Forever PID Logfile Uptime
Data: [0] SMTT/USR/LOCAL/BIN/NODE APP.JS 18444 18579 LOG/ACCESS.LOG 0: 0: 0: 7.211
~ Daftar selamanya
Info: Proses Selamanya Berjalan
Data: UID Command Script Forever PID Logfile Uptime
Data: [0] SMTT/USR/LOCAL/BIN/NODE APP.JS 18444 18579 LOG/ACCESS.LOG 0: 0: 0: 8.921
~ Daftar selamanya
Info: Proses Selamanya Berjalan
Data: UID Command Script Forever PID Logfile Uptime
Data: [0] SMTT/USR/LOCAL/BIN/NODE APP.JS 18444 18604 LOG/ACCESS.LOG 0: 0: 0: 0.177
~ Daftar selamanya
Info: Proses Selamanya Berjalan
Data: UID Command Script Forever PID Logfile Uptime
Data: [0] SMTT/USR/LOCAL/BIN/NODE APP.JS 18444 18604 LOG/ACCESS.LOG 0: 0: 0: 2.206
Dengan cara ini, selamanya membantu kami menyelesaikan beberapa fungsi manajemen server yang penting: "perintah start/stop sederhana", "mendukung penyebaran panas", "unduh restart", dan "antarmuka dan log pemantauan".
Dibandingkan dengan manajemen pemula, langkah-langkah untuk mengkonfigurasi skrip (/etc/init/nodejs-xx.conf) dihilangkan. Fungsi lain perlu digunakan selangkah lebih dekat untuk diketahui.
7. Konfigurasi Startup Lingkungan Pengembangan dan Lingkungan Produksi
Lingkungan pengembangan
Salinan kode adalah sebagai berikut:
~ CD/HOME/CONAN/NODEJS/NODEJS-FORever/
~ selamanya -p. -l ./logs/access.log -e ./logs/error.log -a -w start app.js
Lingkungan produksi
Salin kode sebagai berikut: ~ Ekspor Log =/Var/Log/NodeJs/Proyek
~ Ekspor PID =/var/log/nodeJS/Project/Forever.pid
~ Ekspor app_path =/home/conan/nodejs/nodejs-forever
~ Ekspor Aplikasi = $ app_path/app.js
~ selamanya -p $ app_path -l $ log/access.log -e $ log/error.log -o $ log/out.log -a --pidfile $ pid start $ app