Bu eski bir soru, ancak Google'da üst sıralarda yer alıyor. Neredeyse en yüksek oy alan cevaplara inanamıyorum, çünkü bir ekran oturumunda, &
hatta ile veyanohup
bayrağıyla - hepsi ile - sadece geçici çözümlerdir.
Özellikle amatör bir çözüm olarak düşünülmesi gereken ekran / tmux çözümü. Screen ve Tmux, süreçleri çalışır durumda tutmak için değil, çoklayıcı terminal oturumları içindir. Sunucunuzda bir komut dosyası çalıştırdığınızda ve bağlantıyı kesmek istediğinizde sorun yoktur. Ancak bir node.js sunucusu için, işleminizin bir terminal oturumuna eklenmesini istemezsiniz. Bu çok kırılgan. İşleri yürütmek için süreci arka plana ayırmanız gerekir!
Bunu yapmak için birçok iyi araç var.
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
PM2 lehine gördüğüm büyük bir avantaj, yeniden başlatmalar arasında işlemin devam etmesini sağlamak için sistem başlatma komut dosyasını oluşturabilmesidir:
$ pm2 startup [platform]
Nerede platform
olabilir 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
Başlangıç komut dosyaları :
Bir init betiği yazma konusunda ayrıntıya girmiyorum, çünkü bu konuda uzman değilim ve bu cevap için çok uzun olurdu, ancak temel olarak OS olayları tarafından tetiklenen basit kabuk komut dosyalarıdır. Bununla ilgili daha fazla bilgiyi buradan edinebilirsiniz
Liman işçisi :
Sadece bir Docker kapta sunucu çalıştırmak -d
seçeneği ve, voila , bir daemonized node.js sunucu var!
Örnek bir Dockerfile örneği (node.js resmi kılavuzundan ):
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" ]
Ardından resminizi oluşturun ve kapsayıcınızı çalıştırın:
$ docker build -t <your username>/node-web-app .
$ docker run -p 49160:8080 -d <your username>/node-web-app
Umarım bu kişinin bu sayfaya inmesine yardımcı olur. Her zaman iş için uygun aleti kullanın. Size çok fazla baş ağrısı ve saatlerce kurtaracak!
exit
. Macun penceresini kapattığımda başarısız oluyor.