Linux之安装Nginx、前后端分离项目部署

目录

一、安装Nginx

1.1先一键安装4个依赖

1.2下载并解压安装包

1.3安装nginx,一般我们在nginx都是要安装ssl证书的

1.4 启动nginx服务

1.5开放80端口

1.6配置nginx自启动

1.7修改/etc/rc.d/rc/local的权限

二、多个tomcat负载加后端部署

2.1创建多个tomcat

2.2均衡负载

2.3部署后端

三、前端部署

3.1在/usr/local目录里创建一个文件夹

3.2进入nginx的conf目录里

3.3重启服务器


一、安装Nginx

1.1先一键安装4个依赖

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

1.2下载并解压安装包

wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz -C /usr/local/java/

1.3安装nginx,一般我们在nginx都是要安装ssl证书的


# 进入安装包目录
cd nginx-1.13.7
# 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
# 安装编译一下,一般我们编译完后/usr/local/
make && make install

1.4 启动nginx服务

安装好的 nginx 服务在 /usr/local/nginx 下:
 
进入 /usr/local/nginx/sbin 目录下启动:
# 启动
./nginx
 
# 重启
./nginx -s reload
 
# 关闭
./nginx -s stop
 
# 或者,指定配置文件启动
./nginx -c /usr/local/nginx/conf/nginx.conf
 
其它:
yum install lsof(给来查询端口占用)
lsof -i:80
kill -9 pid

1.5开放80端口

  1. #开放端口

  2. firewall-cmd --zone=public --add-port=80/tcp --permanent

  3. #更新防火墙规则

  4. firewall-cmd --reload

  5. #防火墙列表

  6. firewall-cmd --zone=public --list-ports

启动成功

1.6配置nginx自启动

vim /etc/rc.d/rc.local

把服务目录配置进去

/usr/local/nginx/sbin/nginx

1.7修改/etc/rc.d/rc/local的权限

  1. cd /etc/rc.d/

  2. chmod 755 rc.local

二、多个tomcat负载加后端部署

2.1创建多个tomcat

安装好tomcat之后在tomcat跟目录复制一个或者多个,我是复制了2个一个8081一个8082

然后去刚刚复制好的8081跟8082端口的tomcat,改一下端口,端口不能重复最简单的方法就是+1

最后把所有的tomcat都启动,再开放端口

#开发端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --zone=public --add-port=8082/tcp --permanent
#更新防火墙规则
firewall-cmd --reload
#防火墙列表
firewall-cmd --zone=public --list-ports

2.2均衡负载

首先去到Nginx的目录cd /usr/local/nginx/conf/

修改在里面有一个文件叫nginx.conf,但是不建议直接vim修改

按照上面的操作找到nginx.conf直接修改

我有3个tomcat就放了3个集群

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

最后反向代理

proxy_pass http://tomcat_list;

重启nginx

./nginx -s reload

测试Nginx负载3个tomcat的效果

# 来回切换tomcat:8080、tomcat:8081两个服务器的类容
http://192.168.195.139/
# 停掉1个tomcat
发现还是可以访问项目

负载成功

2.3部署后端

把项目放进tomcat下面的webapps目录里

创建数据库跟导入数据要统一

回到tomcat的bin目录下,需要先把每个tomcat停掉,在依次重新启动一下./startup.sh

部署成功

三、前端部署

3.1在/usr/local目录里创建一个文件夹

把前端项目放进这个文件夹里

进行下载

yum install -y unzip

解压

unzip blog.zip

3.2进入nginx的conf目录里

 cd /usr/local/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/;
    }

在C:\Windows\System32\drivers\etc\hosts里面增加映射关系

3.3重启服务器

cd ../sbin

./nginx -s reload

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

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

相关文章

论文设计任务书学习文档|基于Vue.js的库存管理系统的设计与实现

文章目录 论文(设计)题目:基于Vue.js的库存管理系统的设计与实现1、论文(设计)的主要任务及目标2、论文(设计)的主要内容3、论文(设计)的基本要求4、进度安排论文(设计)题目:基于Vue.js的库存管理系统的设计与实现 1、论文(设计)的主要任务及目标 基于Vue.js的…

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II LeetCode(491)递增子序列 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; im…

【Web】青少年CTF擂台挑战赛 2024 #Round 1 wp

好家伙,比赛结束了还有一道0解web题是吧( 随缘写点wp(简单过头,看个乐就好) 目录 EasyMD5 PHP的后门 PHP的XXE Easy_SQLi 雏形系统 EasyMD5 进来是个文件上传界面 说是只能上传pdf,那就改Content-Type为application/pdf,改…

使用R语言进行Logistic回归分析(2)

一、数据集描述,问题要求 下表是40位肺癌病人的生存资料,X1表示生活行为能力平分(1到100),X2为病人的年龄(年),X3由诊断到进入研究的时间(月),X4…

【Android开发】01-第一个Android APP

一、改MainActivity class MainActivity : AppCompatActivity() {/*因Android的app有生命周期,故入口是OnCreate而不是main函数*/override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main…

Unity编写Shader内置各种矩阵和方法介绍

嗨,各位小伙伴们,我是你们的好朋友咕噜铁蛋!今天,我们要来聊一聊关于Unity中编写Shader时内置的各种矩阵和方法。作为Unity开发者,掌握Shader编写是非常重要的一项技能,而了解内置的矩阵和方法将帮助我们更…

LeetCode383. 赎金信(C++)

LeetCode383. 赎金信 题目链接代码 题目链接 https://leetcode.cn/problems/ransom-note/description/ 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int record[26] {0};if(ransomNote.size() > magazine.size()) return fa…

利用networkx做固定坐标的样例图

图技术 利用neo4j、networkx、dgl、python做图分析挖掘 【1】最短路径算法dijkstra 【2】基于networkx的隐性集团关系识别模型 【3】基于Neo4j的担保社群型态分析挖掘 【4】基于python求有向无环图中target到其他节点全路径 【5】有向图中任意两点的路径 【6】图基础入门 【7】…

c++之运算符,程序流程结构

运算符 作用&#xff1a;用于执行代码的运算 1算术运算符 作用&#xff1a;用于处理四则运算 下面我们用代码展示&#xff1a; #include<iostream> using namespace std; int main() {//加减乘除int a1 10;int b1 3;cout <<" a1 b1 "<< a1…

Python小白必学的面向对象

我们已经知道在Python中“一切皆对象”&#xff0c;每个对象都有特定的类型&#xff0c;现在让我们来尝试创建自己的类型——这需要使用class关键字来定义新的“类”&#xff08;Class&#xff09;&#xff0c;类是用来生成对象的“模板”&#xff0c;对象则是其所属类的“实例…

Codeforces Round 930 (Div. 2)(A~B)补题

Codeforces Round 930 Div. 2 A. Shuffle Party1、模拟过程2、代码 B. Binary Path1、过程模拟2、代码 A. Shuffle Party A. Shuffle Party A. Shuffle Partytime limit per test: 1 secondmemory limit per test: 256 megabytesinput: standard inputoutput: standard outpu…

2024年3月2日 十二生肖 今日运势

小运播报&#xff1a;2024年3月2日&#xff0c;星期六&#xff0c;农历正月廿二 &#xff08;甲辰年丙寅月乙丑日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;鸡、蛇、鼠 需要注意&#xff1a;狗、马、羊 喜神方位&#xff1a;西北方 财神方位&#xff1a;东…

【刷题】位运算

消失的两个数字 消失的两个数字 “单身狗”进阶版思路 class Solution { public:vector<int> missingTwo(vector<int>& nums) {int ret 0;int n nums.size();for(int i 0; i < n; i){ret ^ (nums[i] ^ i);}ret ^ (n ^ (n 1) ^ (n 2));// 按位异或的…

基于SpringBoot的综合小区管理系统的设计与实现

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Linux 安装k8s

官网 常见的三种安装k8s方式 1.kubeadm 2.kops&#xff1a;自动化集群制备工具 3.kubespray&#xff1a; 提供了 Ansible Playbook 下面以kubeadm安装k8s kubeadm的安装是通过使用动态链接的二进制文件完成的&#xff0c;目标系统需要提供 glibc ##使用 ss 或者 netstat 检测端…

.halo勒索病毒的最新威胁:如何恢复您的数据?

尊敬的读者&#xff1a; 随着科技的发展&#xff0c;网络安全已经成为我们日常生活中不可忽视的重要议题。其中&#xff0c;勒索病毒是当前网络安全威胁中的一大挑战&#xff0c;而“.halo”勒索病毒更是近期备受关注的恶意软件之一。本文将介绍关于“.halo”勒索病毒的背景知…

循环简介和基本运算符

根据C Primer Plus第五章进行学习 文章目录 循环简介基本运算符 1.赋值运算符&#xff1a;2.加法运算符&#xff1a;3.减法运算符&#xff1a;-2.乘法运算符&#xff1a;*总结 1.循环简介 如下代码可以体现不使用循环的局限性&#xff1a; #include<stdio.h> #define AD…

【C语言】linux内核xmit_one函数

一、中文注释 static int xmit_one(struct sk_buff *skb, struct net_device *dev,struct netdev_queue *txq, bool more) {unsigned int len;int rc;// 如果全局ptype列表或者设备特定的ptype列表不为空&#xff0c;则执行网络接口层网络层的NIT&#xff08;Network Tap&…

【C++】vector的使用及其模拟实现

这里写目录标题 一、vector的介绍及使用1. vector的介绍2. 构造函数3. 遍历方式4. 容量操作及空间增长问题5. 增删查改6. vector二维数组 二、vector的模拟实现1. 构造函数2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效问题5. 浅…

docker 基础(二)

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档&#xff1a;https://docs.docker.com/ 数据卷 命令说明文档地址docker volume create创建数据卷docker volume createdocker volume ls创建数据卷docker volume lsdocker volume rm查看所有数…