1. 程式人生 > 實用技巧 >tomcat部署多個專案

tomcat部署多個專案

tomcat部署多個web專案

說明:自己業餘寫了兩個vue專案,希望可以都部署到阿里雲伺服器上。

1、vue打包好的靜態資原始檔。

2、本人使用的是阿里雲伺服器 liunx系統;

3、請確保你已安裝好tomcat,傳送門

1、方式一:同一個埠訪問不同專案;

在我的其它文章中有部署單個web專案的操作說明,這裡就不再介紹只有一個專案的部署情況;傳送門

  1. cd 到你的tomcat目錄下;

  2. 把你打包好的vue靜態檔案,上傳至伺服器並移動到你的 webapps資料夾中;

    [root@iZbp156pkpio44mis76wmxZ webapps]# ll
    total 12
    drwxr-xr-x 3 root root 4096 Jan  9 22:36 hero
    drwxr-xr-x 3 root root 4096 Jan 10 16:17 patient # 我的第二個專案
    drwxr-xr-x 3 root root 4096 Jan  9 19:57 ROOT
    [root@iZbp156pkpio44mis76wmxZ webapps]# 
    
  3. 修改cong資料夾下的server.xml檔案;

    • 程式碼內容較多,多餘註釋都已刪除
    [root@iZbp156pkpio44mis76wmxZ conf]# cat server.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8005" shutdown="SHUTDOWN">
        <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
        <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
        <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 port="80" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
            <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
            <Engine name="Catalina" defaultHost="localhost">
                <Realm className="org.apache.catalina.realm.LockOutRealm">
                    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                           resourceName="UserDatabase"/>
                </Realm>
    
                <Host name="localhost"  appBase="webapps"
                      unpackWARs="true" autoDeploy="true">
                    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                           prefix="localhost_access_log" suffix=".txt"
                           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
                   <!--這個是我的第一個web專案也是我的預設web專案-->
                    <Context path="" docBase="hero" debug="0" reloadable="true" />
                  <!--我的第二個專案 訪問時要在url後加上test-->
    					 <Context path="test" docBase="patient" debug="0" reloadable="true" />
                </Host>
            </Engine>
        </Service>
    </Server>
    [root@iZbp156pkpio44mis76wmxZ conf]# 
    
    
  4. 關閉並重啟tomcat;

  5. 測試訪問;如果返回html頁面就說明你部署成功了。瀏覽器訪問:http://ip:port/test/

    [root@iZbp156pkpio44mis76wmxZ webapps]# curl localhost/test/
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <link rel="icon" href="favicon.ico">
        <title>百草堂</title>
      <link href="static/js/0.js" rel="prefetch"><link href="static/js/1.js" rel="prefetch"><link href="static/js/2.js" rel="prefetch"><link href="static/js/3.js" rel="prefetch"><link href="static/js/4.js" rel="prefetch"><link href="static/js/5.js" rel="prefetch"><link href="static/js/6.js" rel="prefetch"><link href="static/js/7.js" rel="prefetch"><link href="static/js/8.js" rel="prefetch"><link href="static/js/app.js" rel="preload" as="script"><link href="static/js/chunk-vendors.js" rel="preload" as="script"></head>
      <body>
        <noscript>
          <strong>We're sorry but patient doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
      <script type="text/javascript" src="static/js/chunk-vendors.js"></script><script type="text/javascript" src="static/js/app.js"></script></body>
    </html>
    [root@iZbp156pkpio44mis76wmxZ webapps]# 
    
    

    注意:這種只是讓你可以訪問到頁面而已,你可能會遇到介面跨域情況,這個需要和後端同學溝通;

2、方法二:不同埠訪問不同的專案;

說明:大多數時候我們的web專案是在不同的域名或埠下的;也就是一個埠對應一個web專案;

  1. cd 到你的tomcat目錄下;

  2. 複製webapps資料夾,貼上到當前資料夾下,示例:

    [root@iZbp156pkpio44mis76wmxZ tomcat]# ll
    total 168
    drwxr-x--- 2 root root  4096 Jul  6  2020 bin
    -rw-r----- 1 root root 19539 Mar 14  2019 BUILDING.txt
    drwx------ 4 root root  4096 Jan  9 21:18 conf
    -rw-r----- 1 root root  6090 Mar 14  2019 CONTRIBUTING.md
    drwxr-x--- 2 root root  4096 Jul  6  2020 lib
    -rw-r----- 1 root root 57092 Mar 14  2019 LICENSE
    drwxr-x--- 2 root root 20480 Jan 10 00:03 logs
    -rw-r----- 1 root root  1726 Mar 14  2019 NOTICE
    -rw-r----- 1 root root  3255 Mar 14  2019 README.md
    -rw-r----- 1 root root  7142 Mar 14  2019 RELEASE-NOTES
    -rw-r----- 1 root root 16262 Mar 14  2019 RUNNING.txt
    drwxr-x--- 2 root root  4096 Jul  6  2020 temp
    drwxr-x--- 4 root root  4096 Jan  9 19:57 webapps
    drwxr-xr-x 4 root root  4096 Dec 27 15:09 webapps_patient # 我複製的webapps資料夾並重命名為webapps_patient
    drwxr-x--- 4 root root  4096 Dec 20 16:39 work
    [root@iZbp156pkpio44mis76wmxZ tomcat]# 
    
    
  3. 把你打包好的vue靜態檔案,上傳至伺服器並移動到你複製好的 webapps_patient資料夾中;

  4. 修改cong資料夾下的server.xml檔案;

    • 程式碼內容較多,多餘註釋都已刪除
    [root@iZbp156pkpio44mis76wmxZ conf]# cat server.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <Server port="8005" shutdown="SHUTDOWN">
        <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
        <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
        <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 port="80" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
            <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
            <Engine name="Catalina" defaultHost="localhost">
                <Realm className="org.apache.catalina.realm.LockOutRealm">
                    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                           resourceName="UserDatabase"/>
                </Realm>
    
                <Host name="localhost"  appBase="webapps"
                      unpackWARs="true" autoDeploy="true">
                    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                           prefix="localhost_access_log" suffix=".txt"
                           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
                    <Context path="" docBase="hero" debug="0" reloadable="true" />
                </Host>
            </Engine>
        </Service>
    
        <!--以下為我的第二個專案patient-->
        <Service name="Catalina_patient">
            <Connector port="8088" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
            <Connector port="8099" protocol="AJP/1.3" redirectPort="8443" />
            <Engine name="Catalina_patient" defaultHost="localhost">
                <Realm className="org.apache.catalina.realm.LockOutRealm">
                    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                           resourceName="UserDatabase"/>
                </Realm>
                <Host name="localhost"  appBase="webapps_patient"
                      unpackWARs="true" autoDeploy="true">
                    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                           prefix="localhost_access_log" suffix=".txt"
                           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
                  			<!--我的第二個專案-->
                    		<Context path="" docBase="patient" debug="0" reloadable="true" />
                </Host>
            </Engine>
        </Service>
    </Server>
    [root@iZbp156pkpio44mis76wmxZ conf]# 
    
    
  5. 注意;

    <!-- 修改name的值為Catalina_patient-->
    <Service name="Catalina_patient">
      		<!-- 修改port的值為8088-->
            <Connector port="8088" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
            <Connector port="8099" protocol="AJP/1.3" redirectPort="8443" />
      		<!-- 修改name的值為Catalina_patient-->
            <Engine name="Catalina_patient" defaultHost="localhost">
                <Realm className="org.apache.catalina.realm.LockOutRealm">
                    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                           resourceName="UserDatabase"/>
                </Realm>
                <Host name="localhost"  appBase="webapps_patient"
                      unpackWARs="true" autoDeploy="true">
                    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                           prefix="localhost_access_log" suffix=".txt"
                           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
                  			<!--我的第二個專案 path:影響訪問時的路徑可以為空或“/”;docBase:你的web應用的絕對路徑也可以直接webname-->
                    		<Context path="" docBase="patient" debug="0" reloadable="true" />
                </Host>
            </Engine>
     </Service>
    
  6. 配置安全組開放8088埠;

  7. 單獨開放伺服器的8088埠;傳送門

  8. 關閉並重啟tomcat;

  9. 測試訪問,如果返回html頁面就說明你部署成功了;瀏覽器地址: http://ip:8088

    [root@iZbp156pkpio44mis76wmxZ bin]# curl localhost:8088
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width,initial-scale=1.0">
        <link rel="icon" href="favicon.ico">
        <title>百草堂</title>
      <link href="static/js/0.js" rel="prefetch"><link href="static/js/1.js" rel="prefetch"><link href="static/js/2.js" rel="prefetch"><link href="static/js/3.js" rel="prefetch"><link href="static/js/4.js" rel="prefetch"><link href="static/js/5.js" rel="prefetch"><link href="static/js/6.js" rel="prefetch"><link href="static/js/7.js" rel="prefetch"><link href="static/js/8.js" rel="prefetch"><link href="static/js/app.js" rel="preload" as="script"><link href="static/js/chunk-vendors.js" rel="preload" as="script"></head>
      <body>
        <noscript>
          <strong>We're sorry but patient doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
        </noscript>
        <div id="app"></div>
        <!-- built files will be auto injected -->
      <script type="text/javascript" src="static/js/chunk-vendors.js"></script><script type="text/javascript" src="static/js/app.js"></script></body>
    </html>
    [root@iZbp156pkpio44mis76wmxZ bin]#