Tomcat--企业级web应用服务器详细介绍与整合Nginx配置流程

前情提要:本篇博客将介绍Tomcat,以及Tomcat的部署和与Nginx的整合,利用Tomcat实现负载均衡的全流程。

一、Tomcat介绍

Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat 具有处理HTML页面的功能,它还是一个Servlet和JSP容器。

起始于SUN 公司的一个Servlet的参考实现项目Java Web Server,开发者是 James Duncan Davidson,在1999年,将项目贡献给了apache软件基金会(ASF),和ASF现有的项目JServ 合并,并开源成为顶级项目。

二、Tomcat的安装部署

推荐从Apache官网下载源码包直接安装启动

1、安装java环境

bash 复制代码
#安装java环境
[root@RS1 ~]# yum install java-1.8.0-openjdk.x86_64 -y

#查看java版本
[root@RS1 ~]# java -version
openjdk version "1.8.0_402"
OpenJDK Runtime Environment (build 1.8.0_402-b06)
OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)

#查看java的环境目录
[root@RS1 ~]# which  java
/usr/bin/java
[root@RS1 ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jul 30 10:41 /usr/bin/java -> /etc/alternatives/java

#java的运行环境
[root@RS1 ~]# cd /etc/alternatives/jre
[root@RS1 jre]# ls
ASSEMBLY_EXCEPTION  bin  lib  LICENSE  THIRD_PARTY_README

2、安装tomcat

bash 复制代码
[root@RS1 ~]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.115/bin/apache-tomcat-9.0.115.tar.gz
[root@RS1 ~]# tar zxf apache-tomcat-9.0.115.tar.gz  -C /usr/local
[root@RS1 ~]# cd /usr/local/
[root@RS1 local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src  tomcat-9.0-doc
[root@RS1 local]# mv apache-tomcat-9.0.115/ tomcat
[root@RS1 local]# cd tomcat/
[root@RS1 tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work



[root@RS1 bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@RS1 bin]# netstat -antlupe | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      0          139291     10372/java

3、制作tomcat的启动脚本

bash 复制代码
[root@RS1 bin]# vim /usr/local/tomcat/conf/tomcat.conf
JAVA_HOME=/etc/alternatives/jre
[root@RS1 bin]# vim /lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target

[Service]
Type=forking
EnvironmentFile=/usr/local/tomcat/conf/tomcat.conf
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

[root@RS1 bin]# useradd  -s /sbin/nologin -M tomcat

[root@RS1 bin]# chown  tomcat.tomcat /usr/local/tomcat/ -R
[root@RS1 bin]# systemctl daemon-reload
[root@RS1 bin]# systemctl enable --now tomcat
[root@RS1 bin]# netstat -antlupe | grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       139979     10682/java
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       140563     10682/java

三、结合反向代理实现tomcat的部署

3.1 常见部署方式介绍

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。
  • 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代 理给Tomcat
    • LNMT:Linux + Nginx + MySQL + Tomcat
    • LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat
  • 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更 适合
    • LNMT:Linux + Nginx + MySQL + Tomcat
  • 多级代理
    • LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

3.2 利用nginx反向代理实现

注意:后续实验需要一台nginx服务主机,可见博主上一篇文章nginx的介绍

利用nginx反向代理功能,实现图中的代理功能,将用户请求全部转发至指定的同一个tomcat主机

利用nginx指令proxy_pass 可以向后端服务器转发请求报文,并且在转发时会保留客户端的请求报文中的 host首部

bash 复制代码
[root@nginx conf.d]# cd /usr/local/nginx/conf/conf.d/
[root@nginx conf.d]# vim vhosts.conf
server {
    listen 80;
    server_name app.doubledragon.org;
    location ~* \.jsp$ {
        proxy_pass http://172.25.254.10:8080;
    }
}

[root@RS1 ~]# cp test.jsp  /usr/local/tomcat/webapps/ROOT/
[root@RS1 ~]# scp test.jsp  root@172.25.254.20:/usr/local/tomcat/webapps/ROOT/

[root@nginx conf.d]# nginx  -s reload


#在windows中设定app.doubledragon.org的解析
#在浏览器中访问 app.doubledragon.org/test.jsp

然后访问对应的域名下的test.jsp即可成功跳转

四、tomcat负载均衡

nginx主机中编写子配置文件

bash 复制代码
[root@Nginx conf.d]# vim vhosts.conf
upstream tomcat {
    hash $cookie_JSESSIONID;
    server 172.25.254.10:8080;
    server 172.25.254.20:8080;
}
server {
    listen  80;
    server_name app.doubledragon.org;
    location ~* \.jsp$ {
        proxy_pass http://tomcat;
    }
}
[root@Nginx conf.d]# nginx  -s reload

#在windows浏览器中访问 app.doubledragon.org/test.jsp;
#在windows的另外一个浏览器中访问 app.doubledragon.org/test.jsp;

然后不同浏览器访问即可发现实现了负载均衡

相关推荐
明月_清风1 小时前
Service Worker 和 Workbox 分别是什么?它们有什么区别?
前端·pwa
A.A呐1 小时前
【Linux第十章】进程控制
linux
程序哥聊面试2 小时前
TypeScript 入门
前端·javascript·typescript
糟糕喔2 小时前
k8s运维-pod篇(1)
云原生·容器·kubernetes
亿元程序员2 小时前
俄罗斯方块谁不会做......啊?流沙版?
前端
我是Superman丶2 小时前
Nginx反向代理流式输出延迟?一招解决SSE/WebSocket缓冲问题SpringBoot+SSE流式输出卡住?Nginx这个配置必须关!
运维·websocket·nginx
开开心心就好2 小时前
内存清理软件灵活设置,自动阈值快捷键清
运维·服务器·windows·pdf·harmonyos·risc-v·1024程序员节
bai_lan_ya2 小时前
嵌入式linux学习--makefile的使用以及通用解析
开发语言·前端·javascript
waves浪游2 小时前
库制作与原理(上)
linux·运维·服务器·开发语言·c++