Appearance
项目打包和自动化部署
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
配置 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
- 前置条件,要查看 nginx 是否安装了 ssl 模块
- 使用 nginx -V(大写) 查看是否安装了 ssl 模块,如果出现的信息中包含了 configure arguments: –with-http_ssl_module,则说明已经安装了;
- 使用腾讯云或者是阿里云都可以,申请之后可以需要下载证书,解压打开后通常有 4 个文件:xxxx.crt,xxxx..key (其他不重要);
- 使用复制文件的工具将这两个文件复制到 nginx 相关文件夹,只要能找到就可以;
- 修改 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 多个子域名
- 将主要的 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;
}
}