# Как установить Tomcat на Ubuntu
Apache Tomcat — это веб-сервер, который может использоваться как контейнер для сервлетов и поддерживать работу Java-приложений. Как правило, его используют в связке с другим веб-сервером — Apache или Nginx — для расширения их функционала. В такой связке Tomcat поставляет веб-страницы, а стоящий «выше» веб-сервер обрабатывает их и передаёт пользователю.
В этой инструкции мы установим Java Development Kit — необходимый инструмент для работы Tomcat — и сам веб-сервер на подготовленный к работе VPS под управлением Ubuntu. Настроим работу веб-сервера, создадим пользователей, от чьего имени будет осуществляться вход в панель администрирования, и проверим работу веб-сервера.
# Подготовка к установке
Начнём установку с создания отдельного пользователя для Tomcat. Мы не будем наделять его особыми привилегиями и запретим вход на сервер от имени этого пользователя. Будем использовать его только для работы с директорией, где расположен Tomcat:
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat
Мы добавили пользователя tomcat, выделили для него директорию и запретили подключение к серверу от его имени. Теперь можно переходить к подготовке окружения.
Для работы Tomcat необходим минимальный набор Java-инструментов — Java Development Kit. В отдельной инструкции мы рассказывали, как установить Java на Ubuntu — вы можете воспользоваться этой инструкцией, чтобы развернуть полноценное Java-окружение или же установить минимально необходимый набор инструментов.
В данном случае мы ограничимся только Java Development Kit:
sudo apt install default-jdk
После завершения установки проверим версию установленной Java:
java -version
# Output
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment (build 11.0.14.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.14.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
Готово! Java Development Kit установлен и готов к работе. Теперь переходим к установке веб-сервера.
# Установка Tomcat
Устанавливать мы будем ядро Tomcat. Для этого на официальной странице (opens new window) выберем файл .tar.gz и скопируем ссылку для его загрузки.
Далее перейдём в папку с временными файлами и скачаем сюда наш архив с Tomcat:
cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
После завершения скачивания распакуем архив и скопируем распакованные файлы в специально отведённую для Tomcat директорию:
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
Теперь осталось только передать все права на эту папку нашему пользователю:
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/bin
Готово! Можно переходить к настройке Tomcat.
# Настройка Tomcat
Чтобы получить доступ к страницам управления Tomcat, необходимо вручную прописать нужных пользователей, их привилегии и пароли в файле, содержащем все сведения о пользователях:
sudo vim /opt/tomcat/conf/tomcat-users.xml
В открывшемся текстовом файле перед закрывающим тэгом нужно добавить следующие строки:
<role rolename="manager-gui" />
<user username="manager" password="manager_password" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="admin_password" roles="manager-gui,admin-gui" />
Здесь мы указываем права для двух новых пользователей (manager и admin), их имена и пароли для доступа.
По умолчанию Tomcat настроен так, чтобы доступ к нему нельзя было получить с удалённого хоста — только с того же, на котором расположен сам сервер. Это не очень удобно, поэтому следующим шагом мы уберём это ограничение.
Откроем конфигурационный файл, отвечающий за доступ пользователя manager к серверу:
sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml
В этом файле найдём раздел:
...
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Далее закомментируем его — укажем в начале строки символ <!--
, а в конце — -->
. Вот что должно получиться:
...
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
…
То же самое нужно сделать в конфигурационном файле host-manager:
sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml
# Создание сервиса на основе Tomcat
Чтобы Tomcat работал в фоновом режиме и сам перезапускался при рестарте сервера, добавим его в список сервисов.
Нам нужно узнать путь к исполняемому файлу java. Это можно сделать командой:
sudo update-java-alternatives -l
# Output
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
После этого в директории, где хранятся сведения о сервисах, создадим новый текстовый файл, описывающий Tomcat:
sudo nano /etc/systemd/system/tomcat.service
Заполним этот файл:
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Здесь мы описываем сам сервис, его расположение, правила работы и переменные его среды. Адрес исполняемого файла Java добавляем в строку Environment="JAVA_HOME=
. В строке Environment="CATALINA_OPTS=
описываем доступные для Tomcat лимиты использования памяти.
Строки Restart отвечают за тип и время перезагрузки веб-сервера — в данном случае он автоматически перезагружается после ошибок.
Теперь осталось только запустить дэймона и активировать сам веб-сервер:
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
Tomcat запущен. Проверить его работу можно командой systemctl status
.
# Веб-интерфейс Tomcat
По умолчанию Tomcat работает на порту 8080. Проверить это можно командой:
sudo netstat -tulpn
# Output
…
tcp6 0 0 :::8080 :::* LISTEN 34467/java
…
Если у вас запущен фаервол, не забудьте добавить порт в список разрешённых:
sudo ufw allow 8080
После этого можно открыть браузер и зайти по адресу your_server_ip:8080
.
Здесь вы должны увидеть стартовую страницу Tomcat:
В правой части стартовой страницы находятся кнопки для доступа в интерфейс управления Tomcat:
В этих разделах можно будет управлять работой как Java-приложений (Manager App), так и виртуальных хостов веб-сервера (Host Manager).
Функционал Tomcat достаточно широк, чтобы использовать его и как самостоятельный веб-сервер, и как вспомогательный сервис для обработки и поддержки Java-приложений в связке с классическим Apache или Nginx.