2011-10-01 125 views
0

我有亞馬遜的開箱即用Tomcat7(ami-518e4c38)實例,部署了一個戰爭文件,但不斷收到503錯誤。ec2,tomcat7和503錯誤

我已經設置了連接器監聽server.xml中的80端口,設置爲0.0.0.0/0

我假設我不我得到了80的默認安全組(HTTP)在必須手動啓動/停止tomcat,應該在實例啓動時啓動。我對這個是否正確?

當我ping本地主機(而ssh'ed到實例)的80端口2次,我得到:

2 packets transmitted, 2 received, 0% packet loss, time 999ms 

任何幫助將非常感激。

+0

爲什麼不檢查tomcat是否啓動了「ps fax | grep tomcat」? – stivlo

+0

...嗯,剛剛做了,這是我得到的,所以我在這裏看什麼:1127 pts/0 S + 0:00 \ _ grep tomcat 987? Sl 0:42/usr/lib/jvm/jre/bin/java -classpath /opt/tomcat7/bin/bootstrap.jar:/opt/tomcat7/bin/tomcat-juli.jar -Dcatalina.base =/opt/tomcat7 -Dcatalina.home =/opt/tomcat7 -Djava.awt.headless = true -Djava.endorsed.dirs =/opt/tomcat7/endorsed -Djava.io.tmpdir =/opt/tomcat7/temp -Djava.util.logging。 config.file =/opt/tomcat7/conf/logging.properties -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start – vector

+1

這意味着它正在運行。你有隻有狀態503,不是一個更長的錯誤信息,你可以複製和粘貼在這裏? – stivlo

回答

0

說真的,這不是一個答案,你應該描述你的初始狀況以及你在答案中所做的並接受它。

我只想清理髮生的事情,我需要您的反饋以更多地瞭解它。

最初你有一個503錯誤,這意味着服務不可,通常Tomcat的配置背後的Apache,並與我的意思是Apache服務器獲取(全部)的請求,並且可以向前(一些)他們到Tomcat ,如果配置如此。

如果你得到一個503錯誤,這意味着有一些服務器啓動並運行來回復你,那應該是Apache。如果我關閉Tomcat並嘗試請求將被轉發到Tomcat我得到一個URL:

服務暫時無法使用

服務器暫時無法服務您的請求由於維護停機或容量問題。請稍後再試。 Apache/2.2.17(Ubuntu)服務器在private.it端口80

這就是爲什麼我的第一個想法是檢查Tomcat是否運行。然後,你做:

$ ps fax | grep tomcat 

而且你明白我的tomcat的實際運行:

1127分/ 0 S + 0:00 grep的_ tomcat的987? Sl 0:42/usr/lib/jvm/jre/bin/java -classpath /opt/tomcat7/bin/bootstrap.jar:/opt/tomcat7/bin/tomcat-juli.jar -Dcatalina.base =/opt/tomcat7 -Dcatalina.home =/opt/tomcat7 -Djava.awt.headless = true -Djava.endorsed.dirs =/opt/tomcat7/endorsed -Djava.io.tmpdir =/opt/tomcat7/temp -Djava.util.logging。 config.file = /選擇/ tomcat7/conf目錄/ logging.properties -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap開始

另一個原因可能是Tomcat-Apache的連接配置不正確。但是,你張貼的Tomcat試圖綁定端口80和失敗:

二零一一年九月三十零日上午04時07分51秒org.apache.coyote.AbstractProtocol初始化重度:無法初始化具有ProtocolHandler [相關終點「http-bio-80」] java.net。的BindException:地址已在使用:80

我試圖複製的錯誤,我在conf/server.xml文件就去改變連接器偵聽端口80,而不是8080:

<!-- A "Connector" represents an endpoint by which requests are received 
    and responses are returned. Documentation at : 
    Java HTTP Connector: /docs/config/http.html (blocking & non-blocking) 
    Java AJP Connector: /docs/config/ajp.html 
    APR (HTTP/AJP) Connector: /docs/apr.html 
    Define a non-SSL HTTP/1.1 Connector on port 8080 
--> 
<Connector port="80" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 

我啓動tomcat和監控日誌:

bin/startup.sh && tail -f logs/catalina.out 

我得到一個異常類似於你得到了什麼,但不完全一樣:

SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"] 
java.net.BindException: Permission denied <null>:80 

現在,如果我檢查Tomcat是否在運行,我發現它確實在運行。雖然沒有檢查我會認爲,在這樣的情況下,服務器將放棄和退出。在我的情況下,更正將關閉Apache並直接使用Tomcat,這對於高流量站點不適用,或將Tomcat移回端口8080並安裝mod_jk。

The installation of mod_jk支持Apache和Tomcat之間的通信。然後在虛擬主機配置中,我會掛載一個文件夾或根文件夾,並在必要時做一些URL重寫:

JkMount /webappname/* ajp13_worker 
RewriteEngine on 
RewriteRule ^/nametoshow/(.*)$ /webappname/$1 [PT,QSA] 

而且一切都應該工作。但是,我不確定你是如何解決綁定錯誤的,你沒有說。