# Как установить 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»

В правой части стартовой страницы находятся кнопки для доступа в интерфейс управления Tomcat:

«tomcat_but»

В этих разделах можно будет управлять работой как Java-приложений (Manager App), так и виртуальных хостов веб-сервера (Host Manager).

Функционал Tomcat достаточно широк, чтобы использовать его и как самостоятельный веб-сервер, и как вспомогательный сервис для обработки и поддержки Java-приложений в связке с классическим Apache или Nginx.