pm2 日常使用
1. pm2 是什么?
日常开发中需要启动一个node项目,需要用npm run …,,如果终端被关掉,程序也就自动停止,有时候几个项目一起跑起来,好几个终端开着,个人不太喜欢,有一神器可以解决:pm2。pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。它非常适合IaaS结构,但不要把它用于PaaS方案。
2.安装
npm install -g pm2
3.日常使用
由于node的百花齐放,启动一个网站的办法,也会有很多种。这里先以:npm run dev为例:
首先查看项目的package.json文件(我的本地):
"scripts": {
"dev": "node build/dev-server.js --env=local",
"start": "node build/dev-server.js --env=local",
"build": "node build/build.js --env=publish",
"build-local": "node build/build.js"
},
npm run dev
实际就是运行node脚本文件:dev-server.js
,
可以用pm2启动:pm2 start build/dev-server.js
,可以给这个进程取一个自己记得能理解的名字:pm2 start build/dev-server.js --name XXX
,(XXX是你定义的名字)
如果你的node项目配置文件和以上代码不一样
莫急,pm2 也是有办法可以启动的(个人觉得这是一个万能的启动的方法):
pm2 start npm -- run XXX
用她替代:npm run dev,就可以写成:
pm2 start npm -- run dev
,项目启动!
虽然项目启动了,但是名字并不是我想要的(我需要个自己能记得住的名字,并且是一个项目一个专属name),这时候可以用:
pm2 start npm --watch --name XXX -- run start
#pm2的项目启动大概就这些了,日常还有些常用指令,如:
#查看所用已启动项目:
pm2 list
#重启:
pm2 restart XXX
#停止:
pm2 stop XXX
#删除
pm2 delete XXX
#查看某个进程/应用具体情况
pm2 describe Travel
#查看进程/应用的资源消耗情况
pm2 monit
#查看所有日志(某个进程)
pm2 logs (Travel)
注:以下不适用于学习交流,只是为了记录在本次pm2配置node启动的时候遇到的一些问题以及项目部署上线的一个大题模糊流程。
1.在项目上线前
- 购买了服务器、
- 域名还未审核通过
- 一个webpack管理通过npm run dev启动的项目
2.服务器配置
在购买了服务器后,会有一个ip地址,一个密码,打开终端,输入如下命令,并回车输入密码
ssh root@`ip地址`
然后就连接到了我们的服务器,进入到根目录可以看到目录结构
解释主要的目录结构:
node
:node的安装目录,并且全部配置,关于如何在服务器配置node可百度。root
:root里面主要放的是一个webpack管理通过npm run dev启动的项目etc
:nginx服务器的安装【修改较多的文件是/etc/nginx/nginx.conf
】。
关于如何将本地项目复制到root下的小操作:
scp -r local-dir root@ip:remote_dir
#在本地终端执行上述命令:
#【local-dir】为本地路径;
#【ip】为你服务器的ip;
#【remote_dir】为你放到远程服务器的地址,我们这里是 /root
nginx.conf的配置(vi nginx.conf,内容如下图)
我们的主要配置放在了nginx/conf.d/*.conf, 内容如下图:
这里的配置主要的nginx反向代理以及负载均衡,我们这里不涉及负载均衡,但是可以看到有负载均衡的添加项
upsteam roots
,里面的server可以配置多个地址。
我们通过监听80端口,转到8080端口去访问服务。
前提条件是我们进入到/root/testDemo项目中执行 npm run dev项目的时候,node启动才会跳转成功。
然后用pm2,安装等略。
在看了一些列文章后,终于找到了启动方法,本文章记录也就是为了下面这行代码
pm2 start npm -- run XXX
#用她替代:npm run dev,就可以写成:pm2 start npm -- run dev,项目启动:
后来经过一些配置后,这么启动出现了问题,然后输入下面的命令得到解决:
pm2 delete npm