2014-06-24 20 views
8

İlk Node.js uygulamasını OpenShift'in ücretsiz katmanına dağıttım ve harika çalışıyor.Forever.js'i OpenShift'de kullanmak gerekli mi?

OpenShift, düğüm uygulandığında benim düğüm uygulamamı otomatik olarak yeniden başlatır mı yoksa Forever.js'yi mi kurmak zorundayım? Kurmayı denedim ve işe yaramayacaktı. node_modules/forever/bin/forever start app.js çalıştırdıktan sonra bu çıktıyı aldım (forever yerel kopyasıyla, dir app-root/repo edildi çalışma):

warn: --minUptime not set. Defaulting to: 1000ms 
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms 
info: Forever processing file: app.js 

fs.js:240 
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 
       ^
Error: ENOENT, no such file or directory '/var/lib/openshift/5397416f5004466c0b000080/.forever/VQMF.log' 
    at Object.openSync (fs.js:240:18) 
    at Object.startDaemon (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:406:14) 
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:258:13 
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:145:5 
    at Object.oncomplete (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:358:11) 

Yani, benim için uygulamanın sağlığını yönetmek OpenShift gelmez

, yoksa çalışma Sonsuza almak gerekir? Eğer öyleyse, aldığım hatayla ilgili herhangi bir fikir var mı?

+0

Mükemmel soru, ben (aynı zamanda uygulamanızı yeniden olan) Modülünden üzerinde hareket bilmemiz gerekir tam olarak ne. Modül ayrıca bir e-posta gönderme seçeneğine de sahiptir, OpenShift'in bunu yapıp yapamayacağını bilen var mı? (Node-süpervizörün bu seçeneği var gibi görünmüyor) – user949300

cevap

6

Evet, OpenShift, Düğüm uygulamanız çöktüğünde otomatik olarak yeniden başlatılıyor. OpenShift forever.js'yi kullanmaz, ancak node-supervisor kullanır. Var olmayan bir şey isteyerek test edebilirsiniz. Hızlı bir şekilde düzeltin, çünkü günlük, uygulamayı hızlı bir şekilde yeniden başlatarak büyüyebilir.

DEBUG: Running node-supervisor with 
DEBUG: program 'server.js' 
DEBUG: --watch '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch' 
DEBUG: --ignore 'undefined' 
DEBUG: --extensions 'node|js|coffee' 
DEBUG: --exec 'node' 
DEBUG: Starting child process with 'node server.js' 
DEBUG: Watching directory '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch' for changes. 
+0

İlginç, bu oturum nerede? Ve bunun için 'main' veya 'scripts.start' kullanıyor mu? – Jeff

+0

ssh, uygulamanızın altındaki openshift sitesinden komut dizesini kullanarak sisteme ssh. Sonra cd app-root/logs, tüm günlükler orada. Uygulamayı başlatmadan önce başlatılan/yüklenen/kurulum yapan pek çok şey olduğu için dağıtmak için komut dosyası kullandıklarıma eminim ... Hangi komut dosyasının olduğunu görmek için gerçekten kazmadım. – Ben

+0

Harika, teşekkürler! – Jeff

5

Halen OpenShift varsayılan davranışı, izle başlayın ve nodejs uygulamaları yeniden başlatmak için supervisor kullanarak içerir: Burada düğüm-danışmanı çalışıyor olduğunu gösterir OpenShift üzerinde nodejs.log günlük olduğunu. Uygulamanızın bir main girişi (containing the name of your server script) ile geçerli bir package.json dosyası içerir

  1. , sonra OpenShift başlatmak için supervisor kullanarak uygulamanızı başlatır: Burada

    nodejs için çeşitli init seçeneklerine hızlı bir taslak olduğunu bu senaryo
  2. Uygulamanız force_npm_deploy marker file (.openshift/markers/use_npm boş bir dosya) içeriyorsa - OpenShift sadece npm start'u çalıştıracaktır. Bu, package.json dosyanızın scripts.start öğesinde tanımlanmış olan her şeyi çalıştırır.
  3. Diğer her şey başarısız olursa, OpenShift supervisor (bir geri dönüş seçeneği olarak) kullanarak server.js'u çalıştırmayı deneyecektir.

Bazı ek notlar burada mevcuttur: https://www.openshift.com/blogs/10-reasons-openshift-is-the-best-place-to-host-your-nodejs-app#npm

+0

Teşekkürler, bu da yardımcı oldu. :) – Jeff