title | date |
---|---|
说说如何部署node程序 |
2017/02/21 14:47:11 |
Node作为时下流行的服务端运行时,我们就不得不接触另外一个方面的内容,那就是部署。此文就来说一下node的部署问题。
在开发阶段,我们可以随意部署,直接通过 node xxx.js
就能很方便的启动项目。
这种方式有一个弊端,每次代码变更之后,我们需要手动去重启。
这个时候,我们可以借助一些第三方工具来实现监控代码变更。
如: gulp-develop-server、nodeman、node-supervisor等等。
既然开发时,可以用 node xxx.js
,那上线时也一样。妥妥的。
弊端:会启动一个黑窗口,不能关闭,登录不能被注销
在Windows下,通过 start /b node xxx.js
,让程序后台运行。
在Linux下,通过 node xxx.js &
或者 nohup node xxx.js > xxx.log &
来实现后台运行。
该方式,避免了阻塞当前控制台,但是其他弊端与2.1一致。
Node社区中,有比较多进程管理工具。如 forever , pm2, strongloop 等等。
我这里推荐 pm2
,功能强大,操作简单,监控,自动重启,多进程都能支持。
以下以 pm2
为例,演示一下部署方式:
通过 npm install pm2 -g
安装 pm2
通过 pm2 start xxx.js
启动程序
通过 pm2 stop|restart|delete
来停止,重启,删除程序。
通过 pm2 list
可以查看部署的程序。
更多操作,请参考:http://pm2.keymetrics.io/
这种部署方式,还有一个问题,服务器重启后,无法自动启动。
在Linux上,通过 pm2 startup [platform]
就能默认生成一个开机启动项。
如果是Windows,我们可以通过 pm2-windows-service 或者是 pm2-windows-startup 来把 pm2
做成Windows服务。
了解更多:http://pm2.keymetrics.io/docs/usage/startup/
借助Docker提供的独立环境,以上方式均可以在docker中实现,而且就算直接用 node xxx.js
来启动应用,在docker中也是没问题的。
自动开机启动,则成了docker的问题,而不是部署程序的问题。