使用pm2管理服务器项目

背景:比如我们启动一个node服务,当我们将终端窗口关闭之后,就无法再访问网址了,这个时候我们就需要借助pm2来实现,关闭终端窗口后仍然可以访问项目,需要具有后台运行和自动重启,这两个能力。


1. 全局安装pm2

npm i pm2 -g

2. 启动项目

// 当前文件夹下运行

pm2 start app.js --name web

终端关闭之后,在浏览器中依旧可以访问我们网址。


3. 我们还可以再次打开终端窗口,进行其他指令操作

3.1. 查看当前电脑运行了哪些项目

pm2 ls

3.2. 停止项目

// pm2 stop name 使用项目名称

pm2 stop web


// 停止所有应用

pm2 stop all


// pm2 stop id 或者使用项目id 更加简短方便

pm2 stop 0

3.3. 重启项目

// pm2 restart name 使用项目名称

pm2 restart web


// 重启所有进程

pm2 restart all


// pm2 restart id 或者使用项目id 更加简短方便

pm2 restart 0

3.4. 删除项目

// pm2 delete name 使用项目名称

pm2 delete web


// pm2 delete id 或者使用项目id 更加简短方便

pm2 delete 0

3.5. 杀掉pm2管理的所有进程

pm2 kill

3.6. 启动静态服务器,将目录dist作为静态服务器根目录,端口为8080

pm2 serve ./dist 8080

3.7. 设置pm2开机自启

开启启动设置,此处是CentOS系统,其他系统替换最后一个选项(可选项:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon)


pm2 startup centos 

然后按照提示需要输入的命令进行输入


最后保存设置


pm2 save

3.8. pm2 以 windows 服务运行

两种方案:pm2-windows-startup和pm2-windows-service

pm2-windows-startup 在 Windows Server 2012 上可行,故选择 pm2-windows-startup 作为解决 Node.js 应用开机自启动的方案。


// 全局安装pm2

npm i pm2 -g

// 全局安装pm2 Win自启包:pm2-windows-startup

npm install pm2-windows-startup -g

// 安装配置包:pm2-startup

pm2-startup install

// 推荐使用pm2配置文件启动项目,关于pm2配置文件可以参考如下配置文件pm2.config.json

{

  "apps":{

    "name":"myproject-web", // 项目的别名

    "script":"index.js", //需要启动程序的入口文件

    "watch":"true", // 开启文件变化监听

    "ignore_watch":[ // 忽略文件变化监听文件

      "node_modules",

      "logs"

    ],

    "error_file":"logs/error.log", //配置错误日志输出文件地址

    "out_file":"logs/consoles.log", //配置打印日志输出文件地址

    "log_date_format":"YYYY-MM-DD HH:mm:ss",  //配置日志日期格式

    "instances":2 //配置项目所占用的核数,小于等于服务器的总核数量

  }

}

// 启动项目:使用pm2启动项目,提前将命令行切换到项目根文件夹下后执行如下命令(如果不切换到项目文件下可以在启动时将项目路径加入启动:pm2 start 路径\index.js):

pm2 start pm2.config.json ,如果没有配置pm2配置文件,那么可以直接通过:pm2 index.js 或 pm2 app.js启动

// 将此项目保存起来,开机后才会自动重启,如:

pm2 save

// 重启服务器,可以正常访问应用,当然我们通常使用命令行下键入命令:pm2 list查看当前启动的项目,这里命令行路径没有要求,如:

pm2 list


作者:yummyMao

链接:https://www.jianshu.com/p/03ddbe25abb5

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


有话要说