Skip to content

项目打包和自动化部署

nginx 安装和配置

安装 nginx

后续我们部署会使用 nginx,所以需要先安装一下 nginx:

shell
dnf install nginx

启动 nginx:

shell
systemctl start nginx
systemctl status nginx
systemctl enable nginx
systemctl restart nginx

配置 nginx

我们这里主要配置 nginx 的用户和默认访问目录:

配置用户:

nginx
user root;

通过 Linux 命令创建文件夹和文件:

shell
mkdir /root/mall_cms
cd /root/mall_cms
touch index.html

vi index.html

配置访问目录:

配置 centos

  1. 配置 setenforce 使得 nginx 可以使用其他文件夹作为目录页,配置之前,还要看看 nginx 的配置文件是否是用 root 用户进行操作的。

    shell
    # 临时关闭
    setenforce 0
    # 永久关闭
    vim /etc/selinux/config
    # 修改 selinux 配置文件,将SELINUX=enforcing改为SELINUX=disabled

配置防火墙相关

firewall-cmd --zone=public --add-ports=8080/tcp --permanent

修改防火墙的端口之后需要重启防火墙才会生效

配置防火墙 ,主要是配置端口,可以通过配置的端口进行访问,用于一个服务器多个项目

shell
 #进程与状态相关
 systemctl start firewalld.service           #启动防火墙
 systemctl stop firewalld.service            #停止防火墙
 systemctl restart firewalld.service
 systemctl status firewalld                  #查看防火墙状态
 systemctl enable firewalld             		#设置防火墙随系统启动
 systemctl disable firewalld                	#禁止防火墙随系统启动
 firewall-cmd --state                        #查看防火墙状态
 firewall-cmd --reload                       #更新防火墙规则
 firewall-cmd --list-ports                   #查看所有打开的端口
 firewall-cmd --list-services                #查看所有允许的服务
 firewall-cmd --get-services                 #获取所有支持的服务

 #区域相关
 firewall-cmd --list-all-zones                    #查看所有区域信息
 firewall-cmd --get-active-zones                  #查看活动区域信息
 firewall-cmd --set-default-zone=public           #设置public为默认区域
 firewall-cmd --get-default-zone                  #查看默认区域信息

   #接口相关
 firewall-cmd --zone=public --add-interface=eth0  #将接口eth0加入区域public
 firewall-cmd --zone=public --remove-interface=eth0       #从区域public中删除接口eth0
 firewall-cmd --zone=default --change-interface=eth0      #修改接口eth0所属区域为default
 firewall-cmd --get-zone-of-interface=eth0                #查看接口eth0所属区域

 #端口控制
 firewall-cmd --query-port=8080/tcp             # 查询端口是否开放
 firewall-cmd --add-port=8080/tcp --permanent               #永久添加8080端口例外(全局)
 firewall-cmd --remove-port=8800/tcp --permanent            #永久删除8080端口例外(全局)
 firewall-cmd --add-port=65001-65010/tcp --permanent      #永久增加65001-65010例外(全局)
 firewall-cmd  --zone=public --add-port=8080/tcp --permanent            #永久添加8080端口例外(区域public)
 firewall-cmd  --zone=public --remove-port=8080/tcp --permanent         #永久删除8080端口例外(区域public)
 firewall-cmd  --zone=public --add-port=65001-65010/tcp --permanent   #永久增加65001-65010例外(区域public)

使用 pm2 部署 node 的服务

安装 pm2 可以用于部署 node 服务,在关闭了终端连接后也可以运行 node 的程序

js
 npm i pm2 -g

使用 pm2 start serve.js --watch 开启服务,并配置监视 serve.js 修改后 pm2 自动重启

Nginx 配置 Https

  1. 前置条件,要查看 nginx 是否安装了 ssl 模块
  2. 使用 nginx -V(大写) 查看是否安装了 ssl 模块,如果出现的信息中包含了 configure arguments: –with-http_ssl_module,则说明已经安装了;
  3. 使用腾讯云或者是阿里云都可以,申请之后可以需要下载证书,解压打开后通常有 4 个文件:xxxx.crtxxxx..key (其他不重要);
  4. 使用复制文件的工具将这两个文件复制到 nginx 相关文件夹,只要能找到就可以;
  5. 修改 nginx.config 文件(证书的配置也在 config 文件里面)
nginx
server {
    #SSL 访问端口号为 443
    listen 443 ssl;
    #填写绑定证书的域名
    server_name cloud.tencent.com;
    #证书文件名称
    ssl_certificate cloud.tencent.com_bundle.crt;
    #私钥文件名称
    ssl_certificate_key cloud.tencent.com.key;
    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1.2 TLSv1.3;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    location / {
        #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
        root html;
        index  index.html index.htm;
    }
}

Nginx 配置 https 多个子域名

  1. 将主要的 nginx 配置好之后,可以使用代理转向原本的端口号
nginx
# nginx.conf
include ./conf.d/*.conf;  # 引入其他的配置项
server {
    listen 443 ssl;
    server_name  gmoai.com;
    root         /usr/share/nginx/html;

    ssl_certificate /etc/nginx/crt/gmoai.cn_bundle.crt;
    ssl_certificate_key /etc/nginx/crt/gmoai.cn.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout  5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    # Load configuration files for the default server block.
    #  include /etc/nginx/default.d/*.conf;

    location / {
      root /root/www/Home;
      index index.html;
    }
  # 配置转发
  location /excel/ {
      proxy_pass  http://localhost:8080/;
      proxy_redirect off;
  }

  location /music/ {
      proxy_pass  http://localhost:8001/;
      proxy_redirect off;
  }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

# all.conf
# http 重定向
server {
    listen 80;
    #填写绑定证书的域名
    server_name gmoai.cn;
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
}

# 原本只可以使用http + 端口号进行访问,现在可以通过nginx代理,使用https来进行访问,
server {
  listen       8080 default_server;
  listen       [::]:8080 default_server;
  server_name  _;
  root         /usr/share/nginx/html;

  location / {
    root /root/www/dealWithExcel;
    index index.html;
  }

}