Установка Tomcat 9 на Debian 10
13-03-2021. Разместил: synergix
Доброе время суток, уважаемый посетитель.В этом руководстве мы рассмотрим установку сервера приложений Apache Tomcat на Debian 10.
Я предполагаю, что вы обладаете первоначальными навыками по администрированию *nix систем и не буду подробно описывать каждую команду.
Для начала обновим пакеты системы:
$ sudo apt updateЗатем установим последнюю версию JDK
$ sudo apt install default-jdkТеперь следует создать непривилегированного пользователя tomcat в группе tomcat с отключенным шеллом и домашней директорией /opt/tomcat
$ sudo groupadd tomcat
$ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcatПерейдем во временную директорию и скачаем архив с последней стабильной версией Tomcat 9 версии, которая на момент написания статьи составляла 9.44
Впрочем, вы всегда можете посмотреть актуальную версию по данной ссылке.
$ cd /tmp
$ wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.44/bin/apache-tomcat-9.0.44.tar.gzСоздадим директорию для собственно Tomcat и его приложений и разархивируем скачанный архив.
$ sudo mkdir /opt/tomcat
$ sudo tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat --strip-components=1Выставим нужные права и пользователя с группой:
$ cd /opt/tomcat
$ sudo chgrp -R tomcat /opt/tomcat
$ sudo chmod -R g+r conf
$ sudo chmod g+x conf
$ sudo chown -R tomcat webapps/ work/ temp/ logs/Проверим установленную версию JDK
$ sudo update-java-alternatives -lВ выводе команды будет присутствовать версия и путь до Java
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64Запомним вывод, он нам пригодится в дальнейшем для systemd файла.
Создадим systemd файл для запуска Tomcat как сервиса
sudo nano /etc/systemd/system/tomcat.serviceсо следующим содержимым:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.targetВ
Environment=JAVA_HOME=
данного файла вам нужно будет указать ту версию Java, что установлена в вашей системе.Добавим запуск Tomcat при старте системы
$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcatИ попробуем запустить его
$ sudo systemctl start tomcatЕсли все сделано правильно, то в выводе команды
$ sudo systemctl status tomcatбудут строки вида
tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2021-03-12 10:47:03 EET; 1 day 6h ago
Process: 1820 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1827 (java)
Tasks: 40 (limit: 4915)
Memory: 1.6G
CGroup: /system.slice/tomcat.service
└─1827 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat
Mar 12 10:47:03 systemd[1]: Starting Apache Tomcat Web Application Container...
Mar 12 10:47:03 startup.sh[1820]: Tomcat started.
Mar 12 10:47:03 systemd[1]: Started Apache Tomcat Web Application Container.
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2021-03-12 10:47:03 EET; 1 day 6h ago
Process: 1820 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 1827 (java)
Tasks: 40 (limit: 4915)
Memory: 1.6G
CGroup: /system.slice/tomcat.service
└─1827 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat
Mar 12 10:47:03 systemd[1]: Starting Apache Tomcat Web Application Container...
Mar 12 10:47:03 startup.sh[1820]: Tomcat started.
Mar 12 10:47:03 systemd[1]: Started Apache Tomcat Web Application Container.
Следует отметить, что по умолчанию Tomcat слушает по 8080 порту на всех интерфейсах и вам следует проверить правила iptables, чтобы соединения по данному порту не блокировались.
Также, иногда запуск на данном порту не всегда удобен, особенно если вы используете различные панели управления либо используете связку Apache+nginx, где зачастую Apache использует именно 8080 порт.
Для примера, мы перекинем Tomcat на порт 8081, и будем обращаться к нему через nginx с SSL подключением.
Для начала, добавим пользователя admin с паролем, отредактировав
$ sudo nano /opt/tomcat/conf/tomcat-users.xmlПриведем его к виду
<tomcat-users>
...
<user username="admin" password="passw0rd" roles="manager-gui,admin-gui"/>
</tomcat-users>где passw0rd - пароль пользователя admin. Рекомендую задавать его со всеми требованиями к парольной безопасности.
Далее, перенесем запуск Tomcat на 8081 и на loopback интерфейс, отредактировав
$ sudo nano /opt/tomcat/conf/server.xmlНайдем блок
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
и приведем его к виду
<Connector address="127.0.0.1" port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Теперь отредактируем файл
$ sudo nano /opt/tomcat/webapps/manager/META-INF/context.xmlи
$ sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xmlприведя к виду
<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>Перезапустим Tomcat для применения изменений
$ sudo systemctl restart tomcatПосле чего Tomcat запустится на 127.0.0.1 и порту 8081. Но, обращаться к нему можно будет только локально. Исправим это досадное недоразумение.
Будем считать, что nginx у вас уже установлен, у вас имеется служебный домен (к примеру, dev.mydomain.com) с полученным сертификатом Let's encrypt.
Добавим в конфиг nginx данного поддомена
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8081/;
}
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8081/;
}
и перезапустим nginx
$ sudo systemctl restart nginxТеперь, при заходе на https://dev.mydomain.com вас встретит стартовая страница Tomcat.
Вернуться назад