Tomcat

本文详细介绍Tomcat的安装、配置、JSPgou商城部署、性能调优及故障排查等关键步骤,涵盖JVM内存优化、并发设置、运行模式调整,并介绍Nginx代理配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些
特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和
Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web
server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。

二、Tomcat 重要目录

/bin - Tomcat  脚本存放目录(如启动、关闭脚本)。 *.sh 文件用于 Unix 系统; *.bat 文件用于 Windows 系
统。
/conf - Tomcat   配置文件目录。
/logs - Tomcat   默认日志目录。
/webapps - webapp   运行的目录

 

三、web工程发布目录结构

一般web项目路径结构

一般 web 项目路径结构
# 站点根目录
|-- webapp
|-- META-INF # META-INF 目录
| # 配置清单文件
`-- MANIFEST.MF
|-- WEB-INF # WEB-INF 目录
| |-- classes # class文件目录
| | |-- *.class # 程序需要的 class 文件
| | `-- *.xml # 程序需要的 xml 文件
| |-- lib # 库文件夹
| | # 程序需要的 jar 包
| `-- web.xml
`-- *.jar
# Web应用程序的部署描述文件
|-- <userdir> # 自定义的目录
|-- <userfiles> # 自定义的资源文件

webapp :工程发布文件夹。其实每个 war 包都可以视为 webapp 的压缩包。
META-INF :META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成。
WEB-INF :Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。
/WEB-INF/classes :存放程序所需要的所有 Java class 文件。
/WEB-INF/lib :存放程序所需要的所有 jar 文件。
/WEB-INF/web.xml :web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组成应用的
其它组件,以及应用初始化参数、安全管理约束等。

下载安装JDK

[root@localhost ~]# wget --no-cookies --no-check-certificate --header "Cookie:
gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie"
"http://download.oracle.com/otn-pub/java/jdk/8u162-
b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.rpm"
[root@localhost ~]# rpm -ivh jdk-8u162-linux-x64.rpm
Preparing...
################################# [100%]
Updating / installing...
1:jdk1.8-2000:1.8.0_162-fcs
################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@localhost ~]#
[root@localhost ~]# ll /usr/java/
total 0
lrwxrwxrwx 1 root root
16 Mar 30 17:54 default -> /usr/java/latest
drwxr-xr-x 9 root root 268 Mar 30 17:54 jdk1.8.0_162
lrwxrwxrwx 1 root root
22 Mar 30 17:54 latest -> /usr/java/jdk1.8.0_162
[root@localhost ~]#
[root@localhost ~]# alternatives --config java
(保证java是最新的162版本)
There is 1 program that provides 'java'.
Selection
Command
-----------------------------------------------
*+ 1
/usr/java/jdk1.8.0_162/jre/bin/java
Enter to keep the current selection[+], or type selection number:
[root@localhost ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
[root@localhost ~]#

配置启动tomcat

[root@localhost ~]# useradd work
[root@localhost ~]# mv apache-tomcat-9.0.6.tar.gz /tmp/
[root@localhost ~]# su - work
[work@localhost ~]$ tar xfz /tmp/apache-tomcat-9.0.6.tar.gz
[work@localhost ~]$ ls
apache-tomcat-9.0.6
[work@localhost ~]$ ln -s apache-tomcat-9.0.6/ tomcat
[work@localhost ~]$ ls
apache-tomcat-9.0.6
tomcat
[work@localhost ~]$ cd tomcat/
[work@localhost tomcat]$ ls
bin
conf
lib
LICENSE
logs
NOTICE
RELEASE-NOTES
RUNNING.txt
temp
webapps
work
[work@localhost tomcat]$ bin/startup.sh
Using CATALINA_BASE: /home/work/tomcat
Using CATALINA_HOME: /home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
Tomcat started.
[work@localhost tomcat]$ ps -ef | grep java
work
2251
1 90 05:42 pts/2
00:00:05 //bin/java -
Djava.util.logging.config.file=/home/work/tomcat/conf/logging.properties -
Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -
Djdk.tls.ephemeralDHKeySize=2048 -
Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -
classpath /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-juli.jar -
Dcatalina.base=/home/work/tomcat -Dcatalina.home=/home/work/tomcat -
Djava.io.tmpdir=/home/work/tomcat/temp org.apache.catalina.startup.Bootstrap start
work
2300
2108
0 05:42 pts/2
00:00:00 grep --color=auto java
[work@localhost tomcat]$ lsof -i:8080
COMMAND
java
PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
2251 work 49u IPv6
[work@localhost tomcat]$

Tomcat逻辑结构

tomcat/conf/server.xml 结构如下:

<Server>
    <Service>
        <Connector />
        <Engine>
            <Host>
                <Context> </Context>
            </Host>
        </Engine>
    </Service>
</Server>

处理流程:用户发送请求到web服务器,该请求会被正在监听的Connector连接器接收,并把该请求交给Service下
的Engine来处理,并等待Engine处理的结果。Engine获得请求后会根据请求的主机信息来匹配相应的Host主机,
Host主机会根据请求的路径匹配对应的Context,Context web应用匹配上之后就构建request、response请求对
象,调用指定的Servlet来处理请求。请求处理完成后会将response对象返回给Host主机,Host主机将response对
象返回给Engine引

安装配置mysql

[root@localhost ~]# mkdir mysql
[root@localhost ~]# tar xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar -C mysql
[root@localhost ~]# cd mysql/
[root@localhost mysql]# ls
mysql-community-client-5.7.21-1.el7.x86_64.rpm
mysql-community-common-5.7.21-1.el7.x86_64.rpm
mysql-community-devel-5.7.21-1.el7.x86_64.rpm
mysql-community-embedded-5.7.21-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.21-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.21-1.el7.x86_64.rpm
mysql-community-libs-5.7.21-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.21-1.el7.x86_64.rpm
mysql-community-server-5.7.21-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.21-1.el7.x86_64.rpm
mysql-community-test-5.7.21-1.el7.x86_64.rpm
[root@localhost mysql]# rm mysql-community-server-minimal-5.7.21-1.el7.x86_64.rpm mysql-
community-test-5.7.21-1.el7.x86_64.rpm mysql-community-minimal-debuginfo-5.7.21-
1.el7.x86_64.rpm -f
[root@localhost mysql]# yum install mysql-community-*
......
[root@localhost ~]# mkdir /data/
mkdir: cannot create directory ‘/data/’: File exists
[root@localhost ~]# mv /var/lib/mysql /data/
[root@localhost ~]# ln -s /data/mysql /var/lib/
[root@localhost ~]# ll /var/lib/mysql
lrwxrwxrwx 1 root root 11 Mar 30 18:24 /var/lib/mysql -> /data/mysql
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# grep pass /var/log/mysqld.log
2018-03-30T10:25:10.289187Z 1 [Note] A temporary password is generated forroot@localhost: x)puY-Eqz1Mj
[root@localhost ~]# mysql -p
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password for root@'localhost'=PASSWORD('Qianfeng@123');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create database jspgou default character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on jspgou.* to 'jspgouadmin'@'%' identified by
'Jspgou_pwd2018';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> select @@sql_mode;
+--------------------------------------------------------------------------------------+
| @@sql_mode
|
+--------------------------------------------------------------------------------------+
|ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_
BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> set global
sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREA
TE_USER,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> \q
Bye
[root@localhost ~]#

配置JSPgou

Jspgou配置mysql
主要参考 jspgouV6-ROOT/必读.txt 文件

[work@localhost jspgouV6-ROOT]$ ls ROOT/WEB-INF/config/
application-context.xml jspgou-admin-servlet.xml
cache-context.xml jspgou-context.xml
checkcode-context.xml jspgou-front-servlet.xml
jdbc.properties jspgou-servlet-admin-api.xml
jeecore-context.xml plug
jspgou shiro-context.xml
[work@localhost jspgouV6-ROOT]$ vim ROOT/WEB-INF/config/jdbc.properties
#配置mysql地址、端口、库名、用户名、密码

导入jspgou库

[root@localhost ~]# mysql -ujspgouadmin -pJspgou_pwd2018 jspgou < ~work/jspgouV6-
ROOT/DB/jspgou.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

 

启动 jspgou web site

[root@localhost ~]# su - work
Last login: Fri Mar 30 18:29:55 CST 2018 on pts/0
[work@localhost ~]$ ls
apache-tomcat-9.0.6
jspgouV6-ROOT
tomcat 说明.htm
work
[work@localhost ~]$ cd tomcat/
[work@localhost tomcat]$ ls
bin lib logs RELEASE-NOTES temp
conf LICENSE NOTICE RUNNING.txt webapps
[work@localhost tomcat]$ cd webapps/
[work@localhost webapps]$ ls
docs
examples
host-manager
manager
ROOT
[work@localhost webapps]$ mv ROOT{,_bak}
[work@localhost webapps]$ mv ~/jspgouV6-ROOT/ROOT
./
[work@localhost webapps]$ ls
docs
examples
host-manager
manager
ROOT
ROOT_bak
[work@localhost webapps]$ cd ..
[work@localhost tomcat]$ bin/shutdown.sh
Using CATALINA_BASE: /home/work/tomcat
Using CATALINA_HOME: /home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
[work@localhost tomcat]$ lsof -i:8080 (Java进程虽然关闭,但需要等待所有client断开连接端口才会消
失)
COMMAND
java
PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
2452 work 49u IPv6
24373
0t0
TCP *:webcache (LISTEN)
[work@localhost tomcat]$ lsof -i:8080
[work@localhost tomcat]$ bin/startup.sh
Using CATALINA_BASE: /home/work/tomcat
Using CATALINA_HOME: /home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
Tomcat started.
[work@localhost tomcat]$ lsof -i:8080
COMMAND
java
PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
6156 work 49u IPv6
[work@localhost tomcat]$
32

测试访问:打开浏览器,访问 http://tomcat_server_ip:8080/ ,出现jspgou 的商城主页

提前作域名解析

 

虚拟主机

环境准备

[work@localhost tomcat]$ bin/shutdown.sh
Using CATALINA_BASE: /home/work/tomcat
Using CATALINA_HOME: /home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
[work@localhost tomcat]$ lsof -i:8080
[work@localhost tomcat]$
[work@localhost tomcat]$ cd webapps/
[work@localhost webapps]$ ls
docs
examples
host-manager
manager
ROOT
ROOT_bak
[work@localhost webapps]$ mv ROOT jspgou
[work@localhost webapps]$ mv ROOT_bak ROOT
[work@localhost webapps]$ ls
docs
examples
host-manager
jspgou
manager
ROOT
[work@localhost webapps]$

[work@localhost tomcat]$ vim conf/server.xml 添加如下内容

<Host name="jspgou.1000phone.com" appBase="webapps" unpackWARs="true"
autoDeploy="true">
<Context docBase='jspgou' path="" reloadable="true" crossContext="true" />
</Host>

参数说明:
appBase 指定站点根目录位置(可以是相对路径或绝对路径)
unpackWAR 本项为"true" 意味着 Tomcat 会保存 .war 包的解压结果,然后直接对解压结果进行运行。考虑到jvm
的类加载机制,每个类都仅加载一次,但是页面内容却没有类似的有效缓存,所以 .war 还是解压执行的比较好。
path 指定访问路径URI(虚拟目录名)
docBase 指定jsp项目的存放路径(可以是相对路径或绝对路径)
debug 设定debug的等级0提供最少的信息,9提供最多的信息
reloadable 本项为true时 当web.xml或者class有改动的时候都会自动重新加载不需要从新启动服务(所谓的支持热
发布功能)
crosscontext 本项为"true" 表示配置的不同context共享一个session
cachingAllowed 本项为"true"时 意味着开启了 Tomcat 的静态缓存功能。静态文件包括 JavaScript 程序、图片声
音等允许网络访问的文件以及 HTML 页面。
cacheMaxSize 指定静态缓存功能缓冲区大小的设定。单位是 MB ,也就是 1024KB 。例子中设为 1024 ,意味着
1GB 。
测试访问:1、配置本地解析;2、在浏览器中访问http://jspgou.1000phone.com:8080出现jspgou商场界面,访问
http://tomcat_server_ip:8080 出现默认tomcat主页

 

深入操作:

Tomcat Manager 管理页面

 

添加允许访问的主机
[work@localhost tomcat]$ vim webapps/manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.18.*$" /> <Manager
sessionAttributeValueClassNameFilter="java\.lang\.
(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFil
ter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>

添加允许访问的用户和角色

[work@localhost tomcat]$ vim conf/tomcat-users.xml

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="123" roles="admin-gui,manager-gui,manager-script"/>

Tomcat调优
JVM内存优化

vim bin/catalina.sh

CATALINA_OPTS="-server -Xms128m -Xmx512m"

JAVA_OPTS="$JAVA_OPTS -Xms4096m -Xmx4096m -XX:PermSize=1024m -XX:MaxPermSize=2048m"

验证:

[work@localhost tomcat]$ ps -ef | grep java
work
2879
1 90 20:18 pts/0
00:00:10 //bin/java -
Djava.util.logging.config.file=/home/work/tomcat/conf/logging.properties -
Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms512m -
Xmx1024m -Djdk.tls.ephemeralDHKeySize=2048 -
Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -
classpath /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-juli.jar -
Dcatalina.base=/home/work/tomcat -Dcatalina.home=/home/work/tomcat -
Djava.io.tmpdir=/home/work/tomcat/temp org.apache.catalina.startup.Bootstrap start
work
2904
2697
[work@localhost tomcat]$

开启GC日志

JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data0/logs/gc-
%t.log"

 

开启JMX端口便于监控

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=10028
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=java69-matrix.zeus.lianjia.com"

取消JVM 的默认DNS缓存时间

不缓存DNS记录,避免DNS解析更改后要重启JVM虚拟机

CATALINA_OPTS="$CATALINA_OPTS -Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=0

参数说明: -server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的
-Xmx1024m:设置JVM最大堆可用内存为1024MB
-Xms1024m:设置JVM最小内堆存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分
配内存。
-XX:NewSize:设置年轻代大小
-XX:MaxNewSize:设置最大的年轻代大小
-XX:PermSize:设置永久代大小
-XX:MaxPermSize:设置最大永久代大小
-XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,则年
轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5
-XX:MaxTenuringThreshold=10:设置垃圾最大年龄,默认为:15。如果设置为 0 的话,则年轻代对象不经过
Survivor 区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻
代对象会在 Survivor 区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
-XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不
会触发任何 GC


Tomcat并发优化
Tomcat配置文件conf/server.xml中

minProcessors: 最小空闲连接线程数,用于提高系统处理性能,默认值为 10
maxProcessors: 最大连接线程数,即:并发处理的最大请求数,默认值为 75
acceptCount: 允许的最大连接数,应大于等于 maxProcessors ,默认值为 100
enableLookups: 是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
connectionTimeout: 网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为
30000 毫秒。
其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个
参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是
1000 个左右。
maxThreads
客户请求最大线程数minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码

 

Tomcat Connector运行模式优化

Tomcat Connector有三种运行模式:
bio:阻塞IO bio是三种运行模式中性能最低第一种。
nio:是一个基于缓冲区,并能提供非阻塞I/O操作的JAVA API 因此NIO也成为非阻塞I/O,比bio拥有更好的并发性
能。
apr:调用httpd核心链接库来读取或文件传输,从而提高tomat对静态文件的处理性能。Tomcat APR模式也是
Tomcat在高并发下的首选运行模式

Tomcat的排错

时刻关注tomcat/logs/ 中的各log内容

Nginx 代理
方法一(nginx rewrite)

[root@localhost ~]# cat /etc/nginx/conf.d/jspgou.conf
server {
listen 80;
server_name jspgou.1000phone.com;
location / {
rewrite ^(.*)$ http://jspgou.1000phone.com:8080$1;
}
}
[root@localhost ~]# grep jspgou /etc/hosts
127.0.0.1 jspgou.1000phone.com
[root@localhost ~]# systemctl reload nginx

测试访问:打开浏览器,在地址栏输入http://jspgou.1000phone.com 然后nginx 将地址重写成
http://jspgou.1000phone.com:8080

方法二(去掉tomcat的虚拟主机,只保留jspgou商城,然后nginx proxy_pass)

[root@localhost nginx]# su - work
Last login: Sat Mar 31 20:48:57 CST 2018 on pts/0
[work@localhost ~]$ cd tomcat/
[work@localhost tomcat]$ bin/shutdown.sh
Using CATALINA_BASE:
/home/work/tomcatUsing CATALINA_HOME:
/home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
[work@localhost tomcat]$ lsof -i:8080
(保证先关闭tomcat)
[work@localhost tomcat]$ vim conf/server.xml (注释之前所做的虚拟主机)
<!--
<Host name="jspgou.1000phone.com" appBase="webapps" unpackWARs="true"
autoDeploy="true">
<Context docBase='jspgou' path="" reloadable="true" crossContext="true" />
</Host>
-->
[work@localhost tomcat]$ cd webapps/
[work@localhost webapps]$ ls
docs
examples
host-manager
jspgou
manager
ROOT
[work@localhost webapps]$ mv ROOT{,_bak} (备份tomcat默认站点)
[work@localhost webapps]$ mv jspgou ROOT (将jspgou改为ROOT)
[work@localhost tomcat]$ bin/startup.sh (再次启动tomcat)
Using CATALINA_BASE: /home/work/tomcat
Using CATALINA_HOME: /home/work/tomcat
Using CATALINA_TMPDIR: /home/work/tomcat/temp
Using JRE_HOME: /
Using CLASSPATH: /home/work/tomcat/bin/bootstrap.jar:/home/work/tomcat/bin/tomcat-
juli.jar
Tomcat started.
[work@localhost tomcat]$ lsof -i:8080
COMMAND
java
PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
7793 work 49u IPv6
32744
0t0
TCP *:webcache (LISTEN)
[work@localhost tomcat]$ logout
[root@localhost nginx]# cat /etc/nginx/conf.d/jspgou.conf (配置nginx反向代理)
server {
listen 80;
server_name jspgou.1000phone.com;
location / {
proxy_pass http://jspgou.1000phone.com:8080;
}
}
[root@localhost nginx]# systemctl reload nginx

测试访问:打开浏览器,在地址栏中输入 http://jspgou.1000phone.com/ 即可访问jspgou商城 (地址栏没有被
rewrite,并无变化)

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值