Установил Apache, Tomcat и mod_jk. Часть worker.properties:
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
Apache слушает порт 80. Часть jk.conf:
JkMount /tui/* ajp13_worker
JkMount /tui ajp13_worker
Tomcat слушает 8009. Часть server.xml:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Приложение находится в /opt/tomcat/webapps/tui/. В нем есть index.html и сервлет. С сервлетом все в порядке он обрабатывается и доступен через localhost:8080/tui/servlet. Также index.html открывается через localhost:8080/tui. Однако, это прямое обращение к Tomcat (ведь так?). Если попытаться обратиться через порт 80, то Apache ссылается не туда куда надо. Т.е., вероятно, Apache не коннектится с Tomcat. Что я делаю не так?
P.S. Моя задача состоит в том, чтобы заставить Apache обрабатывать статику, а tomcat сервлеты и JSP.
Как оказалось проблема была не одна:
Во-первых, в worker.properties установить workers.java_home и workers.tomcat_home в значения не по-умолчанию.
Во-вторых, прописывать JkMount нужно было в директиве <VirtualHost>:
<VirtualHost *:80>
ServerName tui
DocumentRoot /opt/tomcat/webapps
<Directory /opt/tomcat/webapps>
AllowOverride All
Allow from all
Require all granted
</Directory>
JkMount /tui/servlet* ajp13_worker
</VirtualHost>
В-третьих, как видно выше (Require all granted), нужно было дать возможность обращения к директории с приложением (сайтом), так как по умолчанию Apache запрещает обращаться ко всему, что лежит вне /usr/share и /var/www
В-четвертых, (теоретически не обязательно), я писал <VirtualHost> не в jk.conf, а в /etc/apache2/sites-available/.
P.S. Если выполнять пункт 4, то нужно добавить в /etc/hosts следующее:
127.0.0.1 tui
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости