Dapatkah pakar node.js memberi tahu saya bagaimana saya dapat mengonfigurasi node JS untuk memulai otomatis server saat mesin saya boot? Saya menggunakan Windows
1) Pertanyaan terakhir Anda adalah untuk Winblows, jawabannya akan sangat berbeda tergantung pada platform; 2) jika di Linux, hal termudah mungkin adalah menggunakan manajer proses distro Anda (sysvinit, pemula, systemd)
TC1
Sayangnya di Winblows, diedit untuk mencerminkan ini
Bachalo
2
Lalu bagaimana pertanyaan ini berbeda dari pertanyaan Anda yang lain?
hexacyanide
1
Dia tidak senang dengan satu-satunya jawaban pada pertanyaan terakhir, jadi dia menanyakannya kembali dengan hadiah yang dilampirkan.
Nahn
Jawaban:
172
Ini sama sekali bukan sesuatu untuk dikonfigurasi di node.js, ini murni tanggung jawab OS (Windows dalam kasus Anda). Cara paling andal untuk mencapai ini adalah melalui Layanan Windows.
Ada modul super mudah yang menginstal skrip node sebagai layanan windows, itu disebut node-windows ( npm , github , dokumentasi ). Saya telah menggunakan sebelumnya dan bekerja seperti pesona.
var Service = require('node-windows').Service;
// Create a new service objectvar svc = new Service({
name:'Hello World',
description: 'The nodejs.org example web server.',
script: 'C:\\path\\to\\helloworld.js'
});
// Listen for the "install" event, which indicates the// process is available as a service.
svc.on('install',function(){
svc.start();
});
svc.install();
ps
Saya menemukan hal itu sangat berguna sehingga saya membuat pembungkus yang lebih mudah digunakan di sekitarnya ( npm , github ).
Memasangnya:
npm install -g qckwinsvc
Menginstal layanan Anda:
> qckwinsvc
prompt: Service name: [name for your service]
prompt: Service description: [description for it]
prompt: Node script path: [path of your node script]
Service installed
Menghapus instalan layanan Anda:
> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
Saya mendapat kesalahan, tetapi berhasil dengannpm install qckwinsvc -g
Adam Gerthel
1
"qckwinsvc" itu luar biasa. Terima kasih atas tipnya.
NLV
1
Hmm, bagaimana cara men-debug aplikasi saya tanpa perintah? Saya tahu node-inspector dapat membantu, tetapi debugging dengan CMD tampaknya lebih intuitif.
adi518
2
Saya mencoba menginstal aplikasi node express sebagai layanan, dan itu berjalan (saya mendapatkan output dari panggilan console.log di file * .out.log), tetapi ketika saya mencoba mendapatkan respons dari server melalui browser web saya , Saya baru saja mendapatkan kembali 404.
sanderd17
1
Dengan qckwinsvc saya mendapat pesan bahwa layanan saya telah diinstal dan dimulai, tetapi menggunakan services.msc saya tidak melihatnya. Juga layanan saya menulis ke log saat startup, tetapi log tidak dibuat.
Gerry
91
Jika Anda menggunakan Linux, macOS atau Windows pm2 adalah teman Anda. Ini adalah manajer proses yang menangani cluster dengan sangat baik.
Pak, jawaban ini layak mendapat lebih banyak suara positif. Terima kasih. Juga saya ingin mengatakan bahwa pm2 startupmembutuhkan salah satu parameter platform ini <ubuntu|centos|gentoo|systemd>
:,
3
Parameter @Deerloper tidak diperlukan. Dari halaman resmi mereka: $ pm2 startup # auto-detect platform$ pm2 startup [platform] # render startup-script for a specific platform, the [platform] could be one of: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
vorg
1
Ini luar biasa dan pantas menjadi jawaban teratas serta mendapatkan lebih banyak suara. Terima kasih untuk ini!
ILikeTurtles
1
@baptx Jika Anda setuju dengan systemd UX, daya tarik utama dari pm2 adalah yang lebih portabel: distro berbasis non-systemd, macOS dan Windows.
durum
32
Jika saya tidak salah, Anda dapat memulai aplikasi Anda menggunakan baris perintah dan dengan demikian juga menggunakan file batch. Dalam hal ini, bukan tugas yang sulit untuk memulainya dengan login Windows.
Anda baru saja membuat file batch dengan konten berikut:
node C:\myapp.js
dan simpan dengan ekstensi .bat. Di sini myapp.js adalah aplikasi Anda, yang dalam contoh ini terletak di drive C: (spcify the path).
Sekarang Anda tinggal membuang file batch di folder startup Anda yang terletak di C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup
Buka saja menggunakan% appdata% di kotak run dailog dan cari> Roaming> Microsoft> Windows> Start Menu> Program> Startup
File batch akan dieksekusi pada saat login dan memulai aplikasi node Anda dari cmd.
Ini berhasil, tetapi begitulah cara orang miskin itu. Jawaban dari talles di bawah ini lebih baik. Instal sebagai layanan.
MindJuice
7
@MindJuice Saya setuju, meskipun itu hanya jalan keluar yang mudah jadi saya pikir itu layak untuk disebutkan.
Chetan Bhasin
11
Aplikasi saya perlu berjalan di Linux dan Windows, jadi solusi ini berfungsi lebih baik untuk saya karena tidak mengharuskan saya memerlukan paket khusus Windows di aplikasi saya. Hanya karena solusinya sederhana tidak membuatnya menjadi buruk.
Ryan Higgins
Sebenarnya, ini hanya berfungsi jika Anda masuk ke mesin. Tapi, untuk penskalaan / tujuan CI (produksi env), ini tidak berfungsi.
João Bruno Abou Hatem de Liz
4
Ini dapat dengan mudah dilakukan secara manual dengan Penjadwal Tugas Windows.
Saya akan merekomendasikan menginstal aplikasi node.js Anda sebagai layanan Windows, dan kemudian mengatur layanan untuk dijalankan saat startup. Itu seharusnya membuatnya sedikit lebih mudah untuk mengontrol tindakan startup dengan menggunakan snapin Layanan Windows daripada harus menambah atau menghapus file batch di folder Startup.
Pertanyaan terkait layanan lainnya di Stackoverflow menyediakan beberapa opsi (apprently) yang sangat bagus. Lihat Cara menginstal node.js sebagai Layanan Windows . node-windows terlihat sangat menjanjikan bagi saya. Selain itu, saya menggunakan alat serupa untuk aplikasi Java yang perlu dijalankan sebagai layanan. Itu membuat hidup saya jauh lebih mudah. Semoga ini membantu.
Saya tahu ada banyak cara untuk mencapai ini sesuai solusi yang dibagikan di atas. Saya belum mencoba semuanya tetapi beberapa layanan pihak ketiga kurang jelas tentang apa saja tugas yang dijalankan di latar belakang. Saya telah mencapai ini melalui skrip PowerShell yang mirip dengan yang disebutkan sebagai file batch windows. Saya telah menjadwalkannya menggunakan Penjadwal Tugas Windows untuk berjalan setiap menit. Sejauh ini sudah cukup efisien dan transparan. Keuntungan yang saya miliki di sini adalah saya memeriksa proses secara eksplisit sebelum memulainya lagi. Ini tidak akan menyebabkan banyak overhead ke CPU di server. Anda juga tidak perlu secara eksplisit menempatkan file tersebut ke dalam folder startup.
Anda dapat menulis skrip dalam bahasa apa pun yang Anda inginkan untuk mengotomatiskan ini (bahkan menggunakan nodejs) dan kemudian menginstal pintasan ke skrip itu di folder% appdata% \ Microsoft \ Windows \ Start Menu \ Programs \ Startup pengguna
Jawaban:
Ini sama sekali bukan sesuatu untuk dikonfigurasi di node.js, ini murni tanggung jawab OS (Windows dalam kasus Anda). Cara paling andal untuk mencapai ini adalah melalui Layanan Windows.
Ada modul super mudah yang menginstal skrip node sebagai layanan windows, itu disebut node-windows ( npm , github , dokumentasi ). Saya telah menggunakan sebelumnya dan bekerja seperti pesona.
var Service = require('node-windows').Service; // Create a new service object var svc = new Service({ name:'Hello World', description: 'The nodejs.org example web server.', script: 'C:\\path\\to\\helloworld.js' }); // Listen for the "install" event, which indicates the // process is available as a service. svc.on('install',function(){ svc.start(); }); svc.install();
ps
Saya menemukan hal itu sangat berguna sehingga saya membuat pembungkus yang lebih mudah digunakan di sekitarnya ( npm , github ).
Memasangnya:
Menginstal layanan Anda:
> qckwinsvc prompt: Service name: [name for your service] prompt: Service description: [description for it] prompt: Node script path: [path of your node script] Service installed
Menghapus instalan layanan Anda:
> qckwinsvc --uninstall prompt: Service name: [name of your service] prompt: Node script path: [path of your node script] Service stopped Service uninstalled
sumber
npm install qckwinsvc -g
Jika Anda menggunakan Linux, macOS atau Windows pm2 adalah teman Anda. Ini adalah manajer proses yang menangani cluster dengan sangat baik.
Anda menginstalnya:
Mulai sekelompok, misalnya, 3 proses:
pm2 start app.js -i 3
Dan buat pm2 memulainya saat boot:
Ini memiliki API, bahkan antarmuka monitor :
Buka github dan baca instruksinya . Mudah digunakan dan sangat praktis. Hal terbaik sejak selamanya .
sumber
pm2 startup
membutuhkan salah satu parameter platform ini<ubuntu|centos|gentoo|systemd>
$ pm2 startup # auto-detect platform
$ pm2 startup [platform] # render startup-script for a specific platform, the [platform] could be one of: # ubuntu|centos|redhat|gentoo|systemd|darwin|amazon
Jika saya tidak salah, Anda dapat memulai aplikasi Anda menggunakan baris perintah dan dengan demikian juga menggunakan file batch. Dalam hal ini, bukan tugas yang sulit untuk memulainya dengan login Windows.
Anda baru saja membuat file batch dengan konten berikut:
dan simpan dengan ekstensi .bat. Di sini myapp.js adalah aplikasi Anda, yang dalam contoh ini terletak di drive C: (spcify the path).
Sekarang Anda tinggal membuang file batch di folder startup Anda yang terletak di C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup
Buka saja menggunakan% appdata% di kotak run dailog dan cari> Roaming> Microsoft> Windows> Start Menu> Program> Startup
File batch akan dieksekusi pada saat login dan memulai aplikasi node Anda dari cmd.
sumber
Ini dapat dengan mudah dilakukan secara manual dengan Penjadwal Tugas Windows.
Kemudian, buat file batch yang berisi berikut ini:
cd C:\path\to\project\root call C:\Users\Username\AppData\Roaming\npm\forever.cmd start server.js exit 0
Terakhir, buat tugas terjadwal yang dijalankan saat Anda logon. Tugas ini harus memanggil file batch.
sumber
Saya akan merekomendasikan menginstal aplikasi node.js Anda sebagai layanan Windows, dan kemudian mengatur layanan untuk dijalankan saat startup. Itu seharusnya membuatnya sedikit lebih mudah untuk mengontrol tindakan startup dengan menggunakan snapin Layanan Windows daripada harus menambah atau menghapus file batch di folder Startup.
Pertanyaan terkait layanan lainnya di Stackoverflow menyediakan beberapa opsi (apprently) yang sangat bagus. Lihat Cara menginstal node.js sebagai Layanan Windows . node-windows terlihat sangat menjanjikan bagi saya. Selain itu, saya menggunakan alat serupa untuk aplikasi Java yang perlu dijalankan sebagai layanan. Itu membuat hidup saya jauh lebih mudah. Semoga ini membantu.
sumber
kamu harus mencoba ini
npm selamanya
https://www.npmjs.com/package/forever
sumber
Gunakan pm2 untuk memulai dan menjalankan proses nodejs Anda di windows.
Pastikan untuk membaca diskusi github ini tentang cara mengatur penjadwal tugas untuk memulai pm2: https://github.com/Unitech/pm2/issues/1079
sumber
Berikut adalah solusi lain yang saya tulis di C # untuk memulai otomatis server node asli atau server pm2 di Windows.
sumber
Saya tahu ada banyak cara untuk mencapai ini sesuai solusi yang dibagikan di atas. Saya belum mencoba semuanya tetapi beberapa layanan pihak ketiga kurang jelas tentang apa saja tugas yang dijalankan di latar belakang. Saya telah mencapai ini melalui skrip PowerShell yang mirip dengan yang disebutkan sebagai file batch windows. Saya telah menjadwalkannya menggunakan Penjadwal Tugas Windows untuk berjalan setiap menit. Sejauh ini sudah cukup efisien dan transparan. Keuntungan yang saya miliki di sini adalah saya memeriksa proses secara eksplisit sebelum memulainya lagi. Ini tidak akan menyebabkan banyak overhead ke CPU di server. Anda juga tidak perlu secara eksplisit menempatkan file tersebut ke dalam folder startup.
function CheckNodeService () { $node = Get-Process node -ErrorAction SilentlyContinue if($node) { echo 'Node Running' } else { echo 'Node not Running' Start-Process "C:\Program Files\nodejs\node.exe" -ArgumentList "app.js" -WorkingDirectory "E:\MyApplication" echo 'Node started' } } CheckNodeService
sumber
Disalin langsung dari jawaban ini :
Anda dapat menulis skrip dalam bahasa apa pun yang Anda inginkan untuk mengotomatiskan ini (bahkan menggunakan nodejs) dan kemudian menginstal pintasan ke skrip itu di folder% appdata% \ Microsoft \ Windows \ Start Menu \ Programs \ Startup pengguna
sumber