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

一台服务器架设多个 nodejs 网站的拓扑结构

PM2以及Nginx安装和配置(HTTPS)_第1张图片
图1.png

搭建 Nodejs 生产环境


  1. 下载 nodejs 二进制代码包,然后减压到 /usr/local/nodejs
  2. 配置环境变量
    • vi /etc/profile
    • 最后面添加:
      • export NODE_HOME=/usr/local/nodejs/bin
      • export PATH=PATH
  3. :wq 保存,然后运行: source /etc/profile

nodejs 进程管理器 pm2 的使用

PM2 是一款非常优秀的 Node 进程管理工具,它有着丰富的特性:能够充分利用多核 CPU
且能够负载均衡、能够帮助应用在崩溃后、指定时间(cluster model)和超出最大内存限制
等情况下实现自动重启。
PM2 是开源的基于 Nodejs 的进程管理器,包括守护进程,监控,日志的一整套完整的功能

PM2 的主要特性


  1. 内建负载均衡(使用 Node cluster 集群模块)
  2. 后台运行
  3. 0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.
  4. 具有 Ubuntu 和 CentOS 的启动脚本
  5. 停止不稳定的进程(避免无限循环)
  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. 显示所有进程状态

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 源
  • sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  1. 查看 Nginx 源是否配置成功
  • 通过 yum search nginx 看看是否已经添加源成功。如果成功则执行下列命令安装 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 然后在里面新建对应网站的配置文件


      PM2以及Nginx安装和配置(HTTPS)_第2张图片
      图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


  • 192.168.1.128
  • 192.168.1.128 www.bbb.com

浏览器输入www.aaa.com nginx 转发到了 127.0.0.1:3001

Nginx 负载均衡


  1. 准备工作:1、关闭 Selinux 2、开启防火墙对应端口
  2. 负载均衡的种类:
    • 一种是通过硬件来进行解决,常见的硬件有 NetScaler、F5、Radware 和 Array 等商用的
      负载均衡器,但是它们是比较昂贵的
    • 一种是通过软件来进行解决的,常见的软件有 LVS、Nginx、apache 等,它们是基于 Linux
      系统并且开源的负载均衡策略. Nginx 的特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现最好,中国大陆使用 nginx 网站用户有:新浪、网易、 腾讯等。
  3. nginx 的 upstream 目前支持 3 种方式的分配:
    • 轮询(默认)
      每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,
      能自动剔除。
    • weight 权重 ——you can you up
      指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。
    • ip_hash ip 哈希算法
      每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,
      可以解决 session 的问题。
  4. 配置负载均衡
    找到 /etc/nginx/conf.d 然后在里面新建对应网站的配置文件

PM2以及Nginx安装和配置(HTTPS)_第3张图片
图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 的基础上添加了安全层,从原来的明文传输变成密文传输,当然加密与解
    密是需要一些时间代价与开销的,不完全统计有 10 倍的差异。在当下的网络环境下可以忽
    略不计,已经成为一种必然趋势。
  • 目前微信小程序请求 Api 必须用 https、Ios 请求 api 接口必须用 https

配置 https

  1. 证书类型

  1. 域名型 https 证书(DVSSL):信任等级一般,只需验证网站的真实性便可颁发证书保护网站;
  2. 企业型 https 证书(OVSSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
  3. 增强型 https 证书(EVSSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏

  1. 创建证书


    PM2以及Nginx安装和配置(HTTPS)_第4张图片
    图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; #按照这个协议配置
    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 来访问。

PM2以及Nginx安装和配置(HTTPS)_第5张图片
图2.png

你可能感兴趣的:(PM2以及Nginx安装和配置(HTTPS))