目前似乎最常见的线上部署nodejs项目的有forever、pm2这两种。

1、forever管理多个站点,每个站点访问量不大,不需要监控。

2、pm2 网站访问量比较大,需要完整的监控界面。

PM2的主要特性:

  • 内建负载均衡(使用Node cluster 集群模块)
  • 后台运行
  • 0秒停机重载,我理解大概意思是维护升级的时候不需要停机
  • 具有Ubuntu和CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

第一、安装

命令行全局安装pm2

npm install -g pm2

不过用npm安装,最近老是报错,还是建议用cnpm

第一、使用

1、启动node项目,进入node项目目录,在目录下使用pm2 start app.js 或者 pm2 start bin/www

pm2 start app.js

2、停止pm2服务:

pm2 stop app.js

3、列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。

pm2 list

4、监视每个node进程的CPU和内存的使用情况

pm2 monit

5、显示所有进程日志

pm2 logs

6、停止所有进程

pm2 stop all

7、重启所有进程

pm2 restart all

8、0秒停机重载进程 (用于 NETWORKED 进程)

pm2 reload all

9、 停止指定的进程

pm2 stop 0

10、 重启指定的进程

pm2 restart 0

11、 产生 init 脚本 保持进程活着

pm2 startup

12、运行健壮的 computer API endpoint (http://localhost:9615)

pm2 web

13、杀死指定的进程

pm2 delete 0

14、杀死全部进程

pm2 delete all

第三、运行进程的不同方式:

1、根据有效CPU数目启动最大进程数目

pm2 start app.js -i max

2、启动3个进程

pm2 start app.js -i 3

3、用fork模式启动 app.js 而不是使用 cluster

pm2 start app.js -x

4、用fork模式启动 app.js 并且传递参数 (-a 23)

pm2 start app.js -x -- -a 23

5、启动一个进程并把它命名为 serverone

pm2 start app.js --name serverone

6、停止 serverone 进程

pm2 stop serverone

7、启动进程, 在 app.json里设置选项

pm2 start app.json

8、在–之后给 app.js 传递参数

pm2 start app.js -i max -- -a 23

9、启动 并 生成一个配置文件

pm2 start app.js -i max -e err.log -o out.log

第四、配置pm2启动文件

在项目根目录添加一个processes.json

{"apps": [{"name": "app","cwd": "/home/fullbook","script": "bin/www","log_date_format": "YYYY-MM-DD HH:mm Z","error_file": "/var/log/node-app/node-app.stderr.log","out_file": "log/node-app.stdout.log","pid_file": "pids/node-geo-api.pid","instances": 6,"min_uptime": "200s","max_restarts": 10,"max_memory_restart": "1M","cron_restart": "1 0 * * *","watch": false,"merge_logs": true,"exec_interpreter": "node","exec_mode": "fork","autorestart": false,"vizion": false}]
}

说明:

  • apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
  • name:应用程序名称
  • cwd:应用程序所在的目录
  • script:应用程序的脚本路径
  • log_date_format:
  • error_file:自定义应用程序的错误日志文件
  • out_file:自定义应用程序日志文件
  • pid_file:自定义应用程序的pid文件
  • instances:
  • min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  • max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  • cron_restart:定时启动,解决重启能解决的问题
  • watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
  • merge_logs:
  • exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  • exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  • autorestart:启用/禁用应用程序崩溃或退出时自动重启
  • vizion:启用/禁用vizion特性(版本控制)

可以通过pm2 start processes.json来启动。

也可以把命令写在package.json里,通过npm run pm2来启动,如下:

如何使用PM2 部署 nodejs 项目相关推荐

  1. PM2 部署 nodejs 项目

    PM2 部署 nodejs 项目 在网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种. 使用场合: forever管理多个站点,每个站点访问量不大,不需要监控. ...

  2. nginx+ssl+pm2 部署 nodejs 服务

    nginx+pm2 部署 nodejs 服务 最近在 centos 上部署 nodejs 服务,记下来步骤: 注意都是使用 root 用户. 下载 nvm: curl -o- https://raw. ...

  3. 【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人

    看了很多部署的,要么少步骤,要么就是写的太简洁,对新手不友好 文章目录 前言 一.下载网易云nodejs项目 1. git clone下载,两种方式 2. 运行项目 二.使用步骤 1. 先在本地运行 ...

  4. 记一次完整的新浪云部署nodejs项目上线完整流程及填坑处理!

    工欲善其事,必先利其器.在开始本次部署新浪云nodejs项目之前,请先做好以下准备工作: 1.注册一个新浪微博账号! 2.使用注册好的新浪微博账号,登录新浪云网站:http://www.sinaclo ...

  5. 使用pm2部署nuxt3项目

    众所周知,nuxt3.js是基于vue开发ssr,seo的项目比较好的框架,那么开发完成项目,如何部署nuxt项目也是比较重要的,接下来就记录一下我在开发中是如何部署的. 这篇文章只是对配置环境变量做 ...

  6. 部署nodejs项目到服务器的一些总结

    安装nodejs 首先在服务器上安装nodejs并配置环境,这个可以参考官方的文档,就不细说了 拷贝项目到服务器上 这里其实可以通过git直接clone在服务器上.当然正常发版一般是将代码打包上传到服 ...

  7. 设置webhook_使用 WebHook 来自动部署 NodeJS 项目!

    前言 在我们本地开发好一个 NodeJS 项目,如果想要给别人看的话一般来说都是需要部署到服务器上面的.如果你使用 github 或者 coding 这里代码托管的服务,只需要在服务器安装好环境且安装 ...

  8. centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目

    一.购买服务器并远程连接 1.购买服务器和域名 可以选择阿里云或者是其他的厂商的服务器.然后会获得服务器ip地址,用户名和密码. 购买域名,将域名绑定到ip地址上. 2.下载xshell,winscp ...

  9. 在Linux部署Nodejs项目,一旦断掉XShell就会导致服务被停掉,真的很郁闷~怎么办?果断用forever

    客户端启动Node.js应用,用node index.js这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了.也就是说这样的启动方式没有给应用一个守护线程. 首先需要安装一个叫做fore ...

  10. 如何将nodejs项目程序部署到阿里云服务器上

    将nodejs项目程序部署到阿里云服务器上 一.概述 二.具体步骤 1.拥有自己的服务器 2.下载Xshell 3. oneinstack配置web环境 4. XShell连接远程主机 5.更新系统软 ...

最新文章

  1. 麦肯锡发布《中国互联网公司崛起报告》
  2. ftp linux 开启验证_在linux中开启ftp服务
  3. RMI原理及开发实例
  4. 非常恶俗地分享一首歌曲(子陵·周郎顾)
  5. 报表在IBM AIX系统下resin部署
  6. 实验5 —— 编写、调试具有多个段的程序
  7. TOJ 4008 The Leaf Eaters
  8. Error pulling origin: error: The following untracked working tree files would be overwritten by...
  9. bzoj 4501 旅行
  10. exchange 2010部署之五
  11. 医学流体力学血流动力学仿真模拟计算及临床应用
  12. 2003迁移2008R2难点分析
  13. 基础SQL第无课---数据修改
  14. 豆果美食 php,#一道菜表白豆果美食# 比蛋糕还好吃的咕咕霍夫面包
  15. Kubernetes kubeadm 证书到期,更新证书
  16. xstart下远程报错已拒绝X11转移申请的解决方法
  17. java基础之—TreeSet集合学习笔记
  18. 关于思科模拟器7.3.1无法显示登陆窗口的解决方案
  19. 基于python的全部开源的快速开发平台
  20. 浪潮信息m5服务器,浪潮英信服务器NF8480M5

热门文章

  1. 【ZookeeperDubbo系列二】Zookeeper+Dubbo集群安装配置详解
  2. 【办公类-09】20220511word邮件合并功能插入照片(上下环绕照片)
  3. html中单元格向下合并单元格,html中单元格合并 HTML 怎么给合并单元格设置宽度...
  4. 对Bat文件进行加密
  5. NSString+NSMutableString+NSValue+NSAraay用法汇总
  6. 多重检验_LSD方法不准确性
  7. VBlog 静态页面 动态博客
  8. Win11打印机状态错误怎么解决
  9. linux usb有线网卡驱动_基于USB设备的Linux网络驱动程序开发
  10. Stored Outline