天天看點

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了

準備工作

方向代理

負載均衡

nginx 負載均衡的實作

HTTP Uptream子產品

其他負載均衡的方法

緩存政策

實戰

首先安裝nginx

  • centos 可以用 yum神器
  • mac 環境使用 Homebrew神器 來安裝

    brow 來源

    brew search nginx

    brew install nginx

    brew info nginx

    nginx -v 有版本輸出;安裝成功

  • win10 安裝 nginx

    下載下傳資源很多.這裡跳過,講下使用方法

    在nginx.exe目錄,打開指令行工具,用指令 啟動/關閉/重新開機nginx ; 或者配置環境變量
    start nginx : 啟動nginx
    nginx -s reload  :修改配置後重新加載生效
    nginx -s reopen  :重新打開日志檔案
    nginx -t -c /path/to/nginx.conf 測試nginx配置檔案是否正确
    nginx -s stop  :快速停止nginx
    nginx -s quit: 完整有序的停止nginx
               

nginx.conf 檔案 裡的子產品介紹

//看一眼; 就可以了
#user  nobody;

# 工作程序 就是cpu 核數
worker_processes  ;

# nginx的日志
# 出錯
#error_log  logs/error.log;
# 警告
#error_log  logs/error.log  notice;
# 基礎資訊
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


# 最大連結數
events {
    worker_connections  ;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  ;

    # 壓縮
    #gzip  on;

    server {
        # 端口
        listen       ;
        # 路徑
        server_name  localhost;

        # 設定語言
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        # 項目路徑;
        location / {
            root   html;
            index  index.html index.htm;
        }
        ....
           

配置我們自己的 nginx.conf

這裡我們配置我們自己的 nginx.conf 檔案負載均衡(但是原檔案建議是備份一個)

worker_processes  auto;
events {
    worker_connections  ;
}
http {
    #配置一 預設 這兩個ip位址 權重一樣 都是1:1 的機率通路到;
    #upstream firsttest {
        #server 47.104.64.78:3389;
        #server 47.104.64.79:3389;
    #}

    #配置二 ip_hash; 讓使用者落在第一個次通路ip上
    #upstream firsttest {
        #ip_hash;
        #server 47.104.64.78:3389;
        #server 47.104.64.79:3389;
    #}
    #配置三 ip 添加weight; 使目前被通路的 ip權重 為2:1
    upstream firsttest {
        server : weight=;
        server :;
    }

    server {
        listen ;
        location / {
            proxy_pass http://firsttest;
        }
   }
 }
           
nginx -t  執行檔案
nginx -s reload 重新開機 nginx服務
本地打開localhost:8080 nginx代理到了阿裡伺服器位址 
這是我在阿裡伺服器的nginx歡迎頁 ; 
           
Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了

配置我們自己的 pm2.json ##

http://pm2.keymetrics.io/ 官方網站

在此之前要先安裝好pm2 >> npm install pm2 -g

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了
  • pm2 指令 啟動檔案可以是.js 或者是.json 等很多檔案類型.按着官方文檔的格式寫就可以了;
    • pm2 start app.js 啟動
    • pm2 monit 監控
    • pm2 list 顯示服務狀态
    • pm2 stop app.js
    • pm2 restart app.js
    • pm2 delete app.js
PM2.json
{
    "name": "worker",
    //啟動檔案
    "script": "app.js",
    //監聽
    "watch": true,
    "log_data_format":"YYYY-MM-DD HH:mm Z",
    "out_file":"log/node-app.stdout.log",
    //讓node 占滿cpu
    "instances" : "max",
    //讓我們node以主線程啟動
    "exec_mode" : "cluster" 
}
           

keymetrics平台監控 https://app.keymetrics.io/#/ 注冊登陸上去就能連上自己的pm2 就能界面化 監控,檢視cpu情況

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了

把項目扔到伺服器上 ##

比如我們用 build.zip 檔案做測試

npm install –production 釋出模式下npm

ps aux | grep node 産看程式的程序

netstat -anp |grep 3300 檢視哪個端口被占用

kill -9 pid 殺死程序

ssh 使用者名@位址 連接配接ssh

““mac環境: 檔案 /檔案夾

scp course-map.json [email protected]位址:/路徑

scp - r advance/ [email protected]位址:/

unzip build.zip

“““在win環境下 直接使用winscp 傻瓜機;像ftp 一樣直接任代碼;即可

  • 首先把項目需要的檔案. 壓個包;

緩存政策 附加的

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了
//nginx.conf 中http 子產品裡面添加
    # 設定緩存
    # Etag  不過沒有添加配置是預設打開的
    Etag off;
    # gzip打開壓縮
    gzio on;
    # 過期時間
    expires d;
    #設定 告訴浏覽器别去緩存它
    add_header Cache-Control no-cache;
           

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了

Node部署 - [反向代理 + 負載均衡 + 線上部署 + PM2 + 緩存政策] - 看我的就夠了

詳細到