ec2, tomcat7 и 503 ошибка - PullRequest
       12

ec2, tomcat7 и 503 ошибка

0 голосов
/ 01 октября 2011

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

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

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

Когда я пингую localhost (в то время как ssh'ed в экземпляр) 2 раза по порту 80, я получаю:

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

Любая помощь будет наиболее ценной.

1 Ответ

0 голосов
/ 11 октября 2011

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

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

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

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

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

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

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

$ ps fax | grep tomcat

И вы поняли, что кот действительно запущен:

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...