搜索文章

输入关键词开始搜索

PM2使用笔记

程序设计#JavaScript#Node.js#Nginx

配置

在项目根目录下有一份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] 重新启动某个服务