pm2 nginx部署node服务

服务器部署:

[TOC]

一、Nginx

1、安装nginx

sudo apt-get install nginx

2、查看安装情况:

# 查看nginx
ps -ef|grep nginx
#root      1532  1239  0 17:54 pts/0    00:00:00 grep nginx

# 查看安装的情况
nginx -v
# 查看nginx.conf配置文件目录,找到配置文件,然后就可以更改了
nginx -t
#nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
#nginx: configuration file /etc/nginx/nginx.conf test is successful

3、启动nginx

nginx

4、停止nginx服务


nginx -s stop
# 或者是
nginx -s quit

5、nginx.conf的配置文件处理

#这里是全局变量的配置
user nginx;# 用户
worker_processes auto;#指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存 通常数量是CPU内核数量的整数倍
error_log /var/log/nginx/error.log;#定义错误日志文件的位置及输出级别
pid /var/run/nginx.pid;  #用来指定进程id的存储文件的位置
#worker_rlimit_nofile用于指定一个进程可以打开最多文件数量的描述

include /usr/share/nginx/modules/*.conf;

events {                        # nginx工作模式配置
    worker_connections  1024;   #最大可以同时接收的连接数量,默认为512和worker_precesses共同决定的
    #multi_accept   on          #nginx在收到一个新连接通知后尽可能多的接受更多的连接
    #use epoll;                 #use epoll 配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
}


http {                          #http协议信息的一些配置
    ## #自定义格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                      

    ##
    # 基础配置
    ##

    sendfile on;    #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;      ##文件扩展名与文件类型映射表
    default_type application/octet-stream;  #默认文件类型,默认为text/plain
    access_log  /var/log/nginx/access.log  main;# 如果值是off 取消服务日志 
    
    # for more information.
    include /etc/nginx/conf.d/*.conf; # 这里引入了其他的配置文件
    
    #负载均衡配置
    upstream hello {
        server 127.0.0.1:8001;
        #server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {                    #用于进行服务器访问信息的配置
        #keepalive_requests 120; #单连接请求上限次数。
        listen 80;
        server_name www.tuxiaobaibai.cn;#监听地址     

        location / {            #用于进行访问路由的配置
         #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
             #root path;  #根目录
             #index vv.txt;  #设置默认页
            #alias  /myweb/server2/location2;       #对location的URL进行更改
            proxy_set_header Host  $http_host;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-Nginx-proxy true;
            proxy_pass http://hello;#请求转向 mysvr 定义的服务器列表
            proxy_redirect off;
            #deny 127.0.0.11;  #拒绝的ip
            #allow 172.0.0.12; #允许的ip   
        }
    }
}


二、PM2 安装操作

PM2是用来维持node服务永久启动的?存疑

#1、安装pm2
npm install pm2 -g
#2、运行
cd /home/node/
pm2 start /bin/www --name bookmarket    # 命名进程并启动(首次启动,需要进入项目目录中进行启动)
    #[PM2] Starting /home/node/bin/www in fork_mode (1 instance)
    #[PM2] Done.
    #┌────────┬──────┬────────┬───┬─────┬───────────┐
    #│ Name   │ mode │ status │ ↺ │ cpu │ memory    │
    #├────────┼──────┼────────┼───┼─────┼───────────┤
    #│ myname │ fork │ online │ 0 │ 0%  │ 10.3 MB   │
    #└────────┴──────┴────────┴───┴─────┴───────────┘

#3、检查启动的服务列表
 pm2 list       # 返回上边的那个列表
#4 监视所有进程
 pm2 monit              
#5、显示所有进程日志
 pm2 logs               
#6、 停止所有进程
  pm2 stop all         
#7、 重启所有进程
 pm2 restart all        
#8、 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 reload all         
#9、 停止指定的进程
pm2 stop 0             
#10、 重启指定的进程
  pm2 restart 0        
#11、 产生 init 脚本 保持进程活着
pm2 startup            
#12、 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 web                
#13、 杀死指定的进程
 pm2 delete 0          
#14、 杀死全部进程
pm2 delete all         
#15、开启自动重启模式
pm2 start app.js --watch     

pm2常用的一些命令

    #pm2运行一个脚本的时候
    #就比如需要运行
    node build/dev-server.js --env=local
    # pm2使用方式:
    pm2 start build/dev-server.js  --env=local
    # pm2使用npm启动
    pm2 start npm -- run XXX
    如果要加一个自己喜欢的名字就是
    pm2 start npm --name baipu --watch -- run dev 

我们也可以写一个配置文件来启动项目processes.json

然后使用pm2 start precesses.json就可以运行了

{
  "apps": [
    {
      "name": "mywork",
      "cwd": "/home/node/",
      "script": "bin/www",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "/var/log/node-app/node-app.stderr.log",
      "out_file": "log/node-app.stdout.log",
      "pid_file": "pids/node-geo-api.pid",
      "instances": 6,
      "min_uptime": "200s",
      "max_restarts": 10,
      "max_memory_restart": "1M",
      "cron_restart": "1 0 * * *",
      "watch": false,
      "merge_logs": true,
      "exec_interpreter": "node",
      "exec_mode": "fork",
      "autorestart": false,
      "vizion": false
    }
  ]
}

解释:

  1. pps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
  2. name应用程序的名字
  3. cwd:应用程序所在的目录
  4. out_file:自定义应用程序日志文件
  5. min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
  6. max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
  7. cron_restart:定时启动,解决重启能解决的问题
  8. watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
  9. exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
  10. exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
  11. autorestart:启用/禁用应用程序崩溃或退出时自动重启
  12. vizion:启用/禁用vizion特性(版本控制)

备注 :

npm淘宝镜像:

npm config set registry https://registry.npm.taobao.org

不想用他们的,再设置回原来的就可以了:

npm config set registry https://registry.npmjs.org

你可能感兴趣的:(pm2 nginx部署node服务)