2011-01-21 57 views
0

我有一個Centos5與運行的httpd,MySQL和tomcat6中。一切都好。我的目標是實現以下目標組合的Apache,Tomcat的,端口80,8080和其他的東西

www.domain.com >>>轉發/代理到www.domain.com:8080/myapplication(由tomcat提供服務) www.domain.com/phpmyadmin >>> www。 domain.com/phpmyadmin(由Apache提供htdocs服務) www.domain.com/* >>>也被htdocs文件夾serverd爲「普通」Apache內容

我該如何做到這一點?有任何想法嗎?

THX

回答

1

你只能從Apache的服務htdocs目錄似乎是送東西到Tomcat,這是運行一個servlet「myappplication」偏差。在這種情況下,

  1. 定義一個工作者(某些文本字符串,我們稱之爲「myworker」)。
  2. 近文件/etc/apache2/apache2.conf中的端部,添加線

--ignore該線路post--

# Where to find workers.properties 
# Update this path to match your conf directory location (put workers.properties next to httpd.conf) 
JkWorkersFile /etc/apache2/workers.properties 

# Where to put jk logs 
# Update this path to match your logs directory location (put mod_jk.log next to access_log) 
JkLogFile /var/log/apache2/mod_jk.log 

# Set the jk log level [debug/error/info] 
JkLogLevel info 

# Select the log format 
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 

# JkOptions indicate to send SSL KEY SIZE, 
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories 

# JkRequestLogFormat set the request format 
JkRequestLogFormat "%w %V %T" 


      JkMount /myapplication/* myworker 
  1. 在該目錄中,創建文件 「workers.properties」,包含以下內容:

    worker.myworker.type=ajp13 
    worker.myworker.host=localhost 
    worker.myworker.port=8081 
    worker.myworker.cachesize=10 
    worker.myworker.cache_timeout=600 
    worker.myworker.socket_keepalive=1 
    worker.myworker.socket_timeout=300 
    
  2. 編輯線tomcat_inst_ DIR/CONF/server.xml中放入線

    [連接器端口= 「8081」 協議= 「AJP/1.3」/]

注意:改變方括號尖括號中。 上面一行而來的[服務] ... [/服務]標籤內進出[引擎] ...的[/引擎]標籤,把它放在正上方的[引擎]線。

  1. 重啓Apache和Tomcat

現在的任何請求 「http://www.domain.com/myapplication/servletName [?PAR =值...]」 獲取由阿帕奇重定向(上端口80)到tomcat(在端口8081上),然後到servlet myapplication。我假設你有一個目錄「tomcat_home/webapps/myapplication」,它有一個WEB-INF目錄,裏面有一個「web.xml」文件。上面的「servletName」是您在該文件中的[servlet-name] ... [/ servlet-name]標籤之間定義的內容。

我選擇了數8081(隨意,只要它不與其它標準的服務衝突,選擇你的端口號),這樣8080端口仍處於活動狀態,爲您測試「http://www.domain.com: 8080/myapplication/servletName「(應該在端口8080和80,apache端口上產生相同的輸出)。

重要提示:保留上述過程中更改的所有文件的備份副本,以便在以上情況下可以恢復到工作系統。我不得不經過上面的無數次迭代才能使它工作!

祝你好運,並希望這對你有用, - M.S.

PS。對不起格式 - 我不能得到這個更好

0

有在www.domain.com你的索引文件重定向到www.domain.com:8080/myapplication。示例index.php:

<?php 

    header("Location: http://www.domain.com:8080/myapplication"); 

?> 

不是最乾淨或最優雅的方式,但它的工作原理。優雅的方法是在apache中使用虛擬主機。

+1

他的問題是不明確的,他是否正在尋找重定向,如你建議或像上面的代理。使用mod_jk代理並將用戶的所有請求保留在同一端口上會更清晰。 – 2011-01-23 00:32:15

+0

對不起,我不清楚:我不尋找重定向的網址。我也不希望URL中的端口等。我「只是」想讓我的tomcat應用程序響應我的域名請求... – Czar 2011-01-23 23:19:51