SORU
18 HAZİRAN 2012, PAZARTESİ


Kolay kurulum ve güncelleme için Node.js Kur

Şu anda, web (Apache TYPO3 altında) bir düğüm tarafından desteklenen bir müşteri için geliştiriyoruz./soket js.içerik için gerçek zamanlı güncellemeler sağlar io uygulama CMS görev yaptı.

Bu 'mükemmel bir kur' biraz zaman dağıtım teknikleri araştırma geçirdim. bundan çok zaman gitmek için en iyi uygulamalar yok node.js projemiz olarak

Birkaç soru da benim için iyi bir kurulum elde etmek için kalır:

  1. Dağıtmak . müşteri için kolaydır . Bu çok önemli çünkü bizim web sitesi olacak entegre kendi 'canlı' TYPO3 kurulum servis olan bir bolluk ve web siteleri üzerinde çalışan sunucularının, değil mi yönetilen Müşteri tarafından ama başka bir (merkezi) Örgütü, destek aramaları ve sunucu değişiklikleri yavaş bir süreç.

  2. Güncellemek için kolay olmalıdır.İsteyen yeniden söz ve sunucu değişiklikleri yapma yavaş bir süreç olduğu için, bu yüzden, düz ekran TV ve düğüm yükleme canlı olan yükleme için git kullanarak itildiği değişiklikler aldığında / güncelleştirme için yeniden başlatma gerekir.

Dağıtım

general consensus düğüm uygulamaları çalışmasını sağlamak dağıtma gelince forever kullanmak gibi görünüyor. forever npm install forever -g (küresel) tarafından yüklendiğinde gayet iyi iş gibi görünüyor test ettim. Bu gerekli dış yardım için küresel yükle, canlı ortam olsa da, bu yüzden tercih ederdim gerek çalışan uygulama node_modules dizin, ama fırsatım olmadı oluşturmak sağlam bir sarıcı.

Ayrıca, forever gayet iyi çalışıyor, ama el ile başlatılması gerekiyor. Server açılışta yanmaya başladı ve çalışmasını sağlamak için en iyi yaklaşım ne olurdu?

  • init.d basit bir komut?
  • Yazılı bir bekçi sarıcı?
  • forever durumunu kontrol eden TYPO3 zamanlayıcı bir görev?

Hızlı bir gelişme / güncelleme Yeniden başlatın

Şu anda hala proje geliştirme aşamasında ve node.js değişiklikleri el ile uygulaması I node forever yeniden ben her zaman içindeyiz. Bu çalışır, ama çok idealdir. Dosya değişikliklerini denetlemek ve tespit edilen değişiklikler üzerine node gibi yeniden birkaç küçük npm modülleri vardır:

Herkes bu herhangi bir deneyimi var mı?

Neden sadece Küme kullanmıyorsun? güncelleme:

Cluster module reload mekanizması ile benzer işlevsellik sağlar, ancak doesn't work with Node 0.5 . Yerine core Cluster module (Node 0.6 ) bütün bu özellikler yok ama sadece kümeleme sağlar. Sırayla 39**. En azından not without using Redis müşteri için başka bir servis üniteleri zorlayamayız çünkü bizim için bir sorundur.

--

Belli ki ben bulmaya çalışıyorum en sağlam çözüm bir araya getiren bir güncelleştirme başlatılamıyor forever önce teslim projesi için müşteri ve ben çok umut herkes üretilen kanıtlanmış bir kombinasyon teknikleri.

CEVAP
22 HAZİRAN 2012, Cuma


Birleştirerek tüm bilgi topladı (Büyük bir teşekkür için Julian Knight için fikirler ve yöntemler test geçen hafta içinde, karar verdim yerleşmek için dağıtım çözümü aşağıda açıklanan (düşündüm iyi paylaşmak için yardım diğerleri ile karşılaştırılabilir sorular):

Script hataları otomatik olarak yeniden başlatılıyorvedeğişik bir senaryo üzerinde otomatik yeniden ayrıca node.js bir betik içinden kökenli bir komut izle, sürece Sonsuza kadar içerir forever tarafından işlenir.

Bunu yapmak için, biz aslında çalıştırmak istiyorum app.js komut dosyası başlatmak için server.js ekledim:

server.js

var forever = require('forever'),
    child = new(forever.Monitor)('app.js', {
        'silent': false,
        'pidFile': 'pids/app.pid',
        'watch': true,
        'watchDirectory': '.',      // Top-level directory to watch from.
        'watchIgnoreDotFiles': true, // whether to ignore dot files
        'watchIgnorePatterns': [], // array of glob patterns to ignore, merged with contents of watchDirectory   '/.foreverignore' file
        'logFile': 'logs/forever.log', // Path to log output from forever process (when daemonized)
        'outFile': 'logs/forever.out', // Path to log output from child stdout
        'errFile': 'logs/forever.err'
    });
child.start();
forever.startServer(child);

Bu değişiklikler için uygulama dizinindeki tüm dosyaları izler ve komut dosyası foreverbir değişiklik en kısa sürede yeniden çalıştırıyor. Günlükleri ve pidfile uygulamanın alt dizinleri vardır çünkü, O dosya saatin göz ardı var yoksa script döngü yeniden başlar

.foreverignore

pids/**
logs/**

Bu sistem önyükleme başlangıç yapmak ve bizi kolayca servis start node-appstop node-app kullanarak kontrol etmenize olanak tanır Ubuntu's Upstartkullanıyoruz. İki örnek (this this) oldukça iyi iş yapan tek bir kombine ettim:

/etc/init/-app düğüm.conf

# This is an upstart (http://upstart.ubuntu.com/) script
# to run the node.js server on system boot and make it
# manageable with commands such as
# 'start node-app' and 'stop node-app'
#
# This script is to be placed in /etc/init to work with upstart.
#
# Internally the 'initctl' command is used to manage:
# initctl help
# initctl status node-app
# initctl reload node-app
# initctl start node-app

description "node.js forever server for node-app"
author      "Remco Overdijk <remco@maxserv.nl>"
version "1.0"

expect fork

# used to be: start on startup
# until we found some mounts weren't ready yet while booting:

start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

env HOME=/home/user/node-app-dir

script
    # Not sure why $HOME is needed, but we found that it is:
    export HOME=$HOME
    chdir $HOME
    exec /usr/local/bin/node server.js > logs/node.log &
end script

#post-start script
#   # Optionally put a script here that will notifiy you node has (re)started
#   # /root/bin/hoptoad.sh "node.js has started!"
#end script

Kevin wisely mentions in his article akılsızca kök düğüm olarak çalıştırmak için, yeni sunucuları için hareket ettiğimizde exec sudo -u www-data /usr/local/bin/node gelecek hafta değiştiririz o zaman.

Yani, forever otomatik olarak kilitleniyor ve dosya değişiklikleri için upstart ve gözlemciler tarafından, tüm kurulum istediğimiz kadar çalışır tutmak başlattı alır node server.js tarafından başlatılır.

Bu kimse yardımcı olur umarım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009
  • Perihelion

    Perihelion

    23 NİSAN 2008