感谢内容提供者:金牛区吴迪软件开发工作室
前言
在服务器上部署node程序的时候很多时候可能会遇到一种情况,公司只有一台服务器。但是要部署多个前端项目,那么怎么办呢?笔者知道的办法有俩种,一种是写配置文件的方式,另外一种是命令的方式。
第一种办法:写配置文件
配置详情请看官网:https://pm2.keymetrics.io/docs/usage/application-declaration/#generate-configuration
pm2.json文件内容:
{
"apps": [
{
"name": "server",
"script": "production.js", // 后端启动
"cwd": "/home/www/supermarket-system", // 目录
"exec_mode": "fork", // 模式
"max_memory_restart": "1G", // 最大内存重启
"autorestart": true, // 自动重启
"env": {} // 自己去配置一些环境变量
},
{
"name": "front",
"script": "http-server -c10", // 前端启动
"cwd": "/home/www/supermarket_management_system/dist", // 目录
"exec_mode": "fork", // 模式
"max_memory_restart": "1G", // 最大内存重启
"autorestart": true, // 自动重启
"env": { // 自己去配置一些环境变量
"NODE_ENV": "production"
}
}
]
}
写好了之后使用命令执行这个文件:
pm2 start pm2.json
第二种办法:更改PM2_HOME环境变量
Multiple PM2 on the same server
The client and daemon communicates via socket files available in $HOME/.pm2/[pub.sock|rpc.sock]
You can start multiple PM2 instances by changing the PM2_HOME environmnent variable.
$ PM2_HOME='.pm2' pm2 start echo.js --name="echo-node-1"
$ PM2_HOME='.pm3' pm2 start echo.js --name="echo-node-2"
This will start two different PM2 instances. To list processes managed by each different instances do:
$ PM2_HOME='.pm2' pm2 list
$ PM2_HOME='.pm3' pm2 list
这种方法就是在环境变量上做区分。