Серьезно, это не ответ, вы должны описать свою исходную ситуацию и то, что вы сделали в своем ответе, и принять ее.
Я просто хочу выяснить, что произошло, и мне нужна ваша обратная связь, чтобы понять больше об этом.
Изначально у вас была ошибка 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]
И все должно работать. Однако я не уверен, как вы решили ошибку связывания, вы не сказали.