2017-07-07 35 views
0

我試圖配置我的(內部)測試服務器來運行2個tomcat應用程序(實際上是同一個並排的2個版本)。我們使用Apache2.4和mod_jk & Tomcat8。目前我正在嘗試向下工作,因此我嘗試的第一步是使當前(嵌入式)tomcat應用程序繼續在端口80上正常運行,並且最初無法在端口81上運行不存在的應用程序。將Apache mod_jk AJP連接器配置爲指向2個不同端口上的tomcat應用程序

所以目前它使用一個應用程序工作在

http://LOCALSERVERNAME 

我的改變有它

1) http://LOCALSERVERNAME 

工作(相同的應用程序)

,但我希望它繼續工作,因爲是1和運行2

不同的應用程序,這樣我修改httpd.conf文件,聽取上的兩個端口

Listen 80 
Listen 81 

隨着現有jkMount設置此

JkMount /* worker1 
JkMount /localhost:80 worker1 
JkMount /localhost:80/* worker1 
JkMount /127.0.0.1:80 worker1 
JkMount /127.0.0.1:80/* worker1 

打開兩個端口上的tomcat的應用程序(而不是其他端口),使聽衆指令都在工作。我認爲這只是使用JkMount/* worker1。

我修改了這個在此期間通過評論說出來,並試圖均低於(單獨)的選項

#JkMount /* worker1 
#JkMount /*:80/* worker1 
JkMount /194.66.181.17:80/* worker1 

我已經設置了服務器名登錄到本地服務器名稱

ServerName LOCALSERVERNAME 

這是給我一個身份驗證所需的登錄彈出& 401錯誤,儘管在Apache服務器上沒有密碼保護。我假設這是配置中的錯誤。

我修改了worker.properties文件,並從瀏覽器中找到了解決方案,我想我可能誤解了它的用途。它使用了一個平衡器(與前面提到的相同),我修改了它,認爲我會用它來爲不同端口的tomcat應用程序提供服務(8009 & 8011)。我看到有人說worker.properties文件只是用作負載平衡器,所以這可能是一個錯誤?

worker.list=worker1, worker2 

worker.worker1.port=8009 
worker.worker1.host=localhost 
worker.worker1.type=ajp13 

worker.worker2.port=8011 
worker.worker2.host=localhost 
worker.worker2.type=ajp13 

我的httpd-vhosts.conf文件是這樣的,雖然我已經嘗試了很多事情在第2項,我不認爲他們是曾經拿起 - 我認爲最接近我有它不得不工作當兩個端口都運行到(相同)現有的應用程序並且可能剛剛使用了第一個條目時。

<VirtualHost [IP-address]:80 localhost:80> 
    servername LOCALSERVERNAME 
    DocumentRoot "E:/Production/Apache/htdocs" 
    <Directory "E:/Production/Apache/htdocs"> 
     Options +FollowSymLinks 
     AllowOverride All 
    </Directory> 

    JkOptions  +ForwardURICompatUnparsed 
    ProxyRequests off 
    JkMount /* worker1 
</VirtualHost> 


<VirtualHost [IP-address]:81> 
    servername LOCALSERVERNAME 
    DocumentRoot "E:/Production/Apache/dummy" 
</VirtualHost> 

因此......我的問題是我可以在我的本地域服務器上使用apache來運行2個使用mod_jk的嵌入式tomcat應用程序嗎?如果有的話,任何人都可以指出我的配置出錯了嗎?我假設我在某個地方走錯了方向,而不是需要稍微調整一下?

回答

0

我寧願使用兩個虛擬主機通過同一個80端口,即使只是出於概念原因。

但是,這裏的問題主要是你的配置不起作用,我想是因爲我認爲(或者至少我從來沒有見過它這樣工作),你配置指令JkMount /localhost:80 worker1的方式不會工作。正如你猜測的那樣,我很確定唯一的規則是在你的第一個配置中工作的是JkMount /* worker1

所以我的選擇會是兩個名稱的虛擬主機的創建,並設置內他們每個人的JkMounts,或多或少是這樣的:

<VirtualHost *:80> 
    servername prod.LOCALSERVERNAME 
    DocumentRoot "E:/Production/Apache/htdocs" 
    <Directory "E:/Production/Apache/htdocs"> 
     Options +FollowSymLinks 
     AllowOverride All 
    </Directory> 

    JkOptions  +ForwardURICompatUnparsed 
    ProxyRequests off 
    JkMount /* worker1 
</VirtualHost> 


<VirtualHost *:80> 
    servername dummy.LOCALSERVERNAME 
    DocumentRoot "E:/Production/Apache/dummy" 

    JkOptions  +ForwardURICompatUnparsed 
    ProxyRequests off 
    JkMount /* worker2 
</VirtualHost> 
+0

謝謝你給我一點時間,我已經暫時轉移到其他東西,所以可能需要幾個星期才能檢查出來! – gringogordo

相關問題