tomcat项目配置简介即tomcat默认页面、多端口、多域名配置

tomcat是一个轻量级的web服务器,由于免费开源,在互联网web服务器中占有较大的比例,本文将介绍tomcat关于web方面的一些配置

一、tomcat项目的结构

tomcat项目结构

  • resource:存放资源文件目录(不是静态资源)
  • src:java相关源码目录
  • WEB-INF:web项目开发相关的目录(包括编译生成的.class文件,项目配置文件等,浏览器是访问不到的)
    WEB-INF的目录结构大致如下:
    • classes:存放编译后的.class文件
    • jsp:存放jsp相关页面
    • lib:存放类库jar文件
    • web.xml项目配置文件

WEB-INF目录结构

二、默认页面设置

即当不指定默认的文件时,默认显示的页面,类似于nginx中的index的配置,如访问:http://localhost:8080/javaweb/,它会默认显示index.html这个页面。
如果需要指定默认页面,可以通过修改web.xml的内容实现,具体如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  5. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  6. version="3.1"
  7. metadata-complete="true">
  8. <welcome-file-list>
  9. <welcome-file>hello.html</welcome-file>
  10. <welcome-file>index.xhtml</welcome-file>
  11. <welcome-file>index.htm</welcome-file>
  12. <welcome-file>index.jsp</welcome-file>
  13. </welcome-file-list>
  14. </web-app>

注:整个welcome-file-list段为设置部分,上述代码中共有4个,它会依次匹配,如果上面的不存在,再匹配下一个,如这里,把原来默认的index.html改成hello.html

三、配置端口

1、修改默认端口

tomcat服务器提供服务的端口(访问端口)默认为8080,如果需要修改这个端口,可以通过修改tomcat配置文件server.xml中的Connector来实现
原配置如下:

  1. <Connector port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443" />

修改配置:

  1. <Connector port="8090" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443" />

现在可以通过http://localhost:8090来访问了

2、使用多个端口

即不同的目录(不同的项目)对应不同的端口
这与修改默认端口略有不同,和下面要讲的虚拟主机配置很类似
server.xml默认只有一个service,一个service可以认为是一个虚拟主机,新建一个新的service段(有几个端口就新建几个service段),内容如下:

  1. <Service name="test1">
  2. <Connector port="8081" protocol="HTTP/1.1"
  3. connectionTimeout="20000"
  4. redirectPort="8443" />
  5. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  6. <Engine name="test1" defaultHost="localhost">
  7. <Realm className="org.apache.catalina.realm.LockOutRealm">
  8. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  9. resourceName="UserDatabase"/>
  10. </Realm>
  11. <Host name="localhost" appBase="webapps"
  12. unpackWARs="true" autoDeploy="true">
  13. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  14. prefix="localhost_access_log" suffix=".txt"
  15. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  16. <Context path="/" docBase="/usr/local/tomcat/webapps/test1" reloadable="true" />
  17. </Host>
  18. </Engine>
  19. </Service>

注意的主要有三个地方:

  • service的name属性,即为服务的名称,可以认为是一个域名(也可以认为是一域名分组,如同个根域名)
  • 第一个Connector的port为新建的端口
  • Host的name为域名,这里默认为localhost
  • Value中的ClassName为org.apache.catalina.valves.AccessLogValue这一段是指定访问日志的设置信息
  • Context这一段指定端口对应的目录,path属性访问的URL,docBase为访问的实际目录(所以这里也可以自定义非默认的网站根目录)

四、虚拟主机配置(多域名配置)

一般来说虚拟主机就是同一台服务器运行多个项目(多个域名)

(1)修改端口号为80

这里需要注意的是:修改为80后,需要通过root来重启,否则将无法访问

(2)将Host的名称修改为域名,指定每个域名的根目录地址
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Server port="8005" shutdown="SHUTDOWN">
  3. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  4. <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  5. <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  6. <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  7. <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  8. <GlobalNamingResources>
  9. <Resource name="UserDatabase" auth="Container"
  10. type="org.apache.catalina.UserDatabase"
  11. description="User database that can be updated and saved"
  12. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  13. pathname="conf/tomcat-users.xml" />
  14. </GlobalNamingResources>
  15. <Service name="Catalina">
  16. <Connector port="80" protocol="HTTP/1.1"
  17. connectionTimeout="20000"
  18. redirectPort="8443" />
  19. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  20. <Engine name="Catalina" defaultHost="localhost">
  21. <Realm className="org.apache.catalina.realm.LockOutRealm">
  22. <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  23. resourceName="UserDatabase"/>
  24. </Realm>
  25. <Host name="localhost" appBase="webapps"
  26. unpackWARs="true" autoDeploy="true">
  27. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  28. prefix="localhost_access_log" suffix=".txt"
  29. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  30. </Host>
  31. <Host name="www.test1.com" appBase="/usr/local/tomcat/webapps/test1"
  32. unpackWARs="true" autoDeploy="true">
  33. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  34. prefix="localhost_access_log" suffix=".txt"
  35. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  36. </Host>
  37. <Host name="www.test2.com" appBase="/usr/local/tomcat/webapps/test2"
  38. unpackWARs="true" autoDeploy="true">
  39. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  40. prefix="localhost_access_log" suffix=".txt"
  41. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  42. </Host>
  43. </Engine>
  44. </Service>
  45. </Server>

注:只修改了以下几个部分:

  • Connector的port,指定所有的项目开放的端口号为80
  • Host的name,即为域名,这里有localhost,www.test1.comwww.test2.com
  • appBase为域名所对应的根目录的地址

五、idea编辑器中配置tomcat

1、新建项目指定jdk和tomcat安装位置

File->New Project->Java Enterprise

分别指定jdk的安装目录和tomcat的安装目录

2、部署设置
Run->Edit Configurations,选择当前项目的存放路径

3、使用Run->Run运行项目,它会自动打开浏览器会显示
运行项目有以下几种方式:

  • 使用菜单Run->Run
  • 使用快捷键Alt+Shift+F10(也可以自定义热键)
  • 使用头部的快捷按钮