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