Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

大纲

一、Tomcat 基本配置

1.为Tomcat提供SysV脚本 
2.catalina 脚本讲解 
3.telnet 登录管理Tomcat 
4.配置Tomcat虚拟主机 
5.Tomcat图形管理接口

  • manager 管理应用程序的部署及监控

  • host-manager 虚拟主机的管理

6.部署JSP网站案例

  • 布署JavaCenter Home(开源的SNS网站)

二、Nginx反向代理Tomcat服务器

1.Nginx将请求反向代理到后端Tomcat 
2.Nginx将图片缓存到本地 
3.Nginx将请求实现动静分离

注,实验环境说明,操作系统:CentOS 6.4 x86_64,软件版本:jdk-7u40、apache-tomcat-7.0.42、Nginx-1.4.2,博客中所用到的软件请到这里下载:http://yunpan.cn/QGBCLwrZnpLMS


一、Tomcat 基本配置

1.为Tomcat提供SysV脚本

注,在上一篇博文中我们已经演示安装了Tomcat,这里我们就不在演示,不清楚的博友可以参考这篇博文,http://freeloda.blog.51cto.com/2033581/1299644,在上一篇博文中我们没有增加,SysV脚本,在这篇博文中我们来增加一下,下面我们就来具体演示一下。

1
2
3
4
5
6
7
8
9
10
[root@tomcat ~] # vim /etc/init.d/tomcat
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
CATALINA_HOME= /usr/local/tomcat  #注意你的脚本路径
export  CATALINA_HOME
# export CATALINA_OPTS="-Xms128m -Xmx256m"
exec  $CATALINA_HOME /bin/catalina .sh $*

下面我们来增加执行权限,并加入服务列表设置开机自启动,

1
2
3
[root@tomcat ~] # chmod +x /etc/init.d/tomcat
[root@tomcat ~] # chkconfig --add tomcat
[root@tomcat ~] # chkconfig tomcat --list

tomcat 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

下面我们来启动一下Tomcat并测试一下,

1
2
3
4
5
6
[root@tomcat ~] # service tomcat start
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

查看一下启动的端口号,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@tomcat ~] # netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address        Foreign Address       State    PID /Program  name
tcp    0   0 0.0.0.0:22         0.0.0.0:*          LISTEN   1044 /sshd  
tcp    0   0 127.0.0.1:25        0.0.0.0:*          LISTEN   1121 /master 
tcp    0   0 127.0.0.1:6010       0.0.0.0:*          LISTEN   12988 /sshd 
tcp    0   0 127.0.0.1:6011       0.0.0.0:*          LISTEN   13053 /sshd 
tcp    0   0 :::8080           :::*            LISTEN   13088 /java 
tcp    0   0 :::22            :::*            LISTEN   1044 /sshd  
tcp    0   0 ::1:25           :::*            LISTEN   1121 /master 
tcp    0   0 ::1:6010          :::*            LISTEN   12988 /sshd 
tcp    0   0 ::1:6011          :::*            LISTEN   13053 /sshd 
tcp    0   0 ::ffff:127.0.0.1:8005    :::*            LISTEN   13088 /java 
tcp    0   0 :::8009           :::*            LISTEN   13088 /java

用浏览器访问一下,

测试效果

好了,到这里Tomcat的SysV脚本增加完成,下面我们来说一下catalina脚本。

2.catalina 脚本讲解

首先我们来查看一下这个脚本,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@tomcat bin] # catalina.sh -h
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR:  /usr/local/tomcat/temp
Using JRE_HOME:     /usr/java/jdk1 .7.0_40
Using CLASSPATH:     /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Usage: catalina.sh ( commands ... )
commands:
  debug       Start Catalina  in  a debugger
  debug -security  Debug Catalina with a security manager
  jpda start    Start Catalina under JPDA debugger
  run        Start Catalina  in  the current window
  run -security   Start  in  the current window with security manager
  start       Start Catalina  in  a separate window
  start -security  Start  in  a separate window with security manager
  stop       Stop Catalina, waiting up to 5 seconds  for  the process to end
  stop n      Stop Catalina, waiting up to n seconds  for  the process to end
  stop -force    Stop Catalina, wait up to 5 seconds and  then  use  kill  -KILL  if  still running
  stop n -force   Stop Catalina, wait up to n seconds and  then  use  kill  -KILL  if  still running
  configtest    Run a basic syntax check on server.xml - check  exit  code  for  result
  version      What version of tomcat are you running?
Note: Waiting  for  the process to end and use of the -force option require that $CATALINA_PID is defined

注,从帮助上来看,这个脚本使用还是挺简单的。下面我们来说几个常用的选项,

catalina.sh

  • start 启动Tomcat

  • stop 关闭Tomcat

  • configtest 测试配置文件是否有错

  • version 查看Tomcat版本

下面我们就来具体演示一下,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@tomcat ~] # catalina.sh configtest
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR:  /usr/local/tomcat/temp
Using JRE_HOME:     /usr/java/jdk1 .7.0_40
Using CLASSPATH:     /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
九月 21, 2013 11:08:26 下午 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library  which  allows optimal performance  in  production environments was not found on the java.library.path:  /usr/java/packages/lib/amd64 : /usr/lib64 : /lib64 : /lib : /usr/lib
九月 21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler [ "http-bio-8080" ]
九月 21, 2013 11:08:27 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler [ "ajp-bio-8009" ]
九月 21, 2013 11:08:27 下午 org.apache.catalina.startup.Catalina load
信息: Initialization processed  in  1269 ms

注,使用configtest选项时,得关闭Tomcat,不然会报错。

启动Tomcat,

1
2
3
4
5
6
[root@tomcat ~] # catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR:  /usr/local/tomcat/temp
Using JRE_HOME:     /usr/java/jdk1 .7.0_40
Using CLASSPATH:     /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar

关闭Tomcat,

1
2
3
4
5
6
[root@tomcat ~] # catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR:  /usr/local/tomcat/temp
Using JRE_HOME:     /usr/java/jdk1 .7.0_40
Using CLASSPATH:     /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar

查看Tomcat版本,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@tomcat ~] # catalina.sh version
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR:  /usr/local/tomcat/temp
Using JRE_HOME:     /usr/java/jdk1 .7.0_40
Using CLASSPATH:     /usr/local/tomcat/bin/bootstrap .jar: /usr/local/tomcat/bin/tomcat-juli .jar
Server version: Apache Tomcat /7 .0.42
Server built:  Jul 2 2013 08:57:41
Server number: 7.0.42.0
OS Name:    Linux
OS Version:   2.6.32-358.el6.x86_64
Architecture:  amd64
JVM Version:  1.7.0_40-b43
JVM Vendor:   Oracle Corporation

好了,catalina脚本,我们就说到这里了,下面我们来说一下telnet管理Tomcat。

3.telnet 登录管理Tomcat

注,在说telnet管理Tomcat之前,我们得先看一下默认的配置文件,这里面定义了默认的管理端口,

1
2
[root@tomcat ~] # vim /usr/local/tomcat/conf/server.xml
"8005" shutdown="SHUTDOWN">

说明,定义了一个管理端口为8005,我们可以用telnet直接登录进本机的8005端口,来执行SHUTDOWN命令,来关闭Tomcat实例。下面我们来具体演示一下,

先安装telnet客户端,

1
[root@tomcat ~]# yum install -y telnet

下面我们一测试并查看,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@tomcat ~]# telnet localhost 8005
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SHUTDOWN #输入SHOWDOWN就可以直接关闭Tomcat服务。
Connection closed by foreign host.
[root@tomcat ~]# netstat -ntulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address        Foreign Address       State    PID/Program name
tcp    0   0 0.0.0.0:22         0.0.0.0:*          LISTEN   1044/sshd  
tcp    0   0 127.0.0.1:25        0.0.0.0:*          LISTEN   1121/master 
tcp    0   0 127.0.0.1:6010       0.0.0.0:*          LISTEN   12988/sshd 
tcp    0   0 127.0.0.1:6011       0.0.0.0:*          LISTEN   13053/sshd 
tcp    0   0 :::22            :::*            LISTEN   1044/sshd  
tcp    0   0 ::1:25           :::*            LISTEN   1121/master 
tcp    0   0 ::1:6010          :::*            LISTEN   12988/sshd 
tcp    0   0 ::1:6011          :::*            LISTEN   13053/sshd

注,大家可以看到Tomcat服务器已经关闭。好了,telnet管理我们就说到这里,下面我们来说一下,Tomcat虚拟主机的配置。

4.配置Tomcat虚拟主机

注,在说Tomcat虚拟主机之前,咱们来详细的看看默认的配置文件,虽然在上一篇博客中全部有讲解,在这篇博客中我还是再和大家简单说一下,下面是默认配置文件。大家可以看到,绝大部分的配置文件是注释,包含在、全是注释。下面我们就来具体的看看,注释我们就不说了,说具体的定义的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
[root@tomcat ~]# cat /usr/local/tomcat/conf/server.xml
'1.0' encoding='utf-8'?>
"8005" shutdown="SHUTDOWN"#大家可以看到,这里是我们刚才讲解的,定义一个管理接口
 
 
 "org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
 
 "org.apache.catalina.core.JasperListener" />
 
 "org.apache.catalina.core.JreMemoryLeakPreventionListener" />
 "org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 "org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
 
 
  
  "UserDatabase" auth="Container"
       type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved"
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
       pathname="conf/tomcat-users.xml" />
 </GlobalNamingResources>
 
 "Catalina"#定义一个Service命令为Catalina
  
  
  
  "8080" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" /> #这里定义了一个连接器,协议为http,端口为8080,最大连接超时为20s,这里还定义了一个SSL的重定向端口8443。我们可以根据需要进行修改。一般我们都用80端口与443端口。
  
  
  
  
  
  "8009" protocol="AJP/1.3" redirectPort="8443" /> #这里定义了一个支持AJP协议的连接器。
  
  
  "Catalina" defaultHost="localhost"#这里定义了一个名为Catalina的引擎,并定义了一个默认主机为localhost。
   
   
   
   "org.apache.catalina.realm.LockOutRealm">
    
    "org.apache.catalina.realm.UserDatabaseRealm"
        resourceName="UserDatabase"/>
   </Realm>
   "localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true"#这里就是定义的虚拟主机。
    
    
    
    "org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log." suffix=".txt"
        pattern="%h %l %u %t "%r" %s %b" /> #这里定义了一个日志相关的属性。
   </Host>
  </Engine>
 </Service>
</Server>

好了,在这里我们又简单的说明一下,配置文件下面我们就来具体演示一下怎么配置虚拟主机。

首先,我们来修改一下配置文件,

[root@tomcat conf]# vim server.xml

#增加下面几行

1
2
3
4
"www.test.com" appBase="/web/webapp"
   unpackWARs="true" autoDeploy="true">
     "/" docBase="/web/webapp" reloadable="true"/>
</Host>

接下来我们来创建文档目录与测试页面,

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@tomcat ~]# mkdir -pv /web/webapp
[root@tomcat ~]# cd /web/webapp
[root@tomcat webapp]# vim index.jsp
 <head>
  
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
101
分享
相关文章
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
FastAPI-MCP是一款能将FastAPI应用端点自动转换为符合模型上下文协议(MCP)的开源工具,支持零配置自动发现接口并保留完整文档和模式定义。
348 71
FastAPI开发者福音!FastAPI-MCP:将FastAPI秒变MCP服务器的开源神器,无需配置自动转换!
阿里云服务器配置与云盘容量选择参考:实例规格、云盘等相关配置选择解析
对于初次接触云服务器的用户来说,面对众多配置选项和云盘容量选择,可能会不知道如何选择。有些用户甚至不清楚云服务器应该购买多大容量的云盘,也不知道哪一款配置的云服务器更适合自己的业务。本文将详细探讨这两个问题,并结合阿里云服务器的特点,为您提供一份云服务器配置与云盘容量选择指南,以供了解和选择参考。
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
69 13
阿里云服务器2核8G、4核16G、8核32G配置热门实例价格、性能与场景全攻略
2核8G/4核16G/8核32G配置的阿里云服务器在阿里云活动中目前有经济型e、通用算力型u1、通用型c7、通用型g8i和通用型g8y五种实例可选,虽然配置相同,但是这些实例规格之间的价格差别是很大的。面对不同配置和类型的云服务器实例,有的新手用户往往因为不知道他们之间的区别,所以不知道如何选择。本文将针对常见的2核8G、4核16G、8核32G配置,深入剖析阿里云服务器中的经济型e、通用算力型u1、通用型g7及通用型g8y实例,以供大家参考和选择。
在Ubuntu 18.04服务器上配置双网口以接入互联网
总结一下,配置双网口在Ubuntu 18.04服务器就像一场冒险游戏,你小心翼翼地从查看网络布局开始,铺设新线路,最后得到了通往互联网的双重通道。祝你在网络世界的冒险旅程中更上一层楼!
60 11
阿里云服务器配置怎么选择?根据用户类型及使用场景配置推荐
如何选择阿里云服务器配置?2025年全解析!个人用户可选68元/年的轻量应用服务器(2核2G、200M带宽),企业用户推荐199元/年的ECS通用算力型u1实例(2核4G、5M带宽)。针对不同需求,还有内存型、计算型、高主频型及GPU服务器等多规格实例。带宽选择需根据访问量,小流量应用3M即可,高流量建议10M起步。存储方面,系统盘40GB够用,数据盘按需选择ESSD或SSD云盘,确保I/O性能满足业务需求。阿小云为你整理最新攻略,助你高效选型!
阿里云服务器2核8G/4核16G/8核32G配置热门实例规格对比与选购指南
如果我们是计划购买2核8G/4核16G/8核32G配置的阿里云服务器,在阿里云活动中一般会有经济型e、通用算力型u1、通用型g7、通用型g8i和通用型g8y几种常见的实例规格可选,尽管这些实例在配置上相似,但它们在性能、价格以及适用场景上存在显著差异。本文将深入解析这些实例规格的性能特点、价格差异及适用场景,为用户在阿里云服务器购买时提供详实的参考依据。
阿里云经济型e实例云服务器评测:企业官网搭建的性价比之选
阿里云服务器经济型e实例可以用来搭建企业网站吗?云服务器作为搭建企业官网的基础设施,其性能、稳定性、成本等因素直接影响着官网的运营效果。阿里云经济型e实例云服务器作为一款性价比较高的产品,备受用户关注。许多企业在选择云服务器搭建官网时,都会将其纳入考虑范围。本文将详细探讨阿里云经济型e实例云服务器的特点、性能表现、稳定性与可靠性,以及成本考量,最终解答是否适合用它来搭建企业官网。
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
158 10
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等