如何在生產伺服器上部署 Node.js 應用?
01-03
服務端用 Apache 或 Nginx,Node使用了Express框架。如何配置一個生產可用的服務器?
https://github.com/yyx990803/pod 我個人寫的部署工具,以前基於forever,現在基於pm2。在進程管理的基礎上增加直接git push發布更新的功能。在我自己的vps上搭配nginx用著很省心。由於是個人項目,用於生產環境請務必小心,有問題歡迎github上開issue
伺服器推薦用nginx,配置簡單,性能強悍。
nginx可以使用代理訪問後端的Node.js應用伺服器。配置方法:
1)在配置文件http段內容添加後端伺服器:
http { #添加後端伺服器,和nginx負載均衡配置一樣 upstream nodejs { server 127.0.0.1:8080; } ... }2)給應用添加虛擬主機:
server {listen 80;
server_name node.xxxx.com; location / { proxy_pass http://nodejs;#名字和前面的對應,將所有的請求轉發給後端的node } access_log logs/nodejs.access.log main;#如果需要日誌的話 } 推薦將靜態文件如css、js和圖片和應用伺服器分開。 應用啟動的話可以直接node app.js,還可以使用其他守護方式啟動,當進程掛了自動重啟。還可以考慮使用multi-node(https://github.com/kriszyp/multi-node),增強應用的穩定性和性能。forever守護進程,開機啟動配置好,nginx做轉向代理,crontab做好定時備份,監控好了幾個主要node服務的埠,差不多了,我的網站就是這樣跑了好幾年……
multi-node的主進程也就是起的第一個node進程是個單點故障,如果他在處理請求時意外死了,所有node進程就都死了。所以生產環境用cluster更有保障
Goodbye node-forever, hello PM2
快用PM2來輔助部署和運行吧喵~這個守護Docker - Build, Ship, and Run Any App, Anywhere
另外,如果是多APP部署,建議Docker封裝運行,這樣遷移比較方便。前端當然Nginx代理~不過注意連接保持設定,不要讓http://socket.io一類掛掉。Docker + nginx + pm2
基於 shipit 的Node.js 應用部署方案
本文主要介紹如何基於https://github.com/shipitjs/shipit的自動化部署方案,可以支持測試環境、灰度上線、回滾等功能。
想怎麼弄都可以,nginx做proxy吧
有人知道伺服器端的node怎麼用嗎
pm2
node一般會docker pm2node 用 forever 不行嗎? 伺服器前端肯定是nginx , Apache的處理靜態文件的性能實在不如 nginx.
推薦閱讀:
※tomcat 與 nginx,apache的區別是什麼?
※並發的HTTP請求,apache是如何響應的,以及如何調用php文件的?
※用 HHvm 運行 WordPress 是用 Apache 好還是 Nginx 好一點?
※Web 測試 有沒有比Apache Jemeter更好的工具,windows或者macos上的?