簡體   English   中英

如何在一個Tomcat + Apache上部署多個Grails應用程序?

[英]How to deploy multiple Grails apps on one Tomcat + Apache?

我已經閱讀了StackOverflow上的幾個問題並用Google搜索了幾個小時,但我找不到一個完整而明確的答案來解決我在一個tomcat 5.5(使用Apache)上部署多個Grails應用程序的問題。 也許有人可以把我推向正確的方向,或者我們可以在這里總結一個解決方案。

使用Apache / Tomcat +虛擬主機部署多個grails應用程序的問題看起來很有希望但不起作用。 也許我需要在Tomcat或Apache中進行其他更改?

情況:

在Tomcat的webapps目錄中 ,我有兩個war文件app1.war和app2.war,它們正在被Tomcat解壓縮,我可以通過domain1.com/app1或domain1.com/app2訪問(我刪除了以前使用過的ROOT。戰爭和相關的webapps / ROOT /目錄)

Tomcat的server.xml中,我有以下主機:

    <!-- Logger shared by all Contexts related to this virtual host. -->
    <Logger className="org.apache.catalina.logger.FileLogger"
            directory="logs" prefix="localhost_" suffix=".log"
            timestamp="true"/>

    <!-- Allow symlinks for the tomcat-docs webapp. This is required in
         the Debian packages to make the Servlet/JSP API docs work. -->
     <Context path="/tomcat-docs" docBase="tomcat-docs" debug="0">
        <Resources className="org.apache.naming.resources.FileDirContext"
                   allowLinking="true" />
     </Context>

  </Host>

  <Host name="domain1.com" appBase="webapps/app1" unpackWARs="true" autoDeploy="true"></Host>
  <Host name="domain2.com" appBase="webapps/app2" unpackWARs="true" autoDeploy="true"></Host>

Apache中,我有以下虛擬主機:ServerName app1.com

JkMount /* default

DocumentRoot /var/lib/tomcat5.5/webapps/app1
<directory /var/lib/tomcat5.5/webapps/app1>
    Options -Indexes
</directory>

LogLevel warn
ErrorLog  /var/www/app1/logs/error.log
CustomLog /var/www/app1/logs/access.log common

問題:

我無法通過domain1.com和domain2.com直接訪問這兩個應用程序 - 我做錯了什么?

提前謝謝了,

約爾格。

我掙扎了這一段時間,並設法得到一些正常的東西。 雖然它不使用mod_jk,但我選擇了mod_proxy。 我在Tomcat中的設置略有不同(我的版本是6 btw),我添加了多個連接器以及你擁有的Host聲明。

嘗試以下方法 -

在tomcat server.xml中:

<!-- I opted for a shared thread pool so both apps share same resources - optional -->
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="250" minSpareThreads="40"/>


<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444"
           executor="tomcatThreadPool"
           proxyName="www.domain1.com"
           proxyPort="80"/>
<Connector port="8082" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8445"
           executor="tomcatThreadPool"
           proxyName="www.domain2.com"
           proxyPort="80"/>

  <Host name="www.domain1.com" appBase="vhosts/domain1" unpackWARs="true"
        autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            <Alias>domain1.com</Alias>
  </Host>
  <Host name="www.domain2.com" appBase="vhosts/domain2" unpackWARs="true"
        autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
            <Alias>domain2.com</Alias>
  </Host>

在Apache中:

<VirtualHost *:80>
  ServerName www.domain1.com
  ServerAlias www.domain1.com

  ProxyRequests Off

  ErrorLog /var/log/apache2/error-domain1.log

  <Directory proxy:http://www.domain1.com:80>
        Order Allow,Deny
        Allow from all
  </Directory>

  <Proxy www.domain1.com:80>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPass / http://localhost:8081/
  ProxyPassReverse / http://localhost:8081/
  ProxyPreserveHost On
</VirtualHost>

<VirtualHost *:80>
  ServerName www.domain2.com
  ServerAlias www.domain2.com

  ProxyRequests Off

  ErrorLog /var/log/apache2/error-domain2.log

  <Directory proxy:http://www.domain2.com:80>
        Order Allow,Deny
        Allow from all
  </Directory>

  <Proxy www.domain2.com:80>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPass / http://localhost:8082/
  ProxyPassReverse / http://localhost:8082/
  ProxyPreserveHost On
</VirtualHost>

確保為Apache服務器啟用mod_proxy。 不久之前,當我開始工作時,所以我確定在該配置中是否需要一切 - 一旦我開始工作,我往往會忘記一些東西:)

希望有所幫助,克里斯。

我們在同一個tomcat下運行了兩個Grails Web App

使用tomcat 6很容易

我在您的server.xml中看到的差異是我們擁有的應用程序名稱:

<Host name="www.domain1.com" appBase="[tomcat_root_dir]/www.domain1.com/webapps" unpackWARs="true"
    autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
</Host>
<Host name="www.domain2.com" appBase="[tomcat_root_dir]/www.domain2/webapps" unpackWARs="true"
    autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
</Host>

然后我們在tomcat root dir中有兩個目錄domain1.com和domain2.com在每個目錄中,我們有一個webapps目錄,它只為每個應用程序保存一個ROOT.war文件

希望有所幫助

干杯

Grooveek

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM