Подтвердить что ты не робот

Tomcat7 связывается с портом 80 в Ubuntu 14.04LTS

У меня возникла проблема с моей установкой tomcat7 в недавно обновленной системе Ubuntu. С момента обновления до 14.04 LTS tomcat отказывается запускать порт 80 с ошибкой, которую я не могу решить, и не нахожу ничего о том, как ее исправить:

    Information: Initializing ProtocolHandler ["http-bio-80"]
Apr 24, 2014 4:39:37 PM org.apache.coyote.AbstractProtocol init
Schwerwiegend: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]
java.net.SocketException: Datei oder Verzeichnis nicht gefunden
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
    at java.net.ServerSocket.bind(ServerSocket.java:376)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)
    at java.net.ServerSocket.<init>(ServerSocket.java:181)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397)
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:813)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)

Дело в том, что я сделал то, что я сделал в предыдущем Ubuntus (был запущен 12.04 LTS), короче, отредактировал server.xml на порт 80, а также изменил authbind в /etc/default/tomcat 7 на да, так что в основном все, что вам нужно сделать, чтобы запустить tomcat на порту 80.

Выполнение этих шагов на 12.04LTS отлично работает, только на 14.04LTS он теперь выдает эту ошибку "файл или каталог не найден".

Также при обновлении 12.04LTS (на котором tomcat работает нормально на порту 80) до 14.04LTS он неожиданно выдает ошибку выше, а вся конфигурация идентична той, что работала в 12.04LTS.

Я надеюсь, что кто-нибудь может помочь мне исправить эту проблему.

4b9b3361

Ответ 1

Следующие работы:

apt-get install authbind

Сначала установите AUTHBIND=yes в /etc/default/tomcat7 файл

sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat7 /etc/authbind/byport/80

Здесь был ссылочный URL, но сайт был взломан (помечен как опасный в Edge, а Chrome предлагает мне установить расширение браузера).

Ответ 2

Разрешить порт 8080 по умолчанию в server.xml

Запуск: sudo/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT - to-port 8080

RU Этот перенаправляющий трафик с порта 80 на 8080 (по умолчанию в tomcat) в Ubuntu 14.04 невозможно установить порт по умолчанию на 80 в server.xml.

FR (Ceci redirige le trafic du port 80 vers 8080 (Par défaut dans tomcat) dans Ubuntu 14.04 il nest pas possible de mettre le port par défaut à 80 dans server.xml.)

Чтобы сделать это постоянным: sudo apt-get install iptables-persistent

RU Этот пакет позволяет вам сохранить ранее введенные правила iptables. Обязательно ответьте "Да" (сохраните текущие настройки). FR Ce pack permet de sauvegarder les règles iptables entrées précédemment. Вопросы и ответы, (sauvegarder les paramètres actels).

Ответ 3

Запустите службы tomcat, используя authbind, это позволит пользователю запускать порты менее 1024, нам не нужно перенаправлять или iptables.

apt-get install authbind -y

Чтобы установить программное обеспечение Authbind

chmod -R 755/etc/authbind

Группа

должна быть группой пользователей.

chown -Rh root: group/etc/authbind

После этого выполните приведенные ниже команды

cd/etc/authbind/byuid

В качестве примера можно указать идентификатор пользователя ID 2000, вы можете использовать свой идентификатор пользователя

echo '0.0.0.0/0:1,1023' > 2000

Этот файл должен быть владельцем пользователя и группы.

chown: 2000

chmod 700 2000

Добавьте приведенную ниже строку в файл запуска tomcat $CATALINA_BASE/startup.sh

export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"

Для запуска tomcat с использованием службы Authbind startup.sh

Прокомментировать нижнюю строку

#$CATALINA_HOME/bin/startup.sh

Добавить этот конец как конец файла

AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " 

$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh   

теперь вы должны иметь возможность запускать службы tomcat как пользователь с менее 1024 портами.

Ответ 4

У меня была та же проблема. В конце я использовал перенаправление портов iptables вместо механизма authpriv

то есть.

1) в /etc/default/tomcat 7, установите authpriv = no

2) в файле /etc/tomcat 7/server.xml, используйте

<Connector port=8080...
вместо 80

3) ufw разрешить 8080/tcp

4) следуйте инструкциям здесь: https://serverfault.com/info/238563/can-i-use-ufw-to-setup-a-port-forward

То же самое можно сделать для порта 443 (SSL) при необходимости