Установка Apache Tomcat 9 в Debian 9
Apache Tomcat – это сервер приложений, который используется для обслуживания приложений Java. Tomcat – это открытая реализация технологий Java Servlet и JavaServer Pages, выпущенная Apache Software Foundation. Этот мануал поможет установить и настроить Tomcat 9 на сервере Debian 9.
Требования
Для работы вам нужен сервер Debian 9, настроенный по этому мануалу.
1: Установка Java
Для работы Tomcat необходимо установить Java, иначе код Java не будет выполняться. Установите OpenJDK при помощи стандартного пакетного менеджера apt.
Сначала нужно обновить индекс пакетов.
sudo apt update
Чтобы установить JDK (Java Development Kit), введите:
sudo apt install default-jdk
После установки Java создайте специального пользователя tomcat для запуска сервиса Tomcat.
2: Создание пользователя Tomcat
В целях безопасности сервер Tomcat следует запускать с правами обычного пользователя (т.е. не root). Для этого создайте нового пользователя и группу.
Примечание: В некоторых средах по умолчанию установлен пакет unscd, предназначенный для ускорения работы серверов имен типа LDAP. Его последняя версия в репозитории Debian содержит баг, из-за которого некоторые команды (например, adduser, которую мы используем ниже) выводят такие дополнительные строки:
sent invalidate(passwd) request, exiting
sent invalidate(group) request, exiting
Эти сообщения безвредны, но если вы хотите от них избавиться и не планируете использовать LDAP и подобные серверы, удалите пакет unscd.
apt remove unscd
Чтобы создать группу tomcat, введите:
sudo groupadd tomcat
После этого нужно создать пользователя tomcat, который должен состоять в одноименной группе. Домашний каталог пользователя – /opt/tomcat (в него будет установлен Tomcat); оболочка – /bin/false (чтобы никто не смог войти в учётную запись):
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
3: Установка Tomcat
Tomcat 9 проще всего установить вручную из бинарного релиза.
На сайте проекта найдите последнюю версию Tomcat. На данный момент такой версией является 9.0.11. В разделе Binary Distributions найдите список Core и скопируйте ссылку на tar.gz.
На сервере перейдите в каталог /tmp, который предназначен для временных пакетов.
cd /tmp
Для дальнейшей работы нужно установить curl:
sudo apt install curl
Чтобы загрузить архив Tomcat, используйте следующую команду (приведенная ниже ссылка может отличаться):
curl -O http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.11/bin/apache-tomcat-9.0.11.tar.gz
Установите Tomcat в каталог /opt/tomcat. Создайте этот каталог и извлеките в него архив:
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-9*tar.gz -C /opt/tomcat --strip-components=1
После этого нужно установить соответствующие права на каталог.
4: Настройка доступа
Пользователь tomcat должен иметь доступ к установке Tomcat.
Откройте каталог Tomcat:
cd /opt/tomcat
Передайте пользователю tomcat права на каталог:
sudo chgrp -R tomcat /opt/tomcat
Затем дайте пользователю tomcat право на изменение каталога conf и право на чтение файлов в нём:
sudo chmod -R g+r conf
sudo chmod g+x conf
После этого сделайте пользователя tomcat владельцем каталогов webapps, work, temp и logs.
sudo chown -R tomcat webapps/ work/ temp/ logs/
5: Создание сервиса systemd
Чтобы запустить Tomcat как сервис, нужно создать service-файл systemd.
Серверу Tomcat нужно знать, где находится установка Java. Этот путь называется JAVA_HOME. Чтобы узнать расположение установки, используйте команду:
sudo update-java-alternatives -l
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64
Примечание: В данном примере JAVA_HOME выделен красным.
В данном случае JAVA_HOME будет выглядеть так:
JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-amd64
Примечание: Переменная JAVA_HOME может отличаться.
Теперь можно создать service-файл. Откройте tomcat.service в каталоге /etc/systemd/system:
sudo nano /etc/systemd/system/tomcat.service
Внесите в файл следующий скрипт, при необходимости изменив JAVA_HOME; также можно изменить настройки распределения памяти, которые указаны в CATALINA_OPTS:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.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
Сохраните и закройте файл.
После этого нужно перезапустить демон systemd:
sudo systemctl daemon-reload
Теперь сервис 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 Wed 2018-09-05 20:47:44 UTC; 3s ago
Process: 9037 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 9046 (java)
Tasks: 46 (limit: 4915)
CGroup: /system.slice/tomcat.service
└─9046 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja
Sep 05 20:47:44 tomcat systemd[1]: Starting Apache Tomcat Web Application Container...
Sep 05 20:47:44 tomcat systemd[1]: Started Apache Tomcat Web Application Container.
6: Настройка брандмауэра и тестирование сервера Tomcat
После запуска сервиса Tomcat нужно убедиться, что стандартная страница доступна в браузере.
Но сначала нужно откорректировать настройки брандмауэра и разблокировать порт Tomcat. Если вы следовали мануалу по начальной настройке сервера, на данный момент сервер защищён брандмауэром ufw.
Для обработки запросов Tomcat использует порт 8080. Чтобы разблокировать трафик этого порта, введите:
sudo ufw allow 8080
Теперь брандмауэр поддерживает трафик Tomcat. Чтобы получить доступ к стандартной странице сервиса, откройте в браузере ссылку:
http://server_domain_or_IP:8080
На экране появится приветственная страница Tomcat, которая содержит некоторую информацию о программе. Однако доступа к ссылкам (например, Manager App) у вас на данный момент нет.
Если всё работает должным образом, включите service-файл, чтобы сервис Tomcat автоматически запускался вместе с сервером.
sudo systemctl enable tomcat
7: Настройка веб-интерфейса Tomcat
Чтобы использовать поставляемый с Tomcat интерфейс, добавьте учетные данные на сервер Tomcat. Для этого отредактируйте файл tomcat-users.xml:
sudo nano /opt/tomcat/conf/tomcat-users.xml
Теперь нужно добавить пользователя, который будет иметь доступ к поставляемым с Tomcat интерфейсам: manager-gui и admin-gui. Для этого можно использовать приведённый ниже код (только выберите более надёжное имя и пароль пользователя):
<tomcat-users . . .>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Сохраните и закройте файл tomcat-users.xml.
По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager подключениями, поступающими с самого сервера. Поскольку мы устанавливаем Tomcat на удаленную машину, это ограничение нужно снять или изменить. Чтобы изменить ограничения доступа по IP-адресам, откройте соответствующие файлы context.xml.
Для приложения Manager:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
Для приложения Host Manager:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
Внутри закомментируйте ограничения IP-адресов, чтобы разрешить соединения из любой точки. Кроме того, если вы хотите разрешить только соединения, поступающие с вашего собственного IP-адреса, вы можете добавить в список свой внешний IP:
<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
8: Доступ к веб-интерфейсу
Теперь сервер Tomcat запущен. Откройте в браузере веб-интерфейс.
http://server_domain_or_IP:8080
На экране появится страница с сообщением:
If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!
Также на этой странице есть ссылки на веб-приложения админа, для которых ранее была создана учётная запись администратора.
Теперь откройте приложение Manager App по ссылке:
http://server_domain_or_IP:8080/manager/html
По запросу введите свои учетные данные.
Этот менеджер нужен для управления приложениями Java. Он позволяет запускать, перезапускать, развертывать, останавливать и сворачивать их. Кроме того, он может выполнять диагностику приложений (к примеру, обнаруживать утечки памяти). В конце этой страницы содержится информация о сервере.
Теперь откройте Host Manager:
http://server_IP_address:8080/host-manager/html/
Страница Virtual Host Manager нужна для управления виртуальными хостами; она позволяет добавлять виртуальные хосты для развёртывания приложений.
Заключение
В настоящее время сервер Tomcat полностью готов к обслуживанию приложений Java, но пока что не шифрует данные. Это означает, что все данные, включая конфиденциальную информацию, отправляются простым текстом, который может быть перехвачен и прочитан третьими сторонами в Интернете. Чтобы этого не произошло, настоятельно рекомендуется шифровать ваши соединения с помощью SSL. Вы можете узнать, как зашифровать подключения к Tomcat, в мануале Шифрование соединений Tomcat 8 на Apache или Nginx в Ubuntu 16.04.
Tags: Apache Tomcat, Apache Tomcat 9, Debian, Debian 9, OpenJDK
1 комментарий
Лучшие мануалы которые я видел!