Apache Tomcat — это веб-сервер и контейнер сервлетов, используемый для обслуживания приложений Java. Tomcat представляет собой реализацию технологий Java Servlet и JavaServer Pages с открытым исходным кодом, разработанную Apache Software Foundation. В настоящем руководстве описывается базовая установка и определенные моменты конфигурации последней версии Tomcat 9 на сервере Ubuntu 18.04.
Шаг 1 — Установка Java
Tomcat требуется наличие на сервере Java, чтобы выполнять любой код веб-приложения Java. Мы можем удовлетворить это требование, установив OpenJDK с помощью apt.
Во-первых, обновите индекс пакетов apt:
$ sudo apt update
Затем установите пакет для разработки Java с помощью apt:
$ sudo apt install default-jdk
Теперь, когда Java установлена, мы можем создать пользователя tomcat, который будет использоваться для запуска службы Tomcat.
Шаг 2 — Создание пользователя Tomcat
По соображениям безопасности Tomcat необходимо запускать с помощью пользователя без привилегий (т. е. без прав root). Мы создадим нового пользователя с группой, который будет запускать службу Tomcat.
Во-первых, создайте новую группу tomcat:
$ sudo groupadd tom
cat
Далее создайте нового пользователя tomcat. Мы сделаем этого пользователя участником группы tomcat с домашней директорией /opt/tomcat (куда мы будем устанавливать Tomcat) и с оболочкой в /bin/false (чтобы никто не мог войти в учетную запись):
$ sudo useradd -s /bin/false -g tom
cat -d /opt/tom
cat tom
cat
Теперь, когда наш пользователь tomcat настроен, мы загрузим и установим Tomcat.
Шаг 3 — Установка Tomcat
Лучшим способом установки Tomcat 9 является загрузка последней бинарной версии, а затем ее ручная настройка.
Найдите последнюю версию Tomcat 9 на странице загрузки Tomcat 9. На момент написания номер последней версии — 9.0.10, но вы должны использовать более позднюю стабильную версию, если такая будет доступна. Перейдите в раздел Binary Distributions (Бинарные дистрибутивы), а затем в списке Core скопируйте ссылку на файл tar.gz. В большинстве браузеров вы можете сделать это, нажав правой кнопкой мыши по ссылке и выбрав Скопировать адрес ссылки или похожий вариант.
Далее перейдите к директории /tmp на сервере. Эта директория отлично подходит для загрузки кратковременных элементов, таких как tar-архив (тарбол) Tomcat, который нам не потребуется после извлечения содержимого Tomcat:
$ cd /tmp
Используйте curl для загрузки ссылки, скопированной на веб-сайте Tomcat:
$ curl -O paste_the_copied_link_here
Мы установим Tomcat в директорию /opt/tomcat. Создайте директорию, а затем извлеките туда архив с помощью этих команд:
$ sudo mkdir /opt/tom
cat$ sudo tar xzvf apache-tom
cat-*tar.gz -C /opt/tom
cat --strip-components=1
Далее мы сможем настроить соответствующие разрешения пользователя для нашей установки.
Шаг 4 — Обновление разрешений
Пользователю tomcat, которого мы настроили, требуется доступ к установке Tomcat. Сейчас мы добавим нужные настройки.
Перейдите в директорию, куда мы распаковали установку Tomcat:
$ cd /opt/tom
cat
Предоставьте группе tomcat права владения для всей директории установки:
$ sudo chgrp -R tom
cat /opt/tom
cat
Далее предоставьте группе tomcat доступ для чтения для директории conf и всего ее содержимого, а также доступ execute для самой директории:
$ sudo chmod -R g+r conf$ sudo chmod g+x conf
Сделайте пользователя tomcat владельцем директорий webapps, work, temp и logs:
$ sudo chown -R tom
cat webapps/ work/ temp/ logs/
Теперь, когда соответствующие разрешения настроены, мы сможем создать служебный файл systemd для управления процессом Tomcat.
Шаг 5 — Создание служебного файла systemd
Мы должны иметь возможность запустить Tomcat в качестве службы, поэтому мы настроим служебный файл systemd.
Tomcat должен знать, где установлена Java. Обычно этот путь называют JAVA_HOME. Самым простым способом поиска расположения является использование этой команды:
$ sudo update-java-alternatives -l
Output
java-1.11.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.11.0-openjdk-amd64
Ваш путь JAVA_HOME — это вывод из последнего столбца. Учитывая приведенный выше пример, для этого сервера правильное значение JAVA_HOME будет выглядеть таким образом:
JAVA_HOME /usr/lib/jvm/java-1.11.0-openjdk-amd64
Ваш путь JAVA_HOME может отличаться.
Получив эту информацию, мы сможем создать служебный файл systemd. Откройте файл tomcat.service в директории /etc/systemd/system с помощью следующей команды:
$ sudo nano /etc/systemd/system/tom
cat.service
Добавьте следующее содержимое в служебный файл. Измените значение JAVA_HOME, если потребуется, согласно значению, которое вы используете в вашей системе. Также вы можете изменить параметры распределения памяти, указанные в CATALINA_OPTS:
/etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tom
cat Web Application Container
After=network.target
[Service]
Type=forkingEnvironment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tom
cat/temp/tom
cat.pid
Environment=CATALINA_HOME=/opt/tom
cat
Environment=CATALINA_BASE=/opt/tom
cat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:///dev/./urandom'
ExecStart=/opt/tom
cat/bin/startup.sh
ExecStop=/opt/tom
cat/bin/shutdown.sh
User=tom
cat
Group=tom
cat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
После завершения редактирования сохраните и закройте файл.
Далее перезагрузите демон systemd, чтобы он знал о существовании вашего служебного файла:
$ sudo systemctl daemon-reload
Запустите службу Tomcat с помощью следующей команды:
$ sudo systemctl start tom
cat
Дополнительно проверьте, что служба запущена без ошибок, выполнив следующую команду:
$ sudo systemctl status tom
cat
Шаг 6 — Настройка брандмауэра и тестирование сервера Tomcat
Теперь, когда служба Tomcat запущена, мы сможем протестировать ее, чтобы убедиться, что страница по умолчанию доступна.
Перед этим нам нужно настроить брандмауэр, чтобы разрешить доступ к службе для наших запросов. Если вы выполнили предварительные требования, у вас должен быть включен брандмауэр ufw.
Tomcat использует порт 8080 для принятия обычных запросов. Разрешите прием трафика для этого порта с помощью следующей команды:
$ sudo ufw allow 8080
После изменения брандмауэра вы можете получить доступ к начальной странице по умолчанию, перейдя к вашему домену или IP-адресу с :8080 в браузере.
Open in web browserhttp://server_domain_or_IP:8080
Вы увидите начальную страницу Tomcat по умолчанию в дополнение к другой информации. Однако, если вы воспользуетесь ссылками на диспетчер приложения, например, вам будет отказано в доступе. Мы можем настроить этот доступ далее.
Если вы смогли успешно получить доступ к Tomcat, сейчас лучшее время для активации служебного файла, чтобы Tomcat автоматически запускался при загрузке:
$ sudo systemctl enable tom
cat
Шаг 7 — Настройка веб-интерфейса управления Tomcat
Чтобы использовать веб-приложение диспетчера, которое поставляется вместе с Tomcat, мы должны добавить вход на ваш сервер Tomcat. Для этого мы отредактируем файл tomcat-users.xml:
$ sudo nano /opt/tom
cat/conf/tom
cat-users.xml
Вы должны будете добавить пользователя, который может получить доступ к manager-gui и admin-gui (веб-приложения, которые поставляются вместе с Tomcat). Вы можете сделать это, определив пользователя, аналогичного приведенному ниже примеру, между тегами tomcat-users. Обязательно измените имя пользователя и пароль на более безопасные:
tomcat-users.xml — Admin User
<tomcat-users . . .>\
\<user username="admin" password="password" roles="manager-gui,admin-gui"/\> \
</tomcat-users>
Сохраните файл и закройте его после завершения.
По умолчанию новые версии Tomcat ограничивают доступ к приложениям диспетчера и диспетчера хостов для подключений с самого сервера. Поскольку мы выполняем установку на удаленном компьютере, вы, вероятно, захотите удалить или изменить это ограничение. Чтобы изменить подобные ограничения IP-адреса, откройте соответствующие файлы context.xml.
Для приложения диспетчера введите:
$ sudo nano /opt/tom
cat/webapps/manager/META-INF/context.xml
Для приложения диспетчера хостов введите:
$ sudo nano /opt/tom
cat/webapps/host-manager/META-INF/context.xml
Внутри закомментируйте ограничение IP-адреса, чтобы разрешить подключение из любого места. Также, если вы хотите разрешить доступ только для подключений с вашего IP-адреса, вы можете добавить ваш публичный IP-адрес в список:
context.xml files for Tomcat webapps
<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 tom
cat
Шаг 8 — Доступ к веб-интерфейсу
Теперь, после создания пользователя, мы снова сможем получить доступ к веб-интерфейсу управления в веб-браузере. Вы снова можете перейти к правильному интерфейсу, введя в браузере доменное имя или IP-адрес вашего сервера с портом 8080:
Open in web browser
http://server_domain_or_IP:8080
Страница, которую вы увидите, должна выглядеть аналогично странице, которую вы видели при тестировании ранее:

Давайте изучим приложение диспетчера, доступ к которому можно получить по ссылке или по адресу http://server_domain_or_IP:8080/manager/html. Вам нужно будет ввести данные учетной записи, которые вы добавили в файл tomcat-users.xml. После этого вы должны увидеть страницу, которая выглядит следующим образом:

Веб-приложение диспетчера используется для управления приложениями Java. Здесь вы можете запустить, остановить, перезагрузить, развернуть и отменить развертывание. Также вы можете запустить инструменты диагностики для ваших приложений (например, найти утечки памяти). Информация о вашем сервере доступна в самом низу страницы.
Теперь давайте рассмотрим диспетчер хостов, доступный по ссылке или по адресу http://server_domain_or_IP:8080/host-manager/html/:

На странице диспетчера виртуальных хостов вы можете добавить виртуальные хосты для обслуживания ваших приложений.
This article was updated on 7 декабря 2022
