美文网首页青椒云
pm2 nginx部署node服务

pm2 nginx部署node服务

作者: 白璞1024 | 来源:发表于2018-08-13 21:24 被阅读0次

    服务器部署:

    [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服务

        本文链接:https://www.haomeiwen.com/subject/jurpbftx.html