Назад | Перейти на главную страницу

Как заставить tomcat привязаться к IPv4-адресу?

Я недавно установил tomcat с помощью сценария установки из сообщества apache solr typo3 и провел последние 3 дня, пытаясь выяснить, почему он не работает, пока случайно не заметил, что когда я запросил процесс, прослушивающий порт, через "lsof -i ", он был привязан к протоколу ipv6. Я везде гуглил, и большинство говорит, что установка адреса на 0.0.0.0 в разъеме tomcat решает эту проблему, другие говорят, что настройка JAVA_OPTS = "- Djava.net.preferIPv4Stack = true"; Я пробовал первое, что не работает, но второе, я не знаю, куда его поставить. Одно решение, которое я где-то читал, предлагало вставить его в setenv.sh но я не могу найти этот файл в своей установке Tomcat. Я был бы признателен за любую помощь в этом отношении. Версия tomcat - 6.x, ОС - ubuntu 11.10. Спасибо

Многие предлагали обновить catalina.sh сценарий запуска. Да, это решение подойдет, но catalina.sh скрипт не предназначен для настройки / обновления. Вместо этого все изменения должны быть внесены в сценарий настройки, т.е. setenv.sh.

НОТА: TOMCAT_HOME/bin/setenv.sh не существует по умолчанию, вам нужно его создать. Проверить catalina.sh скрипт, и вы увидите, что скрипт запуска проверяет, setenv.sh существует, и выполняется, если это так.

Итак, предлагаю вам создать новый TOMCAT_HOME/bin/setenv.sh скрипт одной строкой:

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

Хорошо, я наконец решил это. Меня направили в попробуй это и решение Хенка. Ни один из них, похоже, не работал с удаленным виртуальным сервером. Я предполагаю, что, поскольку я нахожусь в общем пространстве ядра, поставщик предотвращает это. На всякий случай добавил: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses в сценарий запуска catalina.sh, и это, похоже, устранило проблему привязки tomcat к ipv6.

Правильный синтаксис для изменения catalina.sh:

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

Если вы использовали этот установщик: "Apache Solr для TYPO3", вы можете изменить адрес в файле server.xml. По умолчанию указывается localhost, поэтому найдите 127.0.0.1 и измените его на нужный IPv4-адрес. Не забудьте перезапустить Tomcat6, чтобы изменения вступили в силу.

ОБНОВЛЕНИЕ, 20120521

См. Мой комментарий ниже о том, как отключить IPv6 в Ubuntu 11.10.

Я успешно протестировал это на Virtualbox-VM на моем Mac. Адрес порта соединителя 8080 изменен с 127.0.0.1 на 0.0.0.0 в server.xml.

Затем отключение IPv6 приводит к исчезновению «tcp6», поэтому он привязан к IPv4-адресу.

До / с включенным IPv6:

# netstat -anp | grep 8080   
tcp6       0      0 :::8080                 :::*                    LISTEN      1972/java

После отключения / IPv6:

# netstat -anp | grep 8080   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      2045/java

Хотя это, вероятно, не самый предпочтительный метод, я заметил, что отключение IPv6 на уровне ядра убедит Tomcat открыть привязку IPv4.

Наряду с другим ответом с использованием setenv.sh и CATALINA_OPTS ...

Используя Tomcat SSL с APR, единственный способ заставить Tomcat привязаться к ipv4 - добавить это в конфигурацию коннектора:

address="0.0.0.0"

server.xml выглядит так:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               compression="off"
               connectionTimeout="1190"
               address="0.0.0.0"
               >

Debian 8 перейдите к своему любимому редактору на / и т.д. / по умолчанию / grub ; ищи раздел GRUB_CMDLINE_LINUX_DEFAULT= "тихо" ** с затем добавить ipv6.disable = 1, как показано ниже

GRUB_CMDLINE_LINUX_DEFAULT = "ipv6.disable = 1 quiet"

Сохранить и выйти. В этом же каталоге используйте свой любимый редактор на / и т.д. / по умолчанию / tomcat8 затем найдите раздел с JAVA_OPTS = который будет закомментирован, добавьте следующее ниже этой строки. JAVA_OPTS = "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

Сохранить и выйти

В командной строке введите update-grub , если вы используете sudo с sudo, перезапустите tomcat8 перезапуск службы tomcat8

Теперь вы должны быть на IPv4.

Пожалуйста, в будущих публикациях указывайте полные пути и имена файлов. Спасибо