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

Как заставить Tomcat 9 работать с authbind для привязки к порту 80?

К сожалению, использование authbind в Tomcat не задокументировано, что затрудняет привязку Tomcat 9 к порту 80, если он не запущен с правами root. Я пробовал следующее на Ubuntu 16.04:

1) В server.xml измените порт атрибута на 80 в <Connector>.

2) Установка authbind.

3) Добавление AUTHBIND = yes в setenv.sh

4) Создание файла / etc / authbind / byport / 80 с разрешениями 777 и владельцем tomcat.

Если я сбегу startup.sh как root работает нормально. Но если я сделаю это как непривилегированный пользователь «tomcat», сценарий отобразит «Tomcat запущен» без сообщения об ошибке. Но браузер показывает «Невозможно подключиться».

Если я сбегу authbind startup.sh, результат тот же. Отсутствие сообщения об ошибке из сценария запуска оставляет меня в неведении относительно причины проблемы.

Возможно, актуальная информация: tomcat был установлен из zip-файла, а не из репо.

Есть ли что-то еще, что я упускаю из виду в хитростях, чтобы заставить эту работу работать? Этого очень не хватает в официальных документах.

Установка Tomcat из zip-архива в порядке.

Я прошу вас выполнить следующие шаги, чтобы настроить authbind и запустить tomcat на 80, я считаю, что вы установили authbind и tomcat 9.

  1. Сделайте порт 80 доступным для authbind (вы должны быть root):

коснитесь / etc / authbind / byport / 80; chmod 500 / etc / authbind / byport / 80; chown tomcat9 / и т. д. / authbind / byport / 80

* рассмотрение tomcat9 как пользователя без полномочий root для tomcat

  1. создайте файл TOMCAT / bin / setenv.sh со следующим содержимым:

CATALINA_OPTS = "- Djava.net.preferIPv4Stack = true"

  1. Изменить в "/usr/share/tomcat7/bin/startup.sh"

СТАРОЕ: exec "$ PRGDIR" / "$ EXECUTABLE" start "$ @

НОВИНКА: exec authbind --deep "$ PRGDIR" / "$ EXECUTABLE" start "$ @"

  1. внести изменения в файл TOMCAT / conf / server.xml, чтобы изменить порт на 80 с 8080

Еще одно решение для запуска tomcat на 80 - использование iptables.

sudo / sbin / iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Пожалуйста, дайте мне знать, если у вас есть какие-либо сомнения или вопросы, с которыми я мог бы помочь.

Спасибо, Нишант

На моем сервере CENTOS 6 и TOMCAT 7 мне пришлось:

  • установить authbind
 yum install authbind-2.1.1-0.x86_64.rpm 
  • создать файлы 80 для пользователя tomcat
touch /etc/authbind/byport/80; chmod 500 /etc/authbind/byport/80; chown tomcat /etc/authbind/byport/80
  • измените порт 8080 на 80
vim /usr/share/tomcat/conf/server.xml
Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
  • измените переменную TOMCAT_SCRIPT в сервисе tomcat:
vim /etc/init.d/tomcat
TOMCAT_SCRIPT="${TOMCAT_SCRIPT:-/usr/local/bin/authbind -deep /usr/sbin/tomcat}"
  • затем перезапустите кота
service tomcat restart