PM2使用笔记

配置

在项目根目录下有一份pm2.js,请修改其中的中文名称:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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天的日志

以股性评分的日志为例:

1
2
3
4
当天正常日志:/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端口访问接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#先设置一个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;
}
}

常用维护命令

1
2
3
4
5
6
7
pm2 list 查看当前正在运行的服务

pm2 start app.js 启动服务

pm2 stop [name] 停止服务

pm2 reload [name] 重新启动某个服务