PM2使用笔记
配置
在项目根目录下有一份pm2.js,请修改其中的中文名称:
const APPLICATION_ENV = process.env['APPLICATION_ENV'] || 'production';
let common = {
"apps":[
{
"name":"你的项目名称",
"script":"./app.js",
"instances":"max",
"exec_mode":"cluster",
"error_file":"/usr/local/node/logs/域名前缀/项目名称/项目名称_error.log",
"out_file":"/usr/local/node/logs/域名前缀/项目名称/项目名称_out.log"
}
]
};
let applicationEnv = {
development:{
"watch":true
},
testing:{
"watch":true
},
production:{
"watch":false
}
};
Object.assign(common['apps'][0],applicationEnv[APPLICATION_ENV]);
module.exports = common;
日志
正常日志:/usr/local/node/logs/域名/应用.access.log 错误日志:/usr/local/node/logs/域名/应用.error.log 日志按天分割,比如昨天的日志,则命名为:/usr/local/node/logs/域名/应用.access.log.1 仅保留最近5天的日志
以股性评分的日志为例:
当天正常日志:/usr/local/node/logs/ai/stockrate.access.log
当天错误日志:/usr/local/node/logs/ai/stockrate.error.log
昨天正常日志:/usr/local/node/logs/ai/stockrate.access.log.1
昨天错误日志:/usr/local/node/logs/ai/stockrate.error.log.1
Nginx配置
Node提供的服务,需要经过Nginx进行中转,对外提供域名方式的80端口访问接口:
#先设置一个nginx的upstream,指向Node配置文件中设置的端口号(示例中的Node端口号是3000):
upstream stockrate {
# Nodejs app upstream
server 127.0.0.1:3000;
#注意,这里必须设置长连接,否则每次代理nginx都会重新创建与Node的连接,会存在严重的性能问题!
keepalive 64;
}
server {
listen 80;
server_name ai.10jqka.com.cn ai.0033.com ai.300033.info;
access_log logs/ai.access.log main;
error_log logs/ai.error.log notice;
index index.html index.htm index.php;
root /var/www/ai/public;
location /stockrate/ {
# Proxy_pass configuration
root /var/www/ai/stockrate;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
# support websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_max_temp_file_size 0;
proxy_pass http://stockrate/;
proxy_redirect off;
proxy_read_timeout 240s;
}
location ~ .*\.html$ {
expires 30m;
}
location ~ .*\.(css|js|gif|jpg|jpeg|png|bmp|swf)$
{
expires 3h;
}
location ~ /\. {
deny all;
}
}
常用维护命令
pm2 list 查看当前正在运行的服务
pm2 start app.js 启动服务
pm2 stop [name] 停止服务
pm2 reload [name] 重新启动某个服务