无论在开发阶段还是在上线阶段,对进程的管理是大大解决时间和成本的。
node.js server tools
// 1. 安装
// 全局安装
$ yarn global add pm2
# OR
$ npm install pm2 -g
// 局部安装
$ yarn add -D pm2
# OR
$ npm i -D pm2
// 2. 使用
# global
$ pm2 start server/index.js
// 3. 常用指令
$ pm2 start app.js
$ pm2 monit
$ pm2 list
$ pm2 stop
$ pm2 restart
$ pm2 delete
// PM2 配置
// ecosystem.config.js
module.exports = {
apps : [{
name: "app",
script: "./app.js",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}
// pm2 [start|restart|stop|delete] ecosystem.config.js
// 1. 安装
$ yarn global add nodemon
# OR
$ npm i -g nodemon // 全局安装
# global
$ nodemon server/index.js // 启动
// 2. 使用
nodemon ./main.js // 启动node服务
nodemon ./main.js localhost 6677 // 在本地6677端口启动node服务
"start": "ts-node -r tsconfig-paths/register nodemon src/main.ts", // npm run start
// nodemon存在一个非常好功能 延迟重启
nodemon -delay10 main.js
nodemon --delay 2.5 server.js
nodemon --delay 2500ms server.js
// 这类似js函数的函数节流,只是子最后一次更改时间往后延迟时间。避免短时间内多次执行
// nodemon
// Nodemon is a utility that will monitor for any changes in your source and automatically restart your server.
// Nodemon是一个实用程序,它将监视源代码中的任何更改,并自动重新启动服务器。
// nodemon.json
{
"verbose": true,
"ignore": ["*.test.js", "fixtures/*"],
"execMap": {
"rb": "ruby",
"pde": "processing --sketch={{pwd}} --run"
}
}
// package.json
{
"name": "nodemon",
"homepage": "http://nodemon.io",
"...": "... other standard package.json values",
"nodemonConfig": {
"ignore": ["test/*", "docs/*"],
"delay": "2500"
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyiY4Iqp-1621239594990)(/Users/conan_w/Desktop/img-typora/nodemon(computing)].png)
// 1.安装和使用和nodemon差不多
当任何所需文件发生更改时(标准情况下
node-dev
),它将重新启动目标节点进程,但在两次重新启动之间共享Typescript编译过程。
Q1: pm2, nodemon的区别
PM2守护node进程不被停止,发布到线上时使用。
nodemon修改代码自动重启,开发时使用很方便。
Q2:pm2, forever 的区别
Forever 管理多个站点,每个站访问量不大,不需要监控。
pm2 网站访问量比较大,需要完整的监控界面。
总结
nodemon,node-devnode-dev,node-dev 是开发环境用。node-dev和coffeescript兼容最好。
相对的pm2,forever适合用在打包上线的服务进程管理。