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

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

图1.png

搭建 Nodejs 生产环境


  1. 下载 nodejs 二进制代码包,然后减压到 /usr/local/nodejs
  2. 配置环境变量
    • vi /etc/profile
    • 最后面添加:
      • export NODE_HOME=/usr/local/nodejs/bin
      • export PATH=NODE_HOME: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 源
  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 然后在里面新建对应网站的配置文件


      图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 转发到了 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 然后在里面新建对应网站的配置文件

图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. 创建证书


    图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 来访问。

图2.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342