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

一、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、访问

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lvsDR模式

LVS-DR模式 是最常用的LVS负载方式 直接路由模式 Lvs调度器 只负责请求和转发 转发到真实服务器 但是响应结果 由后端服务器直接转发给客户端 不需要经过调度器处理 可以减轻Lvs调度器的负担 提高系统性能和稳定性 工作原理: 客户端发送请求到vipLVS调度器接受请求…

miniconda快速安装

目录 一、Linux下miniconda安装 1.1、安装 1.2、miniconda初始化 二、Windows下miniconda安装 三、maOS下miniconda安装 3.1、安装 3.2、miniconda初始化 四、参考: 本文给出windows、macos、linux下快速安装miniconda方法。 对比conda,minicond…

光学仿真|优化汽车内部照明体验

当我们谈论优化人类感知的内部照明时,我们实际上指的是两个重点领域:安全性和驾驶员体验。如果内部照明可以提供尽可能最佳的体验,驾驶员则能够更好地应对颇具挑战性或意外的驾驶状况,并且减轻疲劳感。除了功能优势外,…

【Servlet】 一

本文主要介绍了如何在tomcat部署一个webapp 以及 如何借助maven用servlet编写一个hello world . 一.Tomcat Tomcat是一个Java里广泛使用的http服务器 HTTP服务器有很多实现,其中最知名的是Nginx;而在Java里,最知名的是Tomcat 一个Tomcat服务…

【K8S】二进制安装

常见的K8S安装部署方式 ●Minikube Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。 部署地址:https://kubernetes.io/docs/setup/minikube ●Kubeadm☆ Kubeadm也是一个工具,提…

LInux之在同一Tomcat下使用不同的端口号访问不同的项目

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《LInux实战开发》。🎯🎯 …

Vue入门——核心知识点

简介 Vue是一套用于构建用户界面的渐进式JS框架。 构建用户界面:就是将后端返回来的数据以不同的形式(例如:列表、按钮等)显示在界面上。渐进式:就是可以按需加载各种库。简单的应用只需要一个核心库即可,复杂的应用可以按照需求…

transformers-AutoClass

https://huggingface.co/docs/transformers/main/en/autoclass_tutorialhttps://huggingface.co/docs/transformers/main/en/autoclass_tutorialAutoClass可以自动推断和加载给定checkpoint的正确架构。 对于文本,使用Tokenizer将文本转换为token序列,创…

IDEA中application.properties文件中文乱码

现象: 原因: 项目编码格式与IDEA编码格式不一致导致的 解决办法: 在File->Settings->Editor->File Encodings选项中,将Global Encoding,Project Encoding,Default encoding for properties files这三个选项置为一致&a…

通过netstat命令查看Linux的端口占用

一、netstat 完整写作network statistics,简写为netstat ,常用的几个参数为l、n、t、u、p。 -l : 仅展示监听状态下的程序(state 为LISTEN)。 -n :会使用ip端口的方式,来进行地址的描述。不使用-n就会变成服务器的名称…

毕业设计基于SpringBoot+Vue智慧云办公系统源码+数据库+项目文档

智慧云办公管理系统 一、系统简介 智慧云办公系统是一个采用SpringBootVue技术开发的前后端分离的项目,云办公系统通过软件的方式,方便快捷处理中小型企业的公司日常事务,能够提高整体的管理运营水平,使得办公更加高效方便&…

随想录一刷·数组part1

你好&#xff0c;我是安然无虞。 文章目录 1. 二分查找题型2. 移除元素题型 1. 二分查找题型 二分查找传送门 class Solution { public:int search(vector<int>& nums, int target) {// 在有序数组中查找第一时间想到二分查找int left 0, right nums.size() - 1…

虚拟机部署与发布J2EE项目(Linux版本)

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.jdk安装配置 打开虚拟机 Centos 登入账号&#xff0c;并且使用MobaXterm进行连接 1.1. 传入资源 连接…

单元化架构的思考

银行业“多活”的发展历程 受监管政策的要求&#xff0c;银行一般会在同城、异地或者多地进行数据中心建设&#xff0c;以保证系统的稳定运行&#xff0c;但从目前实际情况来看&#xff0c;“同城双活”目前仍是很多银行采用的主要形式。银行业的“多活”架构在发展过程中存在三…

Stable Diffusion WebUI扩展openpose-editor如何使用

先上地址: GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webuiOpenpose Editor for AUTOMATIC1111s stable-diffusion-webui - GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webu…

高校教务系统登录页面JS分析——天津大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍天津大学教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密…

第2篇 机器学习基础 —(4)k-means聚类算法

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。聚类算法是一种无监督学习方法&#xff0c;它将数据集中的对象分成若干个组或者簇&#xff0c;使得同一组内的对象相似度较高&#xff0c;不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域…

Prometheus+Grafana

一、Prometheus 获取配置文件 docker run -d -p 9090:9090 --name prometheus prom/prometheusmkdir -p /app/prometheusdocker cp prometheus:/etc/prometheus/prometheus.yml /app/prometheus/prometheus.yml停止并删除旧的容器&#xff0c;重新启动 docker run -d --name…

什么是NPM(Node Package Manager)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

sort的第三个参数与priority_queue的第三个模板参数

sort 在C的标准库中&#xff0c;std::sort是一个用于对容器的元素进行排序的算法。它接受三个参数&#xff1a; 1、需要排序的容器的起始迭代器&#xff08;包含&#xff09;。 2、需要排序的容器的结束迭代器&#xff08;不包含&#xff09;。 3、可选参数&#xff0c;用于指…