【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

news2024/11/29 7:46:01

一、Nginx导言

1、引言

        Nginx 是一款高性能的 Web 服务器和反向代理服务器,也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展,因此在互联网领域得到了广泛的使用。

总结出以下三点:

  1. 负载均衡:流量分摊
  2. 反向代理:处理外网访问内网问题
  3. 动静分离:判断动态请求还是静态请求,选择性的访问指定服务器

2、使用场景

  1. Web 服务器:通过 Nginx 部署 Web 服务可以提升服务器的并发处理能力,降低响应延时和网络请求影响,同时支持多种负载均衡算法,能根据实际情况自动分配流量。

  2. 反向代理服务器:Nginx 可以作为反向代理服务器,实现多个后端服务器的负载均衡,并且可以根据实际情况分配请求,有效提升后端服务器的并发处理能力。

  3. HTTP 缓存:Nginx 的 HTTP 缓存机制可以将经常访问的 Web 页面、图片、视频等静态资源缓存在本地,提高响应速度,降低服务器负载。

  4. 安全防护设备:Nginx 可以通过配置实现 Web 应用的访问控制、DOS 攻击防护、IP 黑名单等功能。

3、Nginx的使用

        Nginx 的使用和部署项目需要注意的是,在部署项目之前,你需要了解你的项目的具体需求,并根据实际情况配置 Nginx。同时,确保服务器已经正确配置防火墙规则以允许对应的访问端口。此外,建议备份配置文件和项目文件,以防止意外情况发生。

        流程如下:

  1. 安装 Nginx:首先需要在服务器上安装 Nginx。具体的安装方法会因服务器操作系统的不同而有所不同,你可以参考 Nginx 官方文档或操作系统相关的教程进行安装。

  2. 配置 Nginx:安装完成后,需要对 Nginx 进行配置。主要包括设置监听端口、配置服务代理、设置负载均衡、配置缓存等。Nginx 的配置文件位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。你可以根据实际需求进行相应的修改。

  3. 启动 Nginx:配置完成后,通过终端命令或者服务管理工具启动 Nginx,比如通过执行 sudo service nginx start 或 /etc/init.d/nginx start 来启动 Nginx。

  4. 部署项目:将项目文件放置在 Nginx 的 Web 根目录下,根据需要创建对应的子目录。默认情况下,Nginx 的 Web 根目录在配置文件中的 root 参数指定,一般是 /usr/share/nginx/html 或 /var/www/html

  5. 配置项目访问:根据项目的需求,可以在 Nginx 的配置文件中添加对应的站点配置。主要包括设置域名和端口、指定访问路径、配置 HTTPS、设置访问权限等。

  6. 重启 Nginx:项目部署完成后,需要重新加载 Nginx 的配置文件使其生效。通过执行 sudo service nginx restart 或 /etc/init.d/nginx restart 重新启动 Nginx

  7. 测试访问在浏览器中输入 Nginx 服务器的 IP 地址或域名,加上对应的访问路径,如果能够正常访问项目页面,则说明部署成功

二、Nginx安装

1、安装依赖

一键安装4个依赖,执行命令等待安装完成!

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2、下载解压安装包

如果你下载好了可以用客户端工具拖拽进去

没有下载好就执行以下命令,记得在你的放置的目录下执行。

下载命令:wget http://nginx.org/download/nginx-1.13.7.tar.gz
解压命令:tar -xvf nginx-1.13.7.tar.gz

3、安装nginx

1、进入解压后的目录进行安装:cd /nginx-1.13.7/

2、编译,执行配置: 考虑到后续安装ssl证书 添加两个模块 等待加载完成!
命令:./configure --with-http_stub_status_module --with-http_ssl_module

3、安装,等待安装完成!
命令:make && make install

4、启动

进入 /usr/local/nginx/sbin/ 目录下启动:cd /usr/local/nginx/sbin/

启动:./nginx

重启:./nginx -s reload

关闭:./nginx -s stop

或者,指定配置文件启动:./nginx -c /usr/local/nginx/conf/nginx.conf

5、测试

安装lsof插件

命令:yum install -y lsof

安装完成,使用命令:lsof -i:80

6、设置防火墙端口 80

启动防火墙:systemctl start firewalld

设置端口 80:firewall-cmd --zone=public --add-port=80/tcp --permanent

设置端口 8081:firewall-cmd --zone=public --add-port=8081/tcp --permanent

更新防火墙规则:firewall-cmd --reload

防火墙列表:firewall-cmd --zone=public --list-ports

firewall-cmd --reload && firewall-cmd --list-port

7、访问

使用我们的IP路径访问可以看到

三、tomcat负载均衡

1、准备工作

确保你的tomcat的/apache-tomcat-8.5.20/webapps/里面没有任何不属于的项目及文件

2、准备2个tomcat

准备两个tomcat,在你的根目录里面执行以下命令

命令 复制:cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/

3、修改端口

进入第二个tomcat/conf里面server.xml文件进行端口的修改

编辑文件:vim server.xml

为了避免两个的tomcat冲突,我们在这些地方都+1

  1. HTTP端口,默认8080,如下改为8081
  2. 远程停服务端口,默认8005,如下改为8006
  3. AJP端口,默认8009,如下改,8010

4、测试端口

我们在两个tomcat里面分别启动  ./startup.sh

5、服务器的集群

进入 cd /usr/local/nginx/conf/ 里面编辑nginx.conf文件

编辑:vim nginx.conf

添加以下代码

    #服务器的集群
    upstream  tomcat_list {  #服务器集群名字
        server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
        server    127.0.0.1:8081  weight=2; #服务器2   weight是权重的意思,权重越大,分配的概率越大
    } 

在里面注释root,添加proxy_pass http://tomcat_list/;

进入/usr/local/nginx/sbin/:cd ../sbin/

重启nginx:./nginx -s reload

最后我们直接访问我们的IP地址可以看到

如果有一个服务器tomcat停掉了一个,就只会用另外一个了

四、后端接口部署

1、导入项目启动

  1. 用我们的客户端工具在我们两个tomcat中webapps文件夹里面都放入我们的war包
  2. 如果你的两个tomcat都是开启的状态我们在两个tomcat里面停止运行./shutdown.sh
  3. 然后我们再开启两个tomcat服务器./startup.sh
  4. MySQL的数据可以查看【Linux】Linux项目部署及更改访问端口号。

2、测试

我们访问我们的端口数据

五、前端部署

1、前端打包

1.1、简介

SPA(Single Page Application)是一种运行在单个页面上的 Web 应用程序,主要采用 JavaScript、Ajax 等技术动态加载页面内容,提供像桌面应用程序一样的用户体验。将前端 SPA 进行打包主要是为了加快页面的加载速度,减少资源请求次数,保证前端应用的快速响应。

1.2、步骤

  1. 再打包之前记得运行一遍你的项目,以便出意外的麻烦操作。(确保项目运行没问题)
  2. 在spa前端项目里面的config/index.js里面build里面修改assetsPublicPath
  3. 。在build/utils.js里面添加publicPath
  4. 在你的前端spa项目的目录里面cmd进入命令窗口。
  5. 在命令窗口输入命令:npm run build
  6. 在目录里面可以看到dist文件,里面是我们打包好的前端项目。

2、前端部署

2.1、导入\解压文件

  1. /usr/local/里面新建一个文件夹mypro放入自己的前端项目zip
  2. 进入mypro里面
  3. 解压前端
    1. 安装解压插件:yum install -y unzip
    2. 解压:unzip blog.zip

2.2、配置

/usr/local/nginx/conf/编辑nginx.conf文件。

静态资源配置

root 的路径改成你解压的文件路径;注释proxy_pass

动态资源配置

在下面添加保存;^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api

	location  ^~/api/ {
		proxy_pass http://tomcat_list/;
	}

进入:cd /usr/local/nginx/sbin/

重启nginx :./nginx -s reload

访问IP地址可以看到我们的前端

2.3、加载映射关系

看你的项目请求路径是什么,如果你的项目请求路径是对应的我们就可以不用修改

我们进入我们主机的C:\Windows\System32\drivers\etc\hosts文件进行编辑配置,配置我们项目访问对应的访问路径配置成我们服务器对应的IP地址

2.4、访问

这样我们的主机就能访问了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

作物模型--土壤数据制备过程

作物模型–土壤数据制备过程 首先打开FAO网站 下载下面这两个 Arcgis打开.bil文件 .mdb文件在access中转成.xls格式 Arcgis中对.bil文件定义投影

进口跨境商城源码的技术要点和优化策略

随着全球电子商务的快速发展,进口跨境商城已成为一种新型的商业模式。为了满足消费者日益增长的需求,提高商城的运营效率和用户体验,对进口跨境商城源码进行技术优化显得尤为重要。本文将探讨进口跨境商城源码的技术要点和优化策略。 一、背景…

Prometheus+Node_exporter+Grafana实现监控主机

PrometheusNode_exporterGrafana实现监控主机 如果没有安装相关的配置,首先要进行安装配置,环境是基于Linux,虚拟机的相关环境配置在文末给出,现在先讲解PrometheusNode_exporterGrafana的安装和使用。 一.Prometheus安装 虽然…

后端设计PG liberty的作用和增量式生成

Liberty(俗称LIB和DB),是后端设计中重要的库逻辑描述文件,这里边包含了除过physical(当然也有一点点涉及)以外所有的信息,对整个后端设计实现有非常大的作用。借此机会,一起LIB做一个…

半导体精密划片机在行业中适合切割哪些材料?

在高端精密切割划片领域中,半导体材料需要根据其特性和用途进行选择。划片机适用于多种材料,包括硅片、石英、氧化铝、氧化铁、砷化镓、铌酸锂、蓝宝石和玻璃等。这些材料在半导体行业被广泛使用,包括在集成电路、半导体芯片、QFN、发光二极管…

【R统计】各式各样的插补法解决数据缺失的问题!

💂 个人信息:酷在前行👍 版权: 博文由【酷在前行】原创、需要转载请联系博主👀 如果博文对您有帮助,欢迎点赞、关注、收藏 订阅专栏🔖 本文收录于【R统计】,该专栏主要介绍R语言实现统计分析的…

创新方案|2023如何用5种新形式重塑疫后实体门店体验

在电商盛行的当下,线上购物已成为新零售的重要组成部分,实体零售业正处于两难境地。一方面,实体零售是绝对有必要的:美国约 85% 的销售额来自实体商店。 另一方面,尽管增长放缓,但电商收入占销售总额的比例…

【蓝桥杯 第十届省赛Java B组】真题训练(A - H)H待更新

目录 A、组队 - 看图一眼出答案 B、不同子串 - 字符串模拟 set去重 C、数列求值 - 模拟取余 D、数的分解 - 三重暴力 E、迷宫 - bfs 判断路径 F、特别数的和 - 弱智模拟 G、外卖店优先级 - map 暴力(90%通过率) H、人物相关性分析 - A、组队 -…

Ant Design Vue Table 表格内容高度自适应+固定表头踩坑

前言 对于非专业前端开发者来使用 Ant Design UI 组件来开发企业级后台管理系统来说是非常不错的选择,但这并不意味着我们能够用好这个框架,因为 UI 交互上和有许多细节上的问题对于非专业前端来说并不容易解决,最近在使用 Table 组件时就遇…

实战:基于TC3XX STM模块的时间片程序开发

1. 前言 STM模块,全称为系统定时器模块,可以看作是汽车ECU中的一个计时器。STM模块能够精确地测量和跟踪时间。 在ECU软件中,STM模块通常用于创建定期任务,比如每10毫秒执行一次的任务。这就像是一个闹钟,每隔10毫秒就会响一次,提醒ECU执行某个特定的任务。 这里的10m…

分享3个适合大学生使用的白板笔记软件,学习效率蹭蹭上涨!

现如今许多大学生不在使用纸和笔进行做笔记了,通通改成了各种笔记软件,如何选择一个好用的笔记软件,是当代大学生较为头疼的事,小编今天通过这篇文章,为你推荐3款宝藏级笔记软件,大家一定要收藏好&#xff…

18.自监督视觉`transformer`模型DINO

文章目录 自监督视觉`transformer`模型DINO总体介绍DINO中使用的SSL和KD方法multicrop strategy损失函数定义`teacher`输出的中心化与锐化模型总体结构及应用reference欢迎访问个人网络日志🌹🌹知行空间🌹🌹 自监督视觉transformer模型DINO 总体介绍 论文:1.Emerging …

变融启程 视界已破——“新主流·新未来”四川广播电视台战略分享会在成都举行

2023年11月1日下午,2024年度“新主流新未来”四川广播电视台战略分享会在成都举行。从三年前的“变融”开启融合、转型之路,到两年前以“进化”应对变化探索媒体融合之路,再到去年塑造“新视界”全屏聚合传播矩阵,四川广播电视台不…

MIT6.5830 Lab1-GoDB实验记录(四)

MIT6.5830 Lab1-GoDB实验记录(四) – WhiteNights Site 标签:Golang 读写缓冲区我是一点思路都没有,所以得单独开篇文章记录。 实验补充 了解buffer、序列化与反序列化 这里的序列化,简单来说类似于把一个很长的字符…

C/C++ sizeof

介绍 sizeof 是一个关键字、操作符,也是一个编译时运算符 作用:返回一个对象或者类型所占的内存字节数 使用方法 sizeof(type_name);//sizeof(类型) sizeof(object);//sizeof(对象) 注意: sizeof 操作符不能用于函数类型,不…

爆肝将近 10 万字讲解 Node.Js 详细教程

1. Node.Js 环境概述 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用于在服务器端运行 JavaScript。它使用了一个事件驱动、非阻塞式I/O的模型,使得其轻量且高效。Node.js 的包管理器 npm 是全球最大的开源库生态系统。Node.js 能够响应大…

Java架构师知识产权与标准化

目录 1 导学2 知识产权概述3 保护期限4 知识产权人的确定4 侵权判断5 标准划分想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 知识产权概述 知识产权是指公民、法人、非法人单位对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依…

AI“走深向实”,蚂蚁蚁盾在云栖大会发布实体产业「知识交互建模引擎」

数字化起步晚、数据分散稀疏、专业壁垒高、行业知识依赖「老师傅」,是很多传统产业智能化发展面临的难题。2023年云栖大会上,蚂蚁集团安全科技品牌蚁盾发布“知识交互建模引擎”,将实体产业知识与AI模型有机结合,助力企业最快10分…

二进制基础

最近开始入坑系统安全大坑,调转方向开始了解pwn,那就要补一些那少得可怜的底层基础啦 先学几个单词: exploit:用于攻击的脚本与方案payload:攻击载荷,是目标进程被劫持控制流的数据(精心构造的…

Python画图之HelloKitty

Python-turtle画出HelloKitty(有趣小游戏) 一、效果图二、安装库1.常用镜像源2.库下载 三、Python代码 一、效果图 二、安装库 1.常用镜像源 1. 豆瓣http://pypi.douban.com/simple/ 2. 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple…