我寫了一個Node.js的應用程序,我希望把它在我們的生產機器的一個運行。這似乎是一個相當普遍的要求,但我找不到一個合適的解決方案。是否沒有建立生產Node.js應用程序的解決方案?部署生產的Node.js服務器
該應用程序很簡單(< 100 LOC),但需要非常高效,可靠並且可以連續運行多年而無需重新啓動。它將在大型網站上運行,每秒連接數十個。 (該應用程序無法用作網絡服務器,它只有一個JSON API)
這裏是我考慮的方法,但我仍然不能確定。
使用框架(如快遞)
由於該應用程序需要高性能且非常簡單,因此添加框架形式的膨脹是我想避免的。
開始與nohup
這裏的主要問題的服務器是異常處理,我們(顯然)不希望整個服務器,因爲異常的崩潰。據我瞭解,環繞整個應用程序在try {} catch {}
循環將沒有幫助,因爲JavaScript解釋器是一個例外後留在不可預知的狀態。那是對的嗎?
使用像永遠
我永遠裝在我們的FreeBSD機器,這是非常錯誤。它最終產生了無法從Forever中殺死的無盡進程。我必須運行kill -9
才能讓我的機器恢復正常,並且我對Forever上運行的生產應用程序沒有太大的信心。似乎Upstart(類似的工具,但更通用)不能在FreeBSD上運行。
託管解決方案(例如Heroku的,Rackspace公司,亞馬遜EC2等)
這可能是最簡單的解決方案,但我們已經爲我們的Web服務器的其餘部分嚴重的硬件。出於財務考慮,這是沒有意義的。
當然必須有一些既定的解決方案呢?我錯過了什麼嗎?
暴發戶是在FreeBSD sysvinit的替代品。 – chovy
2014年閱讀這份SO的人羣。 「永遠」不應該被打折,因爲在這種情況下,它在兩年多的時間裏失敗了很多次。過去幾個月我已經成功運行它。 –
對於2015年閱讀這份SO的人羣。只要使用[PM2(http://www.nikola-breznjak.com/blog/nodejs/using-pm2-to-run-your-node-js-apps-like-a-pro/),而不是永遠。 – Nikola