ошибка ec2, tomcat7 и 503

У меня есть готовый экземпляр Amazon с Tomcat7 (ami-518e4c38), я развернул на нем военный файл, но продолжаю получать ошибку 503.

Я установил коннектор для прослушивания порта 80 в server.xml, в группе безопасности по умолчанию я установил 80 (HTTP) на 0.0.0.0/0.

Я предполагаю, что мне не нужно запускать/останавливать tomcat вручную, он должен запускаться при запуске экземпляра. Я прав в этом?

Когда я пингую локальный хост (при подключении к экземпляру по ssh) 2 раза на порту 80, я получаю:

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

Любая помощь будет принята с благодарностью.


person vector    schedule 01.10.2011    source источник
comment
почему бы вам не проверить, работает ли tomcat с факсом ps | грэп кот ?   -  person stivlo    schedule 01.10.2011
comment
... хм, только что сделал, вот что я получил, так что я здесь ищу: 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   -  person vector    schedule 01.10.2011
comment
значит запущено. у вас есть только статус 503, а не более длинное сообщение об ошибке, которое вы можете скопировать и вставить сюда?   -  person stivlo    schedule 01.10.2011
comment
@stivlo, если вы опубликуете это как ответ, я приму это   -  person vector    schedule 11.10.2011


Ответы (1)


Серьезно, это не ответ, вы должны описать свою первоначальную ситуацию и то, что вы сделали в своем ответе, и принять это.

Я просто хочу прояснить, что произошло, и мне нужен ваш отзыв, чтобы понять больше об этом.

Первоначально у вас была ошибка 503, что означает служба недоступна, обычно Tomcat настроен за Apache, и я имею в виду, что сервер Apache получает (все) запросы и может пересылать (некоторые из них) Tomcat, если он настроен для этого.

Если вы получаете ошибку 503, это означает, что какой-то сервер работает и отвечает вам, и это должен быть Apache. Если я закрою Tomcat и попытаюсь запросить URL-адрес, который будет перенаправлен на Tomcat, я получу:

Сервис временно недоступен

Сервер временно не может обслужить ваш запрос из-за простоя на техническое обслуживание или проблем с пропускной способностью. Пожалуйста, попробуйте позже. Сервер Apache/2.2.17 (Ubuntu) на порту private.it 80

Вот почему моей первой мыслью было проверить, работает ли Tomcat. Тогда вы сделали:

$ ps fax | grep 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=/opt/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

Другая причина может заключаться в том, что соединение Tomcat-Apache настроено неправильно. Однако затем вы написали, что Tomcat пытается связать порт 80 и терпит неудачу:

30 сентября 2011 г. 4:07:51 org.apache.coyote.AbstractProtocol init СЕРЬЕЗНО: не удалось инициализировать конечную точку, связанную с 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.

Установка mod_jk обеспечивает связь между Apache и Tomcat. Затем в конфигурации виртуального хоста я бы смонтировал папку или корневую папку и при необходимости переписал URL-адрес:

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

И все должно работать. Однако я не уверен, как вы решили ошибку привязки, вы не сказали.

person stivlo    schedule 11.10.2011