【Linux】部署前后端分离项目---(Nginx自启,负载均衡)
目录
前言
一 Nginx(自启动)
2.1 Nginx的安装
2.2 设置自启动Nginx
二 Nginx负载均衡tomcat
2.1 准备两个tomcat
2.1.1 复制tomcat
2.1.2 修改server.xml文件
2.1.3 开放端口
2.2 Nginx配置
2.2.1 修改nginx.conf文件
2.2.2 重启Nginx服务
2.2.3 测试Nginx得结论
三 后端
3.1 将war包放置webapps下
3.2 导入SQL脚本
3.3 测试后端
四 前端
4.1 创建文件夹存储前端
4.2 解压前端
4.3 修改nginx.conf
4.4 配置映射关系
4.5 访问项目
前言
前一篇文章我们学习了部署单机项目其中包括了jdk,tomcat,mysql的安装,这一篇文章小编就不带大家进行安装了,直接从安装Nginx开始
上一篇文章:http://t.csdnimg.cn/UsK2P
一 Nginx(自启动)
前言:
Nginx作用图
从上图可以看出,让nginx负载多个tomcat从而访问数据库,这样能让更加的安全,如果一个服务器宕机了,还能使用另外一个服务器进行访问
2.1 Nginx的安装
先将Nginx的安装包放置到Linux中
1)下载并解压安装包
下载命令:wget http://nginx.org/download/nginx-1.13.7.tar.gz (有了可不需要)
解压命令:tar -xvf nginx-1.13.7.tar.gz (如下)
解压后:
2)一键安装4个依赖
命令执行:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
3)安装nginx
# 先进入安装包目录
命令:cd nginx-1.13.7 (安装包名根据自己的来)
# 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
命令: ./configure --with-http_stub_status_module --with-http_ssl_module
4) 安装
命令:make && make install
5)启动 nginx 服务
安装好的 nginx 服务在 /usr/local/nginx/sbin 下
cd /usr/local/nginx/sbin
# 启动
命令: ./nginx
虽然已经启动了,但我们也不知道到底启动成功没有。
6)#下载插件
yum install lsof
7) 查看Nignx是否启动
lsof -i:80
8) 设置防火墙开放 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
9) 跟新防火墙规则
firewall-cmd --reload
10) 查看开放端口号
firewall-cmd --reload && firewall-cmd --list-port
最后网址填写虚拟机地址访问Nginx
访问成功!
借鉴命令 可不操作
# 重启
./nginx -s reload
# 关闭
./nginx -s stop
# 或者,指定配置文件启动
./nginx -c /usr/local/nginx/conf/nginx.conf
2.2 设置自启动Nginx
先编辑etc下的rc.d/rc.local文件,点击i键处于编辑状态
1 vi /etc/rc.d/rc.local
再将nginx的启动命令位置复制上去,点击ESC,输入:wq保存并推出
2 /usr/local/nginx/sbin/nginx
3 修改完成之后,返回它的上一层目录rc.d 命令:../
4 进行给rc.local文件赋予权限: chmod 755 rc.local
二 Nginx负载均衡tomcat
让Nginx负载两个tomcat,后面我们用两个tomcat访问项目
2.1 准备两个tomcat
2.1.1 复制tomcat
① 先复制一个tomcat后缀名改名8081的,就知道这是一第二个tomcat
cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20-8081/
2.1.2 修改server.xml文件
进入根目下的server.xml文件,修改该tomcat的端口
处于tomcat目录中下使用下方命令
命令:vi conf/server.xml
按ESC键,输入:wq 保存并退出
2.1.3 开放端口
③ 开放8081端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
#跟新防火墙规则
firewall-cmd --reload
#防火墙列表
firewall-cmd --zone=public --list-ports
2.2 Nginx配置
2.2.1 修改nginx.conf文件
前面我们安装了Nginx,它会在我们的系统中自动生产nginx文件
左侧输入/usr/local/nginx/conf,双击nginx.conf
往里面添加相关的配置
①
upstream tomcat_list { #服务器集群名字
server 127.0.0.1:8080 weight=1; #服务器1 weight是权重的意思,权重越大,分配的概率越大。server 127.0.0.1:8081 weight=1; #服务器2 weight是权重的意思,权重越大,分配的概率越大
}②
注释一行 添加proxy_pass http://tomcat_list;
保存按Ctrl+s,点击Yes即可
2.2.2 重启Nginx服务
再输入systemct restart nginx重启Nginx服务,让配置生效
或者进入 /usr/local/nfinx/sbin 目录下重启
./nginx -s reload
2.2.3 测试Nginx得结论
浏览器输入IP地址加上:8080/8081,进行切换测试
如果不加:8080/8081,默认也会访问其中一个端口,将其中一个tomcat停掉,也能进行访问服务器,直到被人攻击宕机或其它原因才会无法访问服务器
三 后端
3.1 将war包放置webapps下
① 第一个tomcat8080
② 第二个tomcat8081
3.2 导入SQL脚本
连接服务器,连接MySQL并导入相关的脚本
3.3 测试后端
进行测试后端
8080端口访问服务器结果:
8081访问服务器结果:
四 前端
4.1 创建文件夹存储前端
[root@localhost local]# mkdir mypro
[root@localhost local]# cd mypro/
4.2 解压前端
解压要使用unzip命令,要下载,输入:
yum install -y unzip
再进行解压: 所要解压的前端包名根据自己的来
unzip blog.zip
解压之后,会有一个dist文件,复制该dist路径
4.3 修改nginx.conf
重新进入nginc.conf文件中进行修改,
/usr/local/nginx/conf,双击nginx.conf
① server_name www.zking.com; #当前服务的域名(虚拟域名也可以)
root /usr/local/mypro/dist; #将要访问的网站的根目录,nginx节点会自动继承父节点的配置;这里放到/usr/local/*,放到其他路径下会有权限相关问题;必要的时候配置Nginx.conf的user为root
② # 代理配置
location / {
#该句代码是为解决history路由不能跳转的问题,在vue-router官网有介绍
try_files $uri $uri/ /index.html;
}
location ^~/api/ {
#^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api
proxy_pass http://tomcat_list/;
}
4.4 配置映射关系
主机Ctrl+r,输入C:\Windows\System32\drivers\etc,编辑hosts中增加映射关系
虚拟机地址+映射地址如:192.168.244.141 www.zking.com
如下图
以管理员身份打开命令提示符或PowerShell:
如果无法编辑该hosts文件,是权限不够
解决办法:
①管理员运行终端
按下Win + X
组合键,然后选择“终端管理员”或“Windows PowerShell(管理员)”。
再进入C:\Windows\System32\drivers\etc
② 更改文件的所有权:
使用takeown
命令将文件的所有权更改为当前用户。例如,要将hosts
文件的所有权更改为当前用户,可以运行以下命令:
takeown /f "C:\Windows\System32\drivers\etc\hosts" |
③ 更改文件的权限:
使用icacls
命令来更改文件的权限,给予当前用户完全控制权限。例如:
icacls "C:\Windows\System32\drivers\etc\hosts" /grant 用户名:F |
将用户名
替换为你的Windows用户名
不知道用户名的话,ctrl+r输入cmd进入终端
再输入命令echo %username%,获得用户名
解决之后再去编辑hosts文件,配置我们的映射关系 Ctrl+s保存
4.5 访问项目
如下的动态图,当我关掉一个8081的端口,我也能进行访问项目
不关掉两个端口的话,都可以进行访问我们的项目
相关文章:

【Linux】部署前后端分离项目---(Nginx自启,负载均衡)
目录 前言 一 Nginx(自启动) 2.1 Nginx的安装 2.2 设置自启动Nginx 二 Nginx负载均衡tomcat 2.1 准备两个tomcat 2.1.1 复制tomcat 2.1.2 修改server.xml文件 2.1.3 开放端口 2.2 Nginx配置 2.2.1 修改nginx.conf文件 2.2.2 重启Nginx服务 2…...

WPF Style样式设置
1.本window设置样式 <Window x:Class"WPF_Study.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressi…...

【STM32】软件SPI读写W25Q64芯片
目录 W25Q64模块 W25Q64芯片简介 硬件电路 W25Q64框图 Flash操作注意事项 状态寄存器 编辑 指令集 INSTRUCTIONS编辑 编辑 SPI读写W25Q64代码 硬件接线图 MySPI.c MySPI.h W25Q64 W25Q64.c W25Q64.h W25Q64_Ins.h main.c 测试 SPI通信(W25…...

普通中小学校管理信息系统V1.1
普通中小学校管理信息系统 Ordinary Primary and Secondary Schools Management Information System 普通中小学校管理信息系统 Ordinary Primary and Secondary Schools Management Information System...
中国水果采摘机器人行业市场研究及发展趋势分析报告
全版价格:壹捌零零 报告版本:下单后会更新至最新版本 交货时间:1-2天 第一章 2016-2026年中国水果采摘机器人行业总概 1.1 中国水果采摘机器人行业发展概述 机器人技术的发展是一个国家高科技水平和工业自动化程度的重要标志和体现。机器…...
Linux多进程与信号
在多进程的服务程序中,如果子进程收到退出信号,子进程自行退出。如果父进程收到退出信号,应该先向全部的子进程发送退出信号,然后自己再退出。 演示demo程序 #include <iostream> // 包含输入输出流库,用于输…...
Self-attention与Word2Vec
Self-attention(自注意力)和 Word2Vec 是两种不同的词嵌入技术,用于将单词映射到低维向量空间。它们之间的区别: Word2Vec: Word2Vec 是一种传统的词嵌入(word embedding)方法,旨在为…...

【Flutter/Android】运行到安卓手机上一直卡在 Running Gradle task ‘assembleDebug‘... 的终极解决办法
方法步骤简要 查看你的Flutter项目需要什么版本的 Gradle 插件: 下载这个插件: 方法一:浏览器输入:https://services.gradle.org/distributions/gradle-7.6.3-all.zip 方法二:去Gradle官网找对应的版本:h…...
医疗实施-客户需求分析
在我的日常系统实施过程中,总会遇到不同角色的客户提出不同类别的需求。有的需求,客户目的想提高操作便携,但会对系统稳定性存在风险,应该拒掉。有些需求紧急而且影响重大,应该紧急处理。有些需求可以做,但…...

调度服务看门狗配置
查看当前服务器相关的sqlserver服务 在任务栏右键,选择点击启动任务管理器 依次点击,打开服务 找到sqlserver 相关的服务, 确认这些服务是启动状态 将相关服务在看门狗中进行配置 选择调度服务,双击打开 根据上面找的服务进行勾…...

AI时代 编程高手的秘密武器:世界顶级大学推荐的计算机教材
文章目录 01 《深入理解计算机系统》02 《算法导论》03 《计算机程序的构造和解释》04 《数据库系统概念》05 《计算机组成与设计:硬件/软件接口》06 《离散数学及其应用》07 《组合数学》08《斯坦福算法博弈论二十讲》 清华、北大、MIT、CMU、斯坦福的学霸们在新学…...

【数据结构和算法初阶(c语言)】数据结构前言,初识数据结构(给你一个选择学习数据结构和算法的理由)
1.何为数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。本质来讲就是在内存中去管理数据方式比如我们的增删查改。在内存中管理数据的方式有很多种(比如数组结构、链式结构、树型结…...

LeetCode 0235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点)
【LetMeFly】235.二叉搜索树的最近公共祖先:用搜索树性质(不遍历全部节点) 力扣题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公…...

【Prometheus】概念和工作原理介绍
目录 一、概述 1.1 prometheus简介 1.2 prometheus特点 1.3 prometheus架构图 1.4 prometheus组件介绍 1、Prometheus Server 2、Client Library 3、pushgateway 4、Exporters 5、Service Discovery 6、Alertmanager 7、grafana 1.5 Prometheus 数据流向 1.6 Pro…...

四川易点慧电子商务有限公司抖音小店:可靠之选,购物新体验
在当今这个网络购物日益盛行的时代,选择一家可靠的电商平台成为了消费者最为关心的问题之一。四川易点慧电子商务有限公司抖音小店作为新兴的电商力量,凭借其独特的魅力和优势,正逐渐成为众多消费者心中的可靠之选。 易点慧电子商务有限公司在…...

SpringBoot自带的tomcat的最大连接数和最大的并发数
先说结果:springboot自带的tomcat的最大并发数是200, 最大连接数是:max-connectionsaccept-count的值 再说一下和连接数相关的几个配置: 以下都是默认值: server.tomcat.threads.min-spare10 server.tomcat.threa…...

TLS1.2抓包解析
1.TLS1.2记录层消息解析 Transport Layer SecurityTLSv1.2 Record Layer: Handshake Protocol: Client HelloContent Type: Handshake (22)Version: TLS 1.0 (0x0301)Length: 253Content Type:消息类型,1个字节。 i 0Version:协议版本&…...

使用两个队列实现栈
在计算机科学中,栈是一种数据结构,它遵循后进先出(LIFO)的原则。这意味着最后一个被添加到栈的元素将是第一个被移除的元素。然而,Java的标准库并没有提供栈的实现,但我们可以使用两个队列来模拟一个栈的行…...

通过ffmpeg实现视频背景色替换
最近遇到一个需求,希望可以将素材视频的绿幕背景替换为指定的颜色,然后通过裁剪,拼接等处理制作一个新的视频。所以替换背景色成为了重要的一环,看能否通过ffmpeg来实现。通过一番搜索尝试,发现方案可行。下面我整理一…...

后轮位置反馈控制与算法仿真实现
文章目录 1. 后轮反馈控制2. 算法原理3. 算法和仿真实现 1. 后轮反馈控制 后轮反馈控制(Rear wheel feedback)算法是利用后轮中心的跟踪偏差来进行转向控制量计算的方法,属于Frenet坐标系的一个应用。通过选择合适的李雅普诺夫函数设计控制率…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...