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  1;

# 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  1024;
}


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  65;

    # 壓縮
    #gzip  on;

    server {
        # 端口
        listen       80;
        # 路徑
        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  1024;
}
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 47.104.64.78:3389 weight=2;
        server 47.104.64.79:3389;
    }

    server {
        listen 8088;
        location / {
            proxy_pass http://firsttest;
        }
   }
 }
nginx -t  執行文件
nginx -s reload 重啓 nginx服務
本地打開localhost:8080 nginx代理到了阿里服務器地址 
這是我在阿里服務器的nginx歡迎頁 ; 

這裏寫圖片描述

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

http://pm2.keymetrics.io/ 官方網站
在此之前要先安裝好pm2 >> npm install pm2 -g
這裏寫圖片描述

  • 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情況
這裏寫圖片描述

把項目扔到服務器上 ##

比如我們用 build.zip 文件做測試

npm install –production 發佈模式下npm
ps aux | grep node 產看程序的進程
netstat -anp |grep 3300 查看哪個端口被佔用
kill -9 pid 殺死進程
ssh 用戶名@地址 連接ssh
““mac環境: 文件 /文件夾
scp course-map.json root@ip地址:/路徑
scp - r advance/ root@ip地址:/
unzip build.zip
“““在win環境下 直接使用winscp 傻瓜機;像ftp 一樣直接任代碼;即可

  • 首先把項目需要的文件. 壓個包;

緩存策略 附加的

這裏寫圖片描述

 //nginx.conf 中http 模塊裏面添加
    # 設置緩存
    # Etag  不過沒有添加配置是默認打開的
    Etag off;
    # gzip打開壓縮
    gzio on;
    # 過期時間
    expires 30d;
    #設置 告訴瀏覽器別去緩存它
    add_header Cache-Control no-cache;


這裏寫圖片描述

這裏寫圖片描述

詳細到

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章