tomcat学习之一:tomcat的安装以及基本配置

来源:互联网 发布:ubuntu 14.04 卸载 编辑:程序博客网 时间:2024/05/22 17:11

1、Tomcat的安装

     1.1、下载Tomcat

        到https://tomcat.apache.org/download-80.cgi 下载Tomcat压缩包,注意下载的版本要与电脑位数相对应。

     1.2、启动与停止tomcat

      将1.1步骤中下载的压缩包解压,然后进入到bin目录中,windows则运行startup.bat启动tomcat,运行shutdown.bat关闭tomcat。linux则运行./startup.sh启动tomcat,运行./shutdown.sh关闭tomcat。
      注意:如果启动错误请检查JDK是否已安装,或者Java路径是否设置正确,要保证在环境变量中设置了JAVA_HOME。
                  如果错误信息为Address already in use: JVM_Bind,进入到conf目录下,打开server.xml将connector的port改为其他数字,范围在(1024 ~ 65535)。在重新启动。
     
      如果启动没有报错,打开浏览器输入:localhost:8080/ 可以看到以下画面表示启动成功。

 
          注意:如果启动报错端口号报错,改了之后相应的要把8080改为对应的端口号。这儿8080是tomcat配置文件默认的端口号。
          然后关闭tomcat后,刷新浏览器,浏览器提示无法连接到localhost

2、tomcat的目录结构

        进入tomcat的目录,tomcat的目录结构如下图所示:


   补充说明:work目录存放的是jsp编译过后的java文件以及class文件。
                       webapps目录是项目部署目录,可以直接将项目打包成war包,放进该目录,tomcat在启动时会自动解压部署。

      2.1、tomcat的conf目录



      Catalina目录:暂时先不管
      Catalina.policy: 权限相关,例如是否允许获取java版本。
      Catalina.properties: 定义了tomcat启动时要加载哪些jar,以及使用哪一个类加载器加载。
      
      context.xml:配置很简单,定义web.xml存放路径
      logging.properties:定义日志的输出格式,记录日志的级别,日志存放路径等。
      server.xml:tomcat的核心配置文件之一,下面详解。
      tomcat-users.xml:登录用户配置
      web.xml:tomcat核心配置文件之一,且在webapps中部署的项目的web.xml与之存在继承关系。

      2.2、server.xml

       server.xml配置了tomcat监听的端口号,部署了哪些服务以及访问服务路径。一般来讲,访问服务路径为项目名,即war包名。除此之外,还可以配置域名,如上面访问的路径localhost是server.xml中的默认配置。
       配置如下:
<?xml version='1.0' encoding='utf-8'?><!--注意:所有配置全部在server标签内部--><Server port="8005" shutdown="SHUTDOWN">  <!--配置了一系列tomcat启动时的监听器-->  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <Listener className="org.apache.catalina.core.JasperListener" />  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />  <!--全局资源-->  <GlobalNamingResources>    <Resource name="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>    <!--配置service,在一个server里面,可以配置多个service-->  <Service name="Catalina"><!--在一个service里面,可以配置多个connector,它的作用是用来监听端口-->    <Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" /><Connector port="8081" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" />    <!--port表示监听端口号,但port不能重复,而且port的值要在1024 ~ 65535之间protocol表示协议,现大多数都为http协议,connectionTimeout连接超时时间maxPostSize=0表示取消对请求参数的限制-->    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />    <!--引擎,service中只能有一个Engine--><Engine name="Catalina" defaultHost="localhost">      <Realm className="org.apache.catalina.realm.LockOutRealm">        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"               resourceName="UserDatabase"/>      </Realm>  <!--appBase表示Host所代表的应用目录,结构要与webapps一致    -->  <!--<Host name="www.yamikaze.com"  appBase="G:/mywebapps"            unpackWARs="true" autoDeploy="true">  </Host> -->  <!--可以配置多个Host-->      <Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true"><!-- 一个Context对应一个项目,path为访问项目的路径名,docBase为项目所在位置--><!-- <Context path = "/word" docBase = "G:\java\web\hello" /> --><!--添加阈,这个阈的作用是输出访问日志-->        <Valve className="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>

3、tomcat部署项目

3.1、使用context标签部署

         可以在server.xml中host标签内部使用context标签部署项目,其中path表示访问项目的路径,docBase表示项目所在位置:
<Context path = "/word" docBase = "G:\java\web\hello" />
         然后重启tomcat,输入localhost:端口号/word即可访问。

       3.2、最简单方式

       直接将需要部署的服务打成war包,拷贝到webapps目录下,然后启动tomcat,在浏览器输入localhost:端口号/项目名 即可访问。
这种方式最终也会在server.xml中生成一条context标签,只不过区别在于这种方式需要将war拷贝到webapps目录下。

       3.3、外部xml方式

       还记得tomcat的conf目录下面有个catalina目录吗? tomcat启动后会以server.xml中的host标签的name属性建立文件夹。这种方式部署,可以在localhost目录建立hello.xml,文件名任意,然后在里面编辑
<Context  docBase="项目路径" />
       然后保存启动tomcat,在浏览器输入localhost:端口/hello即可访问。

      3.4、虚拟主机配置

      经常上网的肯定会留意浏览器地址栏的变化,比如输入:http://www.baidu.com/ 就会跳转到百度首页,这儿没有加端口是因为http协议默认端口为80,所以当connector配置的port为80时可以不用加上端口。在看http://www.baidu.com/只输入了域名,而没有输入项目路径,这是因为不加路径会访问webapps下ROOT目录的内容,这儿的ROOT相当于tomcat自带的一个项目,所以可以将ROOT删掉,将要发布的项目文件名改为ROOT,这样输入localhost/就可以直接访问了。
    
      除此之外,tomcat也是可以将多个域名映射到同一个项目去的。
     首先,在server.xml中加入以下代码,注意:一定要放在Engine标签里面
<Host name="www.yamikaze.com"  appBase="webapps"            unpackWARs="true" autoDeploy="true"></Host>
      这儿的appBase为项目部署路径,文件夹可以不在tomcat的文件夹下。
      然后修改C:\Windows\System32\drivers\etc\hosts文件,在文件中加上这么一行
127.0.0.1       www.yamikaze.com
      保存后重启tomcat,在浏览器地址栏输入:www.yamikaze.com:8880/得到如下结果:


            实验完成后记得将hosts文件中添加的配置删除掉。
            但这个域名以及localhost只能在本机才能达到这个效果,如果你在另一台电脑上输入相同链接是无法访问的,这涉及到DNS解析顺序,建议百度了解一下。

4、其他

         4.1、如果访问get请求乱码的话,可以在connector加上uriEncoding="utf-8"解决。但这种方式代码就与tomcat粘连在一起了,换一个服务器依旧乱码,所以建议在代码中先解码再以utf-8编码。
         4.2、在IDE中修改代码后,想让tomcat重新加载,可以在Host标签上加上reloadable="true"。

         最后,因个人经历以及经验,可能存在不足之处,欢迎评论留言指正,谢谢!φ(>ω<*) 
    
原创粉丝点击