tomcat 常见配置使用

tomcat 常见配置使用

  • 部署:将 webapp 的源文件放置到目标目录,通过 web.xml 和 context.xml 文件中配置的路径就可以访问该webapp,通过类加载器加载其特有的类和依赖的类到 JVM 上。

  • 自动部署 Auto Deploy:Tomcat 发现多了这个应用就把它加载并启动起来

  • 手动部署

    • 冷部署:将 webapp 放到指定目录,才去启动 Tomcat

    • 热部署:Tomcat 服务不停止,需要依赖 manager、ant 脚本、tcd(tomcat client deployer)等工具

  • 反部署 undeploy:停止 webapp 的运行,并从 JVM 上清除已经加载的类,从 Tomcat 应用目录中移除部署的文件

  • 启动start:是 webapp 能够访问

  • 停止stop:webapp 不能访问,不能提供服务,但是 JVM 并不清除它

4.4.1 禁用 telnet SHUTDOWN 文件来关闭 tomcat

操作范例:

1、将 etc 的 fstab 文件拷贝到 tmp 中(这个文件可以随便选择某一个,我这里为了方便所以就将 fstab 这个文件拷贝到 tmp 这个目录中,然后再对他做 md5sum 计算)

# 讲 fstab 文件拷贝至 tmp 中
[09:06:58 root@a7 ~]#cp -a /etc/fstab /tmp/

# 对 fstab 文件做 md5 计算
[09:07:44 root@a7 ~]#md5sum /tmp/fstab 
0b2de1c43b1baa2555d7a2c1803d4219  /tmp/fstab

2、打开tomcat主配置文件,server.xml将这串 md5 的运算结果复制到 shutdown= 后面

[09:07:56 root@a7 ~]#vim /app/tomcat/tomcat/conf/server.xml 
<Server port="8005" shutdown="0b2de1c43b1baa2555d7a2c1803d4219">    # 添加 md5 计算值

3、停止 tomcat 再重启 tomcat,使其配置文件生效

# 停止 tomcat
[09:10:35 root@a7 ~]#/app/tomcat/tomcat/bin/shutdown.sh 

# 启动 tomcat
[09:11:39 root@a7 ~]#/app/tomcat/tomcat/bin/startup.sh 

4、测试使用 telnet 命令链接本机的8005端口再输入SHUTDOWN 命令来关闭tomcat,就不会起作用了。发现8080端口依旧存在

# 通过 telnet 链接至本机的 8005 端口
[09:13:58 root@a7 ~]#telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN                                # 输入 SHUTDOWN 命令关闭 tomcat
Connection closed by foreign host.

[09:14:22 root@a7 ~]#ss -ntl | grep 8080        # 通过 grep 过滤发现 8080 端口依旧存在
LISTEN     0      100       [::]:8080                  [::]:*

5、浏览器访问,依旧没有问题。但是假如我们使用刚才修改的乱码进行关闭就能够关闭 tomcat。

4.4.2 Tomcat 管理用户认证(manager APP按钮以及host Manager)

操作范例:

一般情况下,一个 Server 实例配置一个 Service,name 属性相当于该 Service 的 ID。

通过浏览器访问 http://10.0.0.7:8080/index.jsp

1、根据配置内容我们去修改 tomcat-users.xml 文件,修改下面两行最后保存退出

[09:14:36 root@a7 ~]#vim /app/tomcat/tomcat/conf/tomcat-users.xml   # 编辑该文件
  <role rolename="manager-gui"/>                                    # 修改此行
  <user username="zgy" password="123456" roles="manager-gui"/>      # 添加管理用户和密码

2、下面我们还需要修改 tomcat 管理程序的远程访问 IP 将 10.0 网段添加进去(这个ip一定是公司内网ip)

[09:22:05 root@a7 ~]#vim /app/tomcat/tomcat/webapps/manager/META-INF/context.xml 
    allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.\d+\.\d+" /> # 修改此行,公司中写自己得局域网地址

3、到 tomcat 的 /webapps/host-manager/META-INF/context.xml这个目录下将192这个综合的网段添加进去。这是实现 host manager 的管理

[09:24:42 root@a7 ~]#vim /app/tomcat/tomcat/webapps/host-manager/META-INF/context.xml 
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.*" />     # 修改此行,添加 172 网段

4、重启 tomcat 服务器,使用命令行进行用户访问权限验证:

# 关闭 tomcat
[09:26:27 root@a7 ~]#/app/tomcat/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   

# 启动 tomcat
[09:26:43 root@a7 ~]#/app/tomcat/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

5、测试使用浏览器通过对 http://10.0.0.7:8080/manager/html 访问测试(因为我将配置文件中的tomcat端口修改了80所以不用在输入8080),用户名 zgy, 密码 123456

6、进入了管理界面就已经实现了管理员页面访问

这是虚拟主机管理员的界面。着这个界面中我们可以创建删除主机

4.4.3 虚拟主机配置实验

虚拟主机配置。

  • name :必须是主机名,用主机名来匹配 。

  • appBase: 当期主机的网页根目录,是相对于CATALINA_HOME,也可以使用绝对路径

  • unpackWARs:是否自动解压war格式

  • autoDeploy:热部署,自动加载并运行应用(在工作中根据需要开启)

实验范例:

1、创建一个/data/webapps/ROOT 的目录等会这个目录就是我们另外一台虚拟主机的默认页面

[09:35:23 root@a7 ~]#mkdir /data/webapps/ROOT -pv

2、再将一个 web页面该有的文件从tomcat的/app/tomcat/tomcat/webapps/ROOT/*这个目录下拷贝到新创建的 /data/webapps/ROOT目录中

[09:50:49 root@a7 ~]#cp -r /app/tomcat/tomcat/webapps/ROOT/* /data/webapps/ROOT/

3、将我们的新虚拟主机的 web 首页面的配置文件修改将他改为www.magedu.net域名的显示内容,将 index.jsp 文件改为下面得内容。

[09:55:48 root@a7 ~]#vim /data/webapps/ROOT/index.jsp 
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
                <meta charset="utf-8">
                        <title>myapp of magedu</title>
                        </head>
                        <body>
                        <h1> www.magedu.net  </h1>
                        <%
                        out.println("hello jsp");
                        %>
                        %</body>
                        %</html>

4、修改我们的 tomcat 主配置文件。让 tomcat 支持新的虚拟主机。这里一定要写绝对路径,不然他是默认走tomcat的默认web页面

[09:57:13 root@a7 ~]#vim /app/tomcat/tomcat/conf/server.xml 
      <Host name="www.magedu.net"  appBase="/data/webapps"   unpackWARs="true" autoDeploy="true">                                  

5、重启 tomcat

# 关闭 tomcat
[10:00:57 root@a7 ~]#/app/tomcat/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   

# 启动 tomcat
[10:01:04 root@a7 ~]#/app/tomcat/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

6、在 windows 主机上添加虚拟主机头。

C:\Windows\System32\drivers\etc\hosts

C:\Windows\System32\drivers\etc\hosts
10.0.0.7 www.magedu.net

7、浏览器访问 http://www.magedu.net:8080/index.jsp

4.4.4 虚拟主机配置使用 context 配置选项(实现通过软链映射的访问)

这样的作法是为了更好的保护后端服务器网页页面的真实路径,起到安全的作用

操作范例:

1、复制一份 /app/tomcat/tomcat/webapps/ROOT/ 项目到 /data/ 路径下:

[10:50:19 root@a7 ~]#cp -r /app/tomcat/tomcat/webapps/ROOT/ /data/

2、添加index.html默认页面

[10:50:25 root@a7 ~]#vim /data/ROOT/index.html 
<h1>/data/myweb/index.html <h1>

3、再写一个index.jsp 动态页面内容为 myapp web project in /data/myapp

[10:56:32 root@a7 ~]#vim /data/ROOT/index.jsp 
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <!DOCTYPE html>
        <html>
        <head>
                <meta charset="utf-8">
                        <title>myapp of magedu</title>
                        </head>
                        <body>
                        <h1> myapp web project in /data/myapp  </h1>
                        <%
                        out.println("hello jsp");
                        %>
                        %</body>
                        %</html>

4、我们再将这个 /ROOT 文件移动改名为 myweb1 并且指定软连接为test

# 通过 MV 给文件改名
[11:03:53 root@a7 ~]#mv /data/ROOT/ /data/myweb1

# 做一个软连接,链接至 /data/test
[11:05:23 root@a7 ~]#ln -sv /data/myweb1/ /data/test
‘/data/test’ -> ‘/data/myweb1/’

# 通过 ll 查看已经链接
[11:05:38 root@a7 ~]#ll /data/
total 0
drwxr-x--- 3 root root 301 Nov  2 11:03 myweb1
lrwxrwxrwx 1 root root  13 Nov  2 11:05 test -> /data/myweb1/

5、给 tomcat 这个用户授权 /data下所有文件的权限

[11:05:41 root@a7 ~]#chown -R tomcat.tomcat /data/

6、修改 tomcat server.xml 文件使其支持软连接来访问 web 页面。

Context作用:

  • 路径映射(软链接)

  • 应用独立配置,例如单独配置应用日志、单独配置应用访问控制

  • path 指的是访问的路径为test

  • docBase,可以是绝对路径,也可以是相对路径(相对于Host的appBase,这是一个后端提供真实路径的目录)

  • reloadable,true 表示如果 WEB-INF/classes 或 META-INF/lib 目录下 .class 文件有改动,就会将WEB应用 重新加载。生成环境中,会使用 false 来禁用最好不要打开。他是从新加载应用,所以当有用户再使用该应用的话是不能执行该操作。

[11:08:46 root@a7 ~]#vim /app/tomcat/tomcat/conf/server.xml 
      <Host name="www.magedu.net"  appBase="/data/webapps"   unpackWARs="true" autoDeploy="true">
          <Context path="/test" docBase="/data/test" reloadable="false" />  # 添加此行

7、重启 tomcat

# 停止 tomcat
[11:17:26 root@a7 ~]#/app/tomcat/tomcat/bin/shutdown.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   

# 启动 tomcat
[11:17:46 root@a7 ~]#/app/tomcat/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat/tomcat
Using CATALINA_HOME:   /app/tomcat/tomcat
Using CATALINA_TMPDIR: /app/tomcat/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /app/tomcat/tomcat/bin/bootstrap.jar:/app/tomcat/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

8、浏览器访问测试

http://www.magedu.net:8080/test/

http://www.magedu.net:8080/test/index.jsp

注意:这里特别使用了软链接,原因就是以后版本升级,需要将软链接指向 myappv2,重启 Tomcat。如果新版上线后,出现问题,重新修改软链接到上一个版本的目录,并重启,就可以实现回滚。

点赞