tomcat部署工程项目的三种方式_以及一个tomcat部署多个项目

在我们日常开发中,经常会碰到在服务器上部署项目的事情,尤其是在开发阶段,所以部署的几种方式总结一下。

了解tomcat的server.xml文件

在部署直接首先了解一个在tomcat的conf/server.xml文件,因为在tomcat部署的时候,主要用到这个文件。

<?xml version='1.0' encoding='utf-8'?>

<!-- Note: http://201605130349.iteye.com/blog/2298985  所有标签属性解释
      服务器”本身并不是一个“容器 
      <Server>元素:
      是整个配置文件的根元素。表示整个Catalina容器。
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <!-- port="8005"----Tomcat服务器监听用于关闭Tomcat服务器的命令(必须)
        Shutdown:发送到端口上用于关闭Tomcat服务器的命令。
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <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 name="Catalina">

    <!-- <Connector>元素:连接器,负责接收客户的请求,以及向客户端回送响应的消息。
          protocol:值必须为HTTP1.1,如果使用AJP处理器,该值必须为AJP/1.3
          connectionTimeout:设置连接的超时值,以毫秒为单位。默认值为60000=60秒
          redirectPort:如连接器不支持SSL请求,如收到SSL请求,Catalina容器将会自动重定向指定的端口号,让其进行处理。
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    

    <!-- AJP连接器:
      用于将Apache与Tomcat集成在一起,当Apache接收到动态内容请求时,
      通过在配置中指定的端口号将请求发送给在此端口号上监听的AJP连接器组件。 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <!-- <Engine>元素:
          为特定的Service处理所有的请示。每个Service只能包含一个Engine元素,
          它负责接收和处理此Service所有的连接器收到的请求,向连接发回响应,
          并最终显示在客户端。<Engine>至少有一个<Host>元素,
          必须至少有一个<Host>属性的名字与defaultHost指定的名字相匹配。 -->
    <Engine name="Catalina" defaultHost="localhost">
     <!--  defaultHost:默认主机名,值必须与<Service>的name值相匹配(也就是Engine和Service的name相等)
            name:指定Engine的逻辑名字(必须)
      -->
     
      <Realm className="org.apache.catalina.realm.LockOutRealm">       
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>


      <!-- <Host>元素:表示一个虚拟主机,为特定的虚拟主机处理所有请求。

            appBase:设定应用程序的基目录,绝对路径或相对于%CATALINA_HOME%的路径名
            autoDeploy:指示Tomcat运行时,如有新的WEB程序加开appBase指定的目录下,是否为自动布署,默认值为true
            unPackWARs:虚拟主机指定临时读写使用的目录的路径名,不设,Tomcat会在%CATALINA_HOME%/work目录
            -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
                      <!-- 例如:appBase=”c:/test -->
        <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>

一、一个tomcat不是一个项目,有三种方式

静态部署
直接将web项目文件件拷贝到webapps 目录中。
Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将项目打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。
打war包可以使用许多开发工具的IDE环境,如Eclipse,idea等。也可以用 cmd 命令:jar -cvf mywar.war  myweb
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:

<Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">


将appBase修改即可。

弊端

这种方式通常是用于开发过程中。在真正的项目实施中可能会受到限制:当使用租借的(或他人的)WEB服务器时,该服务器所在的盘符如果存在权限控制,则不能够将WEB应用程序拷贝到该盘符中,此时就不能使用这种方式部署项目,只能使用下列方式。

访问方式

http://127.0.0.1:8080/项目名,或者http://localhost:8080/项目名

发布了27 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Liuyuelinjiayou/article/details/53002474