CentOS使用Nginx反向代理Tomcat部署Java Web项目

2023-05-16

CentOS使用Nginx反向代理Tomcat部署Java Web项目


今天我舍友问我:CSDN是什么意思?床上等你吗?


文章目录

  • CentOS使用Nginx反向代理Tomcat部署Java Web项目
  • 一、安装Tomcat9.0
    • 1.配置Java环境
    • 2.安装Tomcat
  • 二、安装Nginx
    • 1. 编译工具及库文件
    • 2.安装PCRE
    • 3.安装Nginx
    • 4.编辑Nginx配置文件
  • 三.小结


一、安装Tomcat9.0

1.配置Java环境

先卸载系统自带的恶心人的openjdk,方法的话比较暴力,使用rpm找到所有java有关的包,一个一个卸载就可以了。

[raichu@localhost bin]$ rpm -qa | grep java
java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
[raichu@localhost bin]$ sudo yum remove java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64

一直卸载到rpm -qa | grep java什么都不显示为止。
然后从Java官网下载JDK,如果没有特殊要求的话就下载最新版吧,Tomcat的最新版和JDK最新版同时使用不会出现兼容问题

cd ~
wget https://download.oracle.com/otn/java/jdk/8u261-b12/a4634525489241b9a9e1aa73d9e118e6/jdk-8u261-linux-x64.tar.gz?AuthParam=1601028104_c08130b1af5d94a8e19e7cad46402807
#(需要登录才能下载)

好像wget下载下来之后的文件后面还是带着AuthParam,重命名一下之后就可以进行解压了

mv jdk-8u261-linux-x64.tar.gz\?AuthParam\=1601028104_c08130b1af5d94a8e19e7cad46402807 jdk-8u261-linux-x64.tar.gz
tar -zvxf jdk-8u261-linux-x64.tar.gz

然后配置环境变量

[raichu@localhost jdk1.8.0_261]$ sudo vim /etc/profile

在末尾追加以下内容(JAVA_HOME填jdk的实际位置,这里只是演示)

#java
export JAVA_HOME=/home/raichu/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin

保存并退出后执行

[raichu@localhost jdk1.8.0_261]$ source /etc/profile

查看java版本,看到现在java使用的已经不是恶心人的openjdk了

[raichu@localhost jdk1.8.0_261]$ java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

2.安装Tomcat

从官网下载tomcat最新版9.0,解压并进入文件夹

[raichu@localhost ~]$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.38/bin/apache-tomcat-9.0.38.tar.gz
[raichu@localhost ~]$ tar -zvxf apache-tomcat-9.0.38.tar.gz 
[raichu@localhost ~]$ cd apache-tomcat-9.0.38/bin
[raichu@localhost bin]$ ./startup.sh 
Using CATALINA_BASE:   /home/raichu/apache-tomcat-9.0.38
Using CATALINA_HOME:   /home/raichu/apache-tomcat-9.0.38
Using CATALINA_TMPDIR: /home/raichu/apache-tomcat-9.0.38/temp
Using JRE_HOME:        /home/raichu/jdk1.8.0_261
Using CLASSPATH:       /home/raichu/apache-tomcat-9.0.38/bin/bootstrap.jar:/home/raichu/apache-tomcat-9.0.38/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

其实到这儿如果不出错的话,tomcat已经在监听内网的8080端口了,我用的finalshell可以很清楚的看到java占用了内存和CPU,说明正常的运行了,如果出错,tomcat退出了,可以查看logs/catalina.out来检查错误报告
tomcat成功运行

二、安装Nginx

关于Nginx的安装我主要是借鉴的菜鸟教程

1. 编译工具及库文件

这步没啥好说的,用yum安装一下就可以。

sudo yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2.安装PCRE

依次执行下列命令,即可完成PCRE编译。最喜欢看执行configure和make的时候刷刷刷冒出来的代码了,很有大黑客的感觉

cd /usr/local/src/
su root
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar -zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install

执行完后,如果能正常显示PCRE版本即可

[raichu@localhost pcre-8.35]$ pcre-config --version
8.35

3.安装Nginx

还是从官网下载Nginx的源代码, 解压,配置,编译,不再赘述,如果上一步PCRE位置正确的话,这一步的配置代码可以直接复制。等待编译完成就算是成功安装了Nginx

cd /usr/local/src/
su root
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar -zvxf nginx-1.6.2.tar.gz
cd nginx-1.6.2.tar.gz/
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make && make install

安装后尝试显示一下版本

[root@localhost nginx-1.6.2]$ /usr/local/webserver/nginx/sbin/nginx -v
nginx version: nginx/1.6.2

为了以后便于操作nginx,我还建立了一个软连接,软连接可以通俗的理解成“快捷方式”,放到/usr/bin下便于直接输入nginx来调用nginx应用,而不是每次都要输入/usr/local/webserver/nginx/sbin/nginx,关于软连接详细的讲解可以看这篇文章

ln /usr/local/webserver/nginx/sbin/nginx /usr/bin

4.编辑Nginx配置文件

既然要进行反向代理,那还得说一下反向代理的原理。
关于正向代理,应该有一定的了解了。
代理服务器Proxy和用户Client建立连接后再请求服务器Server,通俗点说就是起到了隐藏用户Client的用途,或者说当Client和Server不能直接建立连接的时候起到桥梁的作用(科学上网就是基于这种原理来做的)
正向代理
而反向代理则是将整个过程反了过来,隐藏服务器server,很多时候需要反向代理都是因为服务器Server太弱小,其安全程度低或能力不够强,不足以直接和大量client进行连接,Proxy可以将请求分配到空闲的server上,并帮助server分担一些压力(例如Nginx代理静态资源,Tomcat只解析动态资源)。
反向代理

为了反向代理,我们需要让Nginx作为Proxy监听80端口,并将80端口的请求转发至内网的8080端口,来让Tomcat处理。我们可以先建立一个用户用于Nginx的服务

/usr/sbin/groupadd www 
/usr/sbin/useradd -g www www

然后配置nginx.conf

vi /usr/local/webserver/nginx/conf/nginx.conf

我只用了最简单的配置,简单的配置了8080端口的反向代理,关于这个文件的具体配置方法,网络上有很多教程。

user www www;#用户有关信息
worker_processes 1;#这里和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit;#错误文件目录和等级
pid /usr/local/webserver/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
        server
        {
                listen 80;
                location /{
                        proxy_pass http://127.0.0.1:8080;#反向代理的内网端口
                    	proxy_read_timeout 60;
                }
        }
}

配置好配置文件之后,可以使用Nginx引以为傲的热加载进行配置,使用nginx -t命令测试配置文件

[root@localhost raichu]$ nginx -t
nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

如果测试通过,就可以使用nginx -s reopen重启nginx服务,然后就可以尝试访问了,如果访问不了可能是防火墙的问题,可以尝试用lynx在ssh里去访问http://127.0.0.1:80 如果内网可以访问而外网无法访问,可以通过这个教程来打开80端口。

三.小结

使用Nginx反向代理的关键就在于写好Nginx的配置文件,其余的都是很基础的安装。除了Tomcat,Nginx也可以反向代理gunicorn这种Python服务器,方法类似,如果遇到任何问题,欢迎评论讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS使用Nginx反向代理Tomcat部署Java Web项目 的相关文章

  • 基于SpringBoot实现的小区物业管理系统(含文档)

    一 技术 框架 xff1a springboot xff0c mybatis xff0c html 工具 xff1a idea或者eclipse xff0c navicat 数据库 xff1a mysql 二 功能描述 1 系统管理 小区物
  • JPA 中的entityManager.createNativeQuery()

    在JPA 中的entityManager createNativeQuery sql 我们用来执行原生的sql xff0c 什么叫原生的sql xff0c 你写的这个sql呢 xff0c 放到数据库中拼接上参数就可以直接执行了 代码举例 s
  • SpringMVC配置详解以及工作流程

    1 SpringMVC配置详解 xff1a 配置激活 64 controller和 64 RequestMapping注解的语句配置静态资源过滤器配置视图解析器 xff0c 如果使用freemarker插件视图解析器的配置在后面实现文件上传
  • python两个服务器之间进行文件传输(转载)

    import os import paramiko class SSHConnection object def init self host port username pwd self host 61 host self port 61
  • linux服务器开机启动流程

    Linux服务器开机启动流程顺序 xff1a 通电 gt BIOS gt 主引导记录 xff08 MBR xff09 gt grub引导 gt 加载内核 gt init进程 gt 读取 etc inittab xff08 运行级别 xff0
  • CentOS7升级8及glibc更新尝试

    CentOS7升级8及glibc更新尝试 建国70周年 xff0c 想听我和我的祖国 xff0c 想着下载个网易云音乐 结果启动 xy 64 xycto netease cloud music 发现libgcc版本太低不支持 xff0c o
  • 消息队列3个面试题

    1 在何种场景下使用了消息中间件 xff1f 2 为什么要在系统里引入消息中间件 xff1f 3 如何实现幂等 xff1f 链式调用是我们在写程序时候的一般流程 xff0c 为了完成一个整体功能 xff0c 会将其拆分成多个函数 xff08
  • 华为开发者大会2019观后感

  • element 时间日期选择器限制选择至少7天,快捷选择回调使用methods内的方法

    template部分代码 lt el date picker append to body 61 34 false 34 64 change 61 34 dateChange1 34 v model 61 34 targetTime1 34
  • win7+Ubuntu18.04双磁盘双系统安装踩坑记录

    win7 43 Ubuntu18 04双磁盘双系统安装踩坑记录 重装双系统 之前安装的双系统不知道什么原因不能进入了 xff0c 只能进入win7系统 xff0c 试了很多办法后决定重装ubuntu 1 备份原始Ubuntu重要文件 进入w
  • 指针和函数

    指针和函数 1 形参改变不了实参的值 图1 图1 2 通过地址传递可以改变实参的值 xff1a 图2 注意 xff1a 在图1与图2 在定义函数参数中 a b前 星号 的有无 说明传递的是 实参的地址与实参的值 2 函数参数中如果有数组 都
  • 文件操作

    文件操作 1 文件分类 xff1a 文本文件 xff08 例 xff1a 记事本 xff09 二进制文件 xff08 例 xff1a 视频文件 xff09 xff0c 优点 xff1a 所占内存较小 操作文件地址的两种方式 xff1a 相对
  • 简易文本编辑器

    C语言QT开发简易文本编辑器 文件 xff1a 新建 打开 保存 另存为 推出 编辑 xff1a 撤销 赋值 粘贴 剪切 构架 xff1a 编译 帮助 xff1a 关于 删除下方对框栏 设置textexit全屏 先点击textedit 然后
  • 二叉树编程

    二叉树编程 span class token macro property span class token directive keyword define span CRT SECURE NO WARNINGS span span cl
  • 字符串

    字符串 目标 认识字符串下标切片常用操作方法 一 认识字符串 字符串是 Python 中最常用的数据类型 我们一般使用引号来创建字符串 创建字符串很简单 xff0c 只要为变量分配一个值即可 a span class token opera
  • 集合

    集合 目标 创建集合集合数据的特点集合的常见操作 一 创建集合 创建集合使用 或set xff0c 但是如果要创建空集合只能使用set xff0c 因为 用来创建空字典 s1 span class token operator 61 spa
  • 函数一

    文章目录 函数目标一 函数的作用二 函数的使用步骤2 1 定义函数2 2 调用函数2 3 快速体验 三 函数的参数作用四 函数的返回值作用4 1 应用 五 函数的说明文档5 1 语法5 2 快速体验 六 函数嵌套调用七 函数应用7 1 打印
  • 概率论的基本概念

    概率论的起源与发展 概率论产生于十六世纪十六世纪中叶 xff0c 卡当在赌博时研究不输的方法1654年 xff0c 德 美黑 合理分配赌注问题 1657年 xff0c 惠更斯 论机会游戏的计算 1933年 xff0c 柯尔莫哥洛夫 概率论的
  • java中的常量与变量

    常量 常量 xff1a 在程序运行期间 xff0c 固定不变的量 常量的分类 xff1a 1 字符串常量 xff1a 凡是用双引号引起来的部分 xff0c 叫做字符串常量 例如 xff1a abc Hello 123 2 整数常量 xff1
  • OA多级审批流程表设计方案以及开发思路(非常细节)

    OA office automation 想必大家都已不陌生 xff0c 甚至还非常熟悉 xff0c 是的没错 xff0c 本文就来讲解一下OA中的核心业务 xff0c 审批流程是如何一步步实现的 本文干货满满 建议静下心来细细品 被审核流

随机推荐

  • 异或交换两个数

    异或交换两个数 a和b是两个整数 xff0c 经过以下三次异或操作 xff0c 可以达到交换目的 xff1a a 61 a b b 61 a b a 61 a b 首先要理解 xff0c 什么是 异或 操作 二进制两数运算结果 xff1a
  • 二叉树算法框架思想

    二叉树算法设计的总路线 xff1a 明确一个节点要做的事情 xff0c 然后剩下的事抛给框架 span class token keyword void span span class token function traverse spa
  • Python3爬取淘宝网商品数据!

    分析淘宝网 这次选择的是淘宝网热卖而不是淘宝网 xff0c 二者虽然名字有不同 xff0c 但是数据还是一样的 xff0c 区别就在于前者把后者的所有店铺和商品的海量数据按照销售量 好评度 信誉度综合测评 重新计算 重新排序展现给买家的一个
  • 利用 Python 一键下载网易云音乐 10W+ 乐库

    如果你常听音乐的话 xff0c 肯定绕不开网易云 xff0c 作为一款有情怀的音乐 App xff0c 我对网易云也是喜爱有加 虽然说现在都已经是 5G 时代了 xff0c 大家的手机流量都绰绰有余 xff0c 但在线播放还是不如本地存着音
  • Python实现淘宝准点抢单!双十一秒杀神器啊!还不来学?

    一 ChromeDriver的安装 若想使用Selenium成功调用Chrome浏览器完成相应的操作 xff0c 需要通过ChromeDriver来驱动 我们在下载之前先来确认下我们使用的Chrome浏览器版本 只需要红框内几位相同即可 根
  • Python 爬虫:获取 JS 动态内容——应用宝搜索应用!

    1 1 Ajax 异步加载生成网页内容 现在越来越多的网页使用 Ajax 异步加载方式 xff0c 即网页中的一些内容由前端的 JS 动态生成 由于呈现在网页上的内容是由 JS 生成而来 xff0c 我们能够在浏览器上看到 xff0c 但是
  • Es的核心概念

    索引 xff08 Index xff09 一个索引就是一个拥有几分相似特征的文档的集合 比如说 xff0c 你可以有一个客户数据的 索引 xff0c 另一个产品目录的索引 xff0c 还有一个订单数据的索引 一个索引由一个名字来标识 xff
  • spark的结构化API

    1 结构化API概述 Apache Spark是一个用于大规模数据处理的快速 xff0c 可靠 xff0c 容错的分布式计算框架 Spark有两套基本的API xff08 Application Programming Interface
  • Linux的开机启动流程详解

    Linux系统的启动过程要比Windows系统启动过程复杂 xff0c 其过程可以分为5个阶段 xff1a 内核的引导 运行 init 系统初始化 建立终端 用户登录系统 1 内核引导 xff1a 在Windows系统中 xff0c 当计算
  • Warning: Stopping docker.service, but it can still be activated by: docker.socket

    目录 问题描述Warning Stopping docker service but it can still be activated by docker socket 原因解释 解决方案一解决方案二总结 问题描述 使用docker时 x
  • 最受推荐的10本C/C ++书籍

    链接 xff1a https hackr io blog 10 best c cpp books C和C 43 43 是世界上最流行的编程语言之二 C 43 43 是C语言的扩展 xff0c 这两门语言的潜力都是不可估量的 xff0c 这就
  • Centos安装Gnome Desktop

    Centos安装Gnome Desktop 目录 Centos安装Gnome Desktop1 安装 X Window System2 查看桌面3 安装GNOME Desktop4 运行桌面环境5 开机启动桌面环境6 重启系统 xff0c
  • zookeeper选举机制详解

    目录 1 什么是ZAB协议2 ZAB协议定义的四种节点状态3 集群上线时的Leader选举过程4 崩溃恢复时的Leader选举5 主从服务器之间的数据同步6 CAP 定理7 CAP 权衡8 BASE 理论9 集群节点数量最好奇数10 Zoo
  • Python -- 网络编程

    目录 1 网络通信的概念 2 IP地址 3 网络通信方式 3 1 直接通信 3 2 使用集线通信 3 3 通用交换机通信 3 4 使用路由器连接多个网络 3 5 复杂的通信过程 4 端口 4 1 端口号 4 2 知名端口号 4 3 动态端口
  • 一篇文章,详细教你怎么在Linux上编译安装MariaDB(10.6.4)

    快捷目录 MariaDBMariaDB简介MariaDB VS MySQL 教程说明编译说明安装依赖下载MariaDB源码Cmake编译初始化和配置1 设置用户2 初始化脚本3 设置参数4 注册服务和环境变量5 设置root用户注意 测试连
  • 【C++】面向对象高级编程(3):类与类之间的关系

    本文来自侯捷老师的课程和自己的理解形成的笔记 若有错误 xff0c 欢迎指出 C 43 43 类和类之间 xff0c 在侯捷老师的课程中 xff0c 一般被分为三种关系 复合关系 委托关系和继承关系 复合关系 xff1a 指类中包含另一些类
  • Linux远程图形化界面出错:MoTTY X11 proxy: Unsupported authorisation protocol

    远程使用图形化界面时出错 xff1a MoTTY X11 proxy Unsupported authorisation protocol 解决 xff1a cp root Xauthority home xxx Xauthority xx
  • (超详细)零基础如何学习操作系统---操作系统书籍推荐

    直接先给出路线书籍 编码 隐匿在计算机软硬件背后的语言 汇编语言 x86从实模式到保护模式 操作系统导论 操作系统真象还原 查漏补缺 1 编码 隐匿在计算机软硬件背后的语言 对于完全不懂计算机的朋友 xff0c 这本书可以让你对计算机有一个
  • 【LeetCode】《LeetCode 101》第七章:动态规划

    文章目录 7 1 算法解释7 2 基本动态规划 xff1a 一维70 爬楼梯 xff08 简单 xff09 198 打家劫舍 xff08 中等 xff09 413 等差数列划分 xff08 中等 xff09 7 3 基本动态规划 xff1a
  • CentOS使用Nginx反向代理Tomcat部署Java Web项目

    CentOS使用Nginx反向代理Tomcat部署Java Web项目 今天我舍友问我 xff1a CSDN是什么意思 xff1f 床上等你吗 文章目录 CentOS使用Nginx反向代理Tomcat部署Java Web项目一 安装Tomc