PM2以及Nginx安裝和配置(HTTPS)

一臺服務器架設多個 nodejs 網(wǎng)站的拓撲結構

圖1.png

搭建 Nodejs 生產(chǎn)環(huán)境


  1. 下載 nodejs 二進制代碼包,然后減壓到 /usr/local/nodejs
  2. 配置環(huán)境變量
    • vi /etc/profile
    • 最后面添加:
      • export NODE_HOME=/usr/local/nodejs/bin
      • export PATH=NODE_HOME:PATH
  3. :wq 保存,然后運行: source /etc/profile

nodejs 進程管理器 pm2 的使用

PM2 是一款非常優(yōu)秀的 Node 進程管理工具,它有著豐富的特性:能夠充分利用多核 CPU
且能夠負載均衡、能夠幫助應用在崩潰后、指定時間(cluster model)和超出最大內(nèi)存限制
等情況下實現(xiàn)自動重啟。
PM2 是開源的基于 Nodejs 的進程管理器,包括守護進程,監(jiān)控,日志的一整套完整的功能

PM2 的主要特性


  1. 內(nèi)建負載均衡(使用 Node cluster 集群模塊)
  2. 后臺運行
  3. 0 秒停機重載,我理解大概意思是維護升級的時候不需要停機.
  4. 具有 Ubuntu 和 CentOS 的啟動腳本
  5. 停止不穩(wěn)定的進程(避免無限循環(huán))
  6. 控制臺檢測

PM2常見命令

  1. pm2 的安裝

npm install pm2 -g

  1. 運行 pm2 的程序并指定 name

pm2 start app.js --name www_itying_com

pm2 start app.js -i 3 --name www_itying_com 3 啟動 3 個進程 (自帶負載均衡)

  1. 顯示所有進程狀態(tài)

pm2 list

  1. 顯示所有日志

pm2 logs

  1. 顯示一個進程的日志

pm2 logs www_itying_com

  1. 關閉重啟所有進程

  • pm2 stop all # 停止所有進程
  • pm2 restart all # 重啟所有進程
  • pm2 reload all # 0 秒停機重載進程 (用于 NETWORKED 進程)

  1. 關閉重啟指定進程

  • pm2 stop 0 # 停止指定的進程
  • pm2 restart 0 # 重啟指定的進程
  • pm2 stop www_itying_com
  • pm2 restart www_itying_com

  1. 殺死進程

  • pm2 delete 0 # 殺死指定的進程
  • pm2 delete all # 殺死全部進程
  • pm2 delete www_itying_com # 殺死指定名字的進程

  1. 顯示相應進程/應用的總體信息

pm2 show www_itying_com

相關防火墻配置


  • 添加:
    firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 重新載入:
    firewall-cmd --reload
  • 查看
    查看所有打開的端口: firewall-cmd --zone=public --list-ports
  • 刪除
    firewall-cmd --zone= public --remove-port=3306/tcp --permanent

Nginx 的安裝


  1. 安裝 nginx 源
  1. 查看 Nginx 源是否配置成功
  • 通過 yum search nginx 看看是否已經(jīng)添加源成功。如果成功則執(zhí)行下列命令安裝 Nginx。
    或者 npm info nginx 也可以看看 nginx 源是否添加成功
  1. 安裝 Nginx
  • sudo yum install -y nginx 3、啟動 Nginx 并設置開機自動運行
  • sudo systemctl start nginx
  • sudo systemctl enable nginx

Nginx 反向代理配置

  1. 關閉 Selinux
    • vi etc/selinux/config
    • 修改 SELINUX=enforcing 為 SELINUX=disabled
    • 必須重啟 linux init 6
  2. 配置 firewalld 開啟 80 端口
    • firewall-cmd --zone=public --list-ports
    • firewall-cmd --zone=public --add-port=80/tcp --permanent
  3. 配置反向代理
    • 找到 /etc/nginx/conf.d 然后在里面新建對應網(wǎng)站的配置文件


      圖2.png
server {
    listen 80; 
    server_name www.bbb.com;
    location / {
        #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實 IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #禁用緩存
        proxy_buffering off;
        #反向代理的地址
        proxy_pass http://127.0.0.1:3001;
}
  1. 重啟 nginx

  • systemctl restart nginx
  • nginx -t 看配置是否正確
  • systemctl stop nginx
  • systemctl start nginx

域名測試

找到 C:\Windows\System32\drivers\etc\hosts



瀏覽器輸入www.aaa.com nginx 轉發(fā)到了 127.0.0.1:3001

Nginx 負載均衡


  1. 準備工作:1、關閉 Selinux 2、開啟防火墻對應端口
  2. 負載均衡的種類:
    • 一種是通過硬件來進行解決,常見的硬件有 NetScaler、F5、Radware 和 Array 等商用的
      負載均衡器,但是它們是比較昂貴的
    • 一種是通過軟件來進行解決的,常見的軟件有 LVS、Nginx、apache 等,它們是基于 Linux
      系統(tǒng)并且開源的負載均衡策略. Nginx 的特點是占有內(nèi)存少,并發(fā)能力強,事實上 nginx 的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)最好,中國大陸使用 nginx 網(wǎng)站用戶有:新浪、網(wǎng)易、 騰訊等。
  3. nginx 的 upstream 目前支持 3 種方式的分配:
    • 輪詢(默認)
      每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,
      能自動剔除。
    • weight 權重 ——you can you up
      指定輪詢幾率,weight 和訪問比率成正比,用于后端服務器性能不均的情況。
    • ip_hash ip 哈希算法
      每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個后端服務器,
      可以解決 session 的問題。
  4. 配置負載均衡
    找到 /etc/nginx/conf.d 然后在里面新建對應網(wǎng)站的配置文件

圖2.png
upstream bakebbs {
    ip_hash; 
    server 127.0.0.1:3001 weight=1 ; 
    server 127.0.0.1:3001 weight=3;
}
server {
    listen 80; 
    server_name www.bbb.com;
    location / {
        #設置主機頭和客戶端真實地址,以便服務器獲取客戶端真實 IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #禁用緩存
        proxy_buffering off;
        #反向代理的地址
        proxy_pass http://bakebbs;
    }
}
  1. 重啟 nginx

  • systemctl restart nginx
  • nginx -t 看配置是否正確
  • systemctl stop nginx
  • systemctl start nginx

相關防火墻配置


  • 添加:
    firewall-cmd --zone=public --add-port=80/tcp --permanent
  • 重新載入:
    firewall-cmd --reload
  • 查看
    查看所有打開的端口: firewall-cmd --zone=public --list-ports
  • 刪除
    firewall-cmd --zone= public --remove-port=3306/tcp --permanent

HTTPS


  • HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的 HTTP
    通道,簡單講是 HTTP 的安全版。
  • HTTPS 是在 HTTP 的基礎上添加了安全層,從原來的明文傳輸變成密文傳輸,當然加密與解
    密是需要一些時間代價與開銷的,不完全統(tǒng)計有 10 倍的差異。在當下的網(wǎng)絡環(huán)境下可以忽
    略不計,已經(jīng)成為一種必然趨勢。
  • 目前微信小程序請求 Api 必須用 https、Ios 請求 api 接口必須用 https

配置 https

  1. 證書類型

  1. 域名型 https 證書(DVSSL):信任等級一般,只需驗證網(wǎng)站的真實性便可頒發(fā)證書保護網(wǎng)站;
  2. 企業(yè)型 https 證書(OVSSL):信任等級強,須要驗證企業(yè)的身份,審核嚴格,安全性更高;
  3. 增強型 https 證書(EVSSL):信任等級最高,一般用于銀行證券等金融機構,審核嚴格,安全性最高,同時可以激活綠色網(wǎng)址欄

  1. 創(chuàng)建證書


    圖1.png
  1. 證書驗證

可以是域名驗證,也可以是文件驗證

  1. 配置 web 服務器

https://cloud.tencent.com/document/product/4004143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83. A8.E7.BD.B2

將域名 www.domain.com 的證書文件 1_www.domain.com_bundle.crt 、私鑰文
件 2_www.domain.com.key 保存到同一個目錄,例如 /usr/local/nginx/conf 目錄下。
更新 Nginx 根目錄下 conf/nginx.conf 文件如下:

server {
    listen 443;
    server_name www.domain.com; #填寫綁定證書的域名
    ssl on;
    ssl_certificate 1_www.domain.com_bundle.crt;
    ssl_certificate_key 2_www.domain.com.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協(xié)議配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置
    ssl_prefer_server_ciphers on;
    location / {
        root html; #站點目錄
        index index.html index.htm;
    }

配置完成后,先用 bin/nginx –t 來測試下配置是否有誤,正確無誤的話,重啟 nginx。就可以使用 https://www.domain.com 來訪問。

圖2.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容