Herhangi bir node.js uzmanı, makinem önyüklendiğinde bir sunucuyu otomatik olarak başlatmak için node JS'yi nasıl yapılandırabileceğimi söyleyebilir mi? Windows'tayım
Herhangi bir node.js uzmanı, makinem önyüklendiğinde bir sunucuyu otomatik olarak başlatmak için node JS'yi nasıl yapılandırabileceğimi söyleyebilir mi? Windows'tayım
Yanıtlar:
Bu, node.js'de yapılandırılacak bir şey değildir, bu tamamen işletim sistemi sorumluluğundadır (sizin durumunuzda Windows). Bunu başarmanın en güvenilir yolu bir Windows Hizmetidir.
Bir Windows hizmeti olarak bir düğüm komut dosyası yükleyen bu süper kolay modül var, buna düğüm pencereleri ( npm , github , dokümantasyon ) denir . Daha önce kullandım ve bir cazibe gibi çalıştım.
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
Bu şeyi o kadar kullanışlı buldum ki etrafına kullanımı daha kolay bir sarmalayıcı ( npm , github ) yaptım .
Kurmak:
npm install -g qckwinsvc
Hizmetinizin kurulumu:
> 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
Hizmetinizin kaldırılması:
> qckwinsvc --uninstall
prompt: Service name: [name of your service]
prompt: Node script path: [path of your node script]
Service stopped
Service uninstalled
npm install qckwinsvc -g
Linux, macOS veya Windows pm2 kullanıyorsanız arkadaşınızdır. Kümeleri çok iyi idare eden bir süreç yöneticisi.
Siz kurun:
npm install -g pm2
Örneğin 3 işlemden oluşan bir küme başlatın:
pm2 start app.js -i 3
Ve pm2 yapmak onları açılışta başlatır:
pm2 startup
Bir API'ye, hatta bir monitör arayüzüne sahiptir :

GitHub'a gidin ve talimatları okuyun . Kullanımı kolay ve çok kullanışlıdır. Sonsuza dek en iyi şey .
pm2 startupbu platform parametrelerinden birine ihtiyaç duyduğunu söylemek istiyorum : <ubuntu|centos|gentoo|systemd>yani:
$ 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
Yanılmıyorsam, uygulamanızı komut satırını ve dolayısıyla bir toplu iş dosyasını kullanarak başlatabilirsiniz. Bu durumda, Windows oturum açma ile başlatmak çok zor bir iş değildir.
Sadece aşağıdaki içeriğe sahip bir toplu iş dosyası oluşturursunuz:
node C:\myapp.js
ve .bat uzantısıyla kaydedin. Burada myapp.js, bu örnekte C: sürücüsünde bulunan uygulamanızdır (yolu belirtin).
Artık toplu iş dosyasını C: \ Users \% username% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup konumunda bulunan başlangıç klasörünüze atabilirsiniz.
Günlük çalışma kutusunda% appdata% kullanarak açın ve> Dolaşım> Microsoft> Windows> Başlat Menüsü> Programlar> Başlangıç öğesini bulun
Toplu iş dosyası oturum açma sırasında yürütülecek ve cmd'den düğüm uygulamanızı başlatacaktır.
Bu, Windows Görev Zamanlayıcı ile manuel olarak kolayca yapılabilir.
Ardından, aşağıdakileri içeren bir toplu iş dosyası oluşturun:
cd C:\path\to\project\root
call C:\Users\Username\AppData\Roaming\npm\forever.cmd start server.js
exit 0
Son olarak, oturum açtığınızda çalışan zamanlanmış bir görev oluşturun. Bu görev, toplu iş dosyasını çağırmalıdır.
Node.js uygulamanızı bir Windows hizmeti olarak kurmanızı ve ardından hizmeti başlangıçta çalışacak şekilde ayarlamanızı öneririm. Bu, Başlangıç klasörüne toplu iş dosyaları eklemek veya kaldırmak yerine Windows Hizmetleri ek bileşenini kullanarak başlangıç eylemini kontrol etmeyi biraz daha kolaylaştırmalıdır.
Stackoverflow'daki hizmetle ilgili başka bir soru, birkaç (görünüşte) gerçekten iyi seçenekler sağladı. Check out bir Windows Hizmeti olarak node.js nasıl yüklenir . düğüm pencereleri bana gerçekten umut verici görünüyor. Bir kenara, servis olarak çalışması gereken Java uygulamaları için benzer araçlar kullandım. Hayatımı çok daha kolaylaştırdı. Bu yardımcı olur umarım.
Pm2 kullan başlatmak ve pencereler üzerinde nodejs süreçleri çalıştırmak için.
Pm2'yi başlatmak için görev zamanlayıcının nasıl ayarlanacağına ilişkin bu github tartışmasını okuduğunuzdan emin olun: https://github.com/Unitech/pm2/issues/1079
Windows'ta yerel düğüm sunucusunu veya pm2 sunucusunu otomatik başlatmak için C # ile yazdığım başka bir çözüm .
Yukarıda paylaşılan çözümlere göre bunu başarmanın birden fazla yolu olduğunu biliyorum. Hepsini denemedim, ancak bazı üçüncü taraf hizmetleri, tüm görevlerin arka planda çalıştırıldığı konusunda netlikten yoksun. Bunu, windows toplu iş dosyası olarak belirtilene benzer bir powershell betiği aracılığıyla başardım. Windows Görev Zamanlayıcı'yı kullanarak her dakika çalışacak şekilde planladım. Bu şimdiye kadar oldukça verimli ve şeffaf oldu. Burada sahip olduğum avantaj, yeniden başlatmadan önce süreci açıkça kontrol ediyor olmamdır. Bu, sunucudaki CPU için fazla yüke neden olmaz. Ayrıca dosyayı başlangıç klasörlerine açıkça yerleştirmeniz gerekmez.
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
Doğrudan bu yanıttan kopyalandı :
Bunu otomatikleştirmek istediğiniz herhangi bir dilde bir komut dosyası yazabilir (nodejs kullanarak bile) ve ardından kullanıcının% appdata% \ Microsoft \ Windows \ Start Menu \ Programs \ Startup klasörüne bu komut dosyasına bir kısayol yükleyebilirsiniz.