Ставим tomcat, настраиваем apache + jk коннектор
Предупреждение
Данный текст написан новичком в настройке tomcat да и в целом Java.
Установка
Установка достаточно простая, заходим в консоль и ставим tomcat. Надеюсь у вас стоит Java и apache? ;)
sudo pacman -Suy tomcat8 tomcat-native
Включаем сервис
systemctl enable tomcat8.service
Стартуем ...
sudo systemctl start tomcat8.service
Коннектор JK я буду ставить из aur:
yaourt -S mod_jk
На этом собственно всё. Заходим на http://localhost:8080 проверять работает ли tomcat.
Если всё в порядке, то вы должны увидеть что-то вроде этого
Настройка
Тут я напишу о простой настройке, не вникая в подробности.
По умолчанию файлы конфигурации хранятся в /etc/tomcat8/.
Первым делом настроим пользователей. А то вы наверное уже потыкали кнопочки Server Status, Manager App, а там просят какой то пароль? =)
Открываем tomcat-users.xml
sudo nano /etc/tomcat8/tomcat-users.xml
И приводи его к такому виду:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcatpswd" roles="manager-gui,admin-gui"/>
</tomcat-users>
И не забываем сменить username и password!
//Вот теперь можно пробежаться по кнопочкам Server Status, Manager App, Host Manager. Но перед этим лучше рестартонуть сервер. sudo systemctl restart tomcat8.service
хотя пока рано. Но вдруг не терпится)//
Теперь некоторые настройки сервера. Лучше предварительно сделать бэкап файла server.xml
И заменить его содержимое следующими настройками:
sudo nano /etc/tomcat8/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8487" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="java.local" appBase="/mnt/raid/domains/java.local">
<Context path="" docBase="html"/>
</Host>
</Engine>
</Service>
</Server>
В этом файле я поменял порт коннектора HTTP с 8080 на 8487, т.к. 8080 достаточно популярный и часто бывает занят. Так же добавил ещё один тег Host, в котором указал путь до папки. Т.е. localhost остался, и до панели можно достучаться по адресу localhost:8487
Настроим коннектор jk.
Добавляем в файл /etc/httpd/conf/httpd.conf строчку
Include conf/extra/java-jk.conf
Теперь
LoadModule jk_module modules/mod_jk.so
к директиве LoadModule
Создадим и заполним java-jk.conf
sudo nano /etc/httpd/conf/extra/java-jk.conf
Приводим к такому виду
<IfModule jk_module>
JkWorkersFile "/etc/httpd/conf/extra/workers.properties"
JkLogFile "/var/log/tomcat8/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</IfModule>
А рядом положим worker.properties
sudo nano /etc/httpd/conf/extra/workers.properties
workers.tomcat_home=/usr/share/tomcat8
workers.java_home=/usr/lib/jvm/java-8-openjdk/
# unix stile
ps=/
worker.list=ajp13
# ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
//Пока не знаю по какой причине, но jk мне выдавал ошибку (спасибо логам), что не может найти директорию log//
//в// /etc/httpd/. //Я ещё не разбирался, и просто создал требуемую директорию. //
Настроим vhost у apache.
<VirtualHost java.local:80>
ServerAdmin admin@java.local
ServerName java.local
DocumentRoot /mnt/raid/domains/java.local/html
ErrorLog /mnt/raid/domains/java.local/logs/error.log
CustomLog /mnt/raid/domains/java.local/logs/access.log common
JkMount /* ajp13
</VirtualHost>
Пропишем имя в hosts
sudo nano /etc/hosts
127.0.0.1 java.local
И перезапускаем apache и tomcat
sudo systemctl restart httpd.service
sudo systemctl restart tomcat8.service
Размещаем в нашей директории (в моём случае /mnt/raid/domains/java.local/html) тестовый html файл с именем index.html. К примеру такой:
<html>
<head>
<title>example static</title>
</head>
<body>
<h2>Hello, Java!</h2>
</body>
</html>
Теперь пробуем перейти на java.local
И если всё правильно, то увидим нашу надпись.
Видим? Значит статика работает. На этом пока всё. Кстати, не стоит забывать менять пути на свои ;)