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

搭建 Nodejs 生产环境
- 下载 nodejs 二进制代码包,然后减压到 /usr/local/nodejs
 - 配置环境变量
- vi /etc/profile
 - 最后面添加:
- export NODE_HOME=/usr/local/nodejs/bin
 - export PATH=PATH
 
 
 - :wq 保存,然后运行: source /etc/profile
 
nodejs 进程管理器 pm2 的使用
PM2 的主要特性
- 内建负载均衡(使用 Node cluster 集群模块)
 - 后台运行
 - 0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.
 - 具有 Ubuntu 和 CentOS 的启动脚本
 - 停止不稳定的进程(避免无限循环)
 - 控制台检测
 
PM2常见命令
- pm2 的安装
 
- 运行 pm2 的程序并指定 name
 
- 显示所有进程状态
 
- 显示所有日志
 
- 显示一个进程的日志
 
- 关闭重启所有进程
 
- pm2 stop all # 停止所有进程
 - pm2 restart all # 重启所有进程
 - pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)
 
- 关闭重启指定进程
 
- pm2 stop 0 # 停止指定的进程
 - pm2 restart 0 # 重启指定的进程
 - pm2 stop www_itying_com
 - pm2 restart www_itying_com
 
- 杀死进程
 
- pm2 delete 0 # 杀死指定的进程
 - pm2 delete all # 杀死全部进程
 - pm2 delete 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 的安装
- 安装 nginx 源
 
- sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
 
- 查看 Nginx 源是否配置成功
 
- 通过 yum search nginx 看看是否已经添加源成功。如果成功则执行下列命令安装 Nginx。
或者 npm info nginx 也可以看看 nginx 源是否添加成功 
- 安装 Nginx
 
- sudo yum install -y nginx 3、启动 Nginx 并设置开机自动运行
 - sudo systemctl start nginx
 - sudo systemctl enable nginx
 
Nginx 反向代理配置
- 关闭 Selinux
- vi etc/selinux/config
 - 修改 SELINUX=enforcing 为 SELINUX=disabled
 - 必须重启 linux init 6
 
 - 配置 firewalld 开启 80 端口
- firewall-cmd --zone=public --list-ports
 - firewall-cmd --zone=public --add-port=80/tcp --permanent
 
 - 配置反向代理
- 
找到 /etc/nginx/conf.d 然后在里面新建对应网站的配置文件

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

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;
    }
}
- 重启 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
- 证书类型
 
- 域名型 https 证书(DVSSL):信任等级一般,只需验证网站的真实性便可颁发证书保护网站;
 - 企业型 https 证书(OVSSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
 - 增强型 https 证书(EVSSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏
 
- 
创建证书

 
- 证书验证
 
- 配置 web 服务器
 
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;
    }











