一、安装准备
1、系统要求
最低要求 | |
---|---|
CPU | 支持 64 位的 Intel® 或 AMD 处理器*;2 GHz 或速度更快的处理器 |
内存 | 16 GB 或更大 RAM(推荐使用 16 GB) |
硬盘 | 需要 50GB 以上的可用磁盘空间 |
操作系统 | CentOS 7 或更高版本 |
2、软件要求
- 宝塔面板
- Nginx
- Keepalived
一、环境设置
1、设置镜像源
因为国外镜像网速较慢,推荐设置阿里云镜像源:https://opsx.alibaba.com/mirror
1.1、备份
[root@dsb ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
1.2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
[root@dsb ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
[root@dsb ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1.3、之后运行yum makecache生成缓存
2、配置静态IP
通常在/etc/sysconfig/network-scripts
目录下都会有 ifcfg-eth0
格式文件,修改该文件内容:
[root@dsb ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
主要修改BOOTPROTO="static"
、ONBOOT="yes"
,并增加 IPADDR
、NETMASK
、GATEWAY
、DNS1
。
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="5b07acd3-b8bf-4a9e-b471-8e6330f2b622"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.1.102
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=119.29.29.29
ZONE=public
重启网卡
[root@dsb ~]# service network restart
三、服务安装
2、部署前端
2.1、前端打包
本项目采用前后端分离模式开发,前端打包可要求前端工程师,进行项目打包操作。
2.2、前端部署
在“宝塔面板”的“网站”功能添加站点,此处以“dsb.tianyin.com”域名为示例,根目录指向 /www/wwwroot/dsb-ui
然后上传打包好的前端项目到 /www/wwwroot/dsb-ui
目录
设置站点为“默认站点”
点击站点名称进行,Nginx配置:
在原有配置增加下面内容:
负载配置:
upstream gateways {
#server 192.168.1.110:8080 weight=5;
server 192.168.1.110:8080 weight=5;
}
Nginx代理配置:
proxy_connect_timeout 30; #Nginx服务器与被代理的服务器建立连接的超时时间 默认60秒
proxy_read_timeout 10; #Nginx服务器被想被代理服务器组发出read请求后,等待响应的超时时间,默认60秒
proxy_send_timeout 30; #Nginx服务器想被代理服务器组发出write请求后,等待响应的超时时间,默认60秒
proxy_ignore_client_abort on ; # 客户端断网时,Nginx服务器是否终结对代理服务器的请求,默认off
location ~ /dsb/ {
# 没有配置OPTIONS的话,浏览器如果是自动识别协议(http or https),那么浏览器的自动OPTIONS请求会返回不能跨域
if ($request_method = OPTIONS ) {
add_header Access-Control-Allow-Origin "$http_origin";
add_header Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, DELETE";
add_header Access-Control-Max-Age "3600";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
add_header Access-Control-Allow-Credentials "true";
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
add_header Access-Control-Allow-Origin "$http_origin";
add_header Access-Control-Allow-Credentials "true";
add_header Access-Control-Allow-Methods "GET, PUT, POST, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Content-Type,*";
rewrite ^/dsb/(.*)$ /$1 break;
proxy_pass http://gateways;
#proxy_pass http://192.168.3.10:8080;
}
最终配置文件如下:
upstream gateways {
#server 192.168.1.110:8080 weight=5;
server 192.168.1.110:8080 weight=5;
}
server
{
listen 80;
server_name dsb.tianyin.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/dsb-ui;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/dsb.tianyin.com.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log off;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log off;
access_log /dev/null;
}
proxy_connect_timeout 30; #Nginx服务器与被代理的服务器建立连接的超时时间 默认60秒
proxy_read_timeout 10; #Nginx服务器被想被代理服务器组发出read请求后,等待响应的超时时间,默认60秒
proxy_send_timeout 30; #Nginx服务器想被代理服务器组发出write请求后,等待响应的超时时间,默认60秒
proxy_ignore_client_abort on ; # 客户端断网时,Nginx服务器是否终结对代理服务器的请求,默认off
location ~ /dsb/ {
# 没有配置OPTIONS的话,浏览器如果是自动识别协议(http or https),那么浏览器的自动OPTIONS请求会返回不能跨域
if ($request_method = OPTIONS ) {
add_header Access-Control-Allow-Origin "$http_origin";
add_header Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, DELETE";
add_header Access-Control-Max-Age "3600";
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept, Authorization";
add_header Access-Control-Allow-Credentials "true";
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
add_header Access-Control-Allow-Origin "$http_origin";
add_header Access-Control-Allow-Credentials "true";
add_header Access-Control-Allow-Methods "GET, PUT, POST, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Content-Type,*";
rewrite ^/dsb/(.*)$ /$1 break;
proxy_pass http://gateways;
#proxy_pass http://192.168.3.10:8080;
}
access_log /www/wwwlogs/dsb.tianyin.com.log;
error_log /www/wwwlogs/dsb.tianyin.com.error.log;
}
- upstream 中的IP指的是网关的节点IP
- 这里做了跨域处理,前端和前端访问的接口均通过这个Nginx,负载到各个网关节点,可根据实际情况调整网关节点数
2.3、前端效果
作者:Jeebiz 创建时间:2019-10-13 16:47
更新时间:2023-01-09 16:42
更新时间:2023-01-09 16:42