// Tutorial //

Установка Apache Tomcat 9 в Ubuntu 18.04

Published on January 24, 2020
Default avatar
By Justin Ellingwood
Developer and author at DigitalOcean.
Установка Apache Tomcat 9 в Ubuntu 18.04

Введение

Apache Tomcat — это веб-сервер и контейнер сервлетов, используемый для обслуживания приложений Java. Tomcat представляет собой реализацию технологий Java Servlet и JavaServer Pages с открытым исходным кодом, разработанную Apache Software Foundation. В настоящем руководстве описывается базовая установка и определенные моменты конфигурации последней версии Tomcat 9 на сервере Ubuntu 18.04.

Предварительные требования

Прежде чем начать изучение настоящего обучающего руководства, необходимо настроить на сервере стандартного пользователя без прав root и с привилегиями sudo. Вы можете узнать, как это сделать, из нашего руководства по начальной настройке сервера Ubuntu 16.04.

Шаг 1 — Установка Java

Tomcat требуется наличие на сервере Java, чтобы выполнять любой код веб-приложения Java. Мы можем удовлетворить это требование, установив OpenJDK с помощью apt.

Во-первых, обновите индекс пакетов apt:

  1. sudo apt update

Затем установите пакет для разработки Java с помощью apt:

  1. sudo apt install default-jdk

Теперь, когда Java установлена, мы можем создать пользователя tomcat, который будет использоваться для запуска службы Tomcat.

Шаг 2 — Создание пользователя Tomcat

По соображениям безопасности Tomcat необходимо запускать с помощью пользователя без привилегий (т. е. без прав root). Мы создадим нового пользователя с группой, который будет запускать службу Tomcat.

Во-первых, создайте новую группу tomcat:

  1. sudo groupadd tomcat

Далее создайте нового пользователя tomcat. Мы сделаем этого пользователя участником группы tomcat с домашней директорией /opt/tomcat (куда мы будем устанавливать Tomcat) и с оболочкой в /bin/false (чтобы никто не мог войти в учетную запись):

  1. sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

Теперь, когда наш пользователь tomcat настроен, мы загрузим и установим Tomcat.

Шаг 3 — Установка Tomcat

Лучшим способом установки Tomcat 9 является загрузка последней бинарной версии, а затем ее ручная настройка.

Найдите последнюю версию Tomcat 9 на странице загрузки Tomcat 9. На момент написания номер последней версии — 9.0.10, но вы должны использовать более позднюю стабильную версию, если такая будет доступна. Перейдите в раздел Binary Distributions (Бинарные дистрибутивы), а затем в списке Core скопируйте ссылку на файл tar.gz. В большинстве браузеров вы можете сделать это, нажав правой кнопкой мыши по ссылке и выбрав Скопировать адрес ссылки или похожий вариант.

Далее перейдите к директории /tmp на сервере. Эта директория отлично подходит для загрузки кратковременных элементов, таких как tar-архив (тарбол) Tomcat, который нам не потребуется после извлечения содержимого Tomcat:

  1. cd /tmp

Используйте curl для загрузки ссылки, скопированной на веб-сайте Tomcat:

  1. curl -O paste_the_copied_link_here

Мы установим Tomcat в директорию /opt/tomcat. Создайте директорию, а затем извлеките туда архив с помощью этих команд:

  1. sudo mkdir /opt/tomcat
  2. sudo tar xzvf apache-tomcat-*tar.gz -C /opt/tomcat --strip-components=1

Далее мы сможем настроить соответствующие разрешения пользователя для нашей установки.

Шаг 4 — Обновление разрешений

Пользователю tomcat, которого мы настроили, требуется доступ к установке Tomcat. Сейчас мы добавим нужные настройки.

Перейдите в директорию, куда мы распаковали установку Tomcat:

  1. cd /opt/tomcat

Предоставьте группе tomcat права владения для всей директории установки:

  1. sudo chgrp -R tomcat /opt/tomcat

Далее предоставьте группе tomcat доступ для чтения для директории conf и всего ее содержимого, а также доступ execute для самой директории:

  1. sudo chmod -R g+r conf
  2. sudo chmod g+x conf

Сделайте пользователя tomcat владельцем директорий webapps, work, temp и logs:

  1. sudo chown -R tomcat webapps/ work/ temp/ logs/

Теперь, когда соответствующие разрешения настроены, мы сможем создать служебный файл systemd для управления процессом Tomcat.

Шаг 5 — Создание служебного файла systemd

Мы должны иметь возможность запустить Tomcat в качестве службы, поэтому мы настроим служебный файл systemd.

Tomcat должен знать, где установлена Java. Обычно этот путь называют JAVA_HOME. Самым простым способом поиска расположения является использование этой команды:

  1. 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 с помощью следующей команды:

  1. sudo nano /etc/systemd/system/tomcat.service

Добавьте следующее содержимое в служебный файл. Измените значение JAVA_HOME, если потребуется, согласно значению, которое вы используете в вашей системе. Также вы можете изменить параметры распределения памяти, указанные в CATALINA_OPTS:

/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

После завершения редактирования сохраните и закройте файл.

Далее перезагрузите демон systemd, чтобы он знал о существовании вашего служебного файла:

  1. sudo systemctl daemon-reload

Запустите службу Tomcat с помощью следующей команды:

  1. sudo systemctl start tomcat

Дополнительно проверьте, что служба запущена без ошибок, выполнив следующую команду:

  1. sudo systemctl status tomcat

Шаг 6 — Настройка брандмауэра и тестирование сервера Tomcat

Теперь, когда служба Tomcat запущена, мы сможем протестировать ее, чтобы убедиться, что страница по умолчанию доступна.

Перед этим нам нужно настроить брандмауэр, чтобы разрешить доступ к службе для наших запросов. Если вы выполнили предварительные требования, у вас должен быть включен брандмауэр ufw.

Tomcat использует порт 8080 для принятия обычных запросов. Разрешите прием трафика для этого порта с помощью следующей команды:

  1. sudo ufw allow 8080

После изменения брандмауэра вы можете получить доступ к начальной странице по умолчанию, перейдя к вашему домену или IP-адресу с :8080 в браузере.

Open in web browser
http://server_domain_or_IP:8080

Вы увидите начальную страницу Tomcat по умолчанию в дополнение к другой информации. Однако, если вы воспользуетесь ссылками на диспетчер приложения, например, вам будет отказано в доступе. Мы можем настроить этот доступ далее.

Если вы смогли успешно получить доступ к Tomcat, сейчас лучшее время для активации служебного файла, чтобы Tomcat автоматически запускался при загрузке:

  1. sudo systemctl enable tomcat

Шаг 7 — Настройка веб-интерфейса управления Tomcat

Чтобы использовать веб-приложение диспетчера, которое поставляется вместе с Tomcat, мы должны добавить вход на ваш сервер Tomcat. Для этого мы отредактируем файл tomcat-users.xml:

  1. sudo nano /opt/tomcat/conf/tomcat-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.

Для приложения диспетчера введите:

  1. sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

Для приложения диспетчера хостов введите:

  1. sudo nano /opt/tomcat/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:

  1. sudo systemctl restart tomcat

Шаг 8 — Доступ к веб-интерфейсу

Теперь, после создания пользователя, мы снова сможем получить доступ к веб-интерфейсу управления в веб-браузере. Вы снова можете перейти к правильному интерфейсу, введя в браузере доменное имя или IP-адрес вашего сервера с портом 8080:

Open in web browser
http://server_domain_or_IP:8080

Страница, которую вы увидите, должна выглядеть аналогично странице, которую вы видели при тестировании ранее:

root Tomcat

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

Веб-приложение диспетчера Tomcat

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

Теперь давайте рассмотрим диспетчер хостов, доступный по ссылке или по адресу http://server_domain_or_IP:8080/host-manager/html/​​​:

Виртуальный диспетчер хостов Tomcat

На странице диспетчера виртуальных хостов вы можете добавить виртуальные хосты для обслуживания ваших приложений.

Заключение

Ваша установка Tomcat завершена! Теперь вы можете развернуть ваши собственные веб-приложения Java!

В настоящее время ваша установка Tomcat работает, но абсолютно не имеет шифрования. Это означает, что все данные, включая чувствительную информацию, например пароли, отправляются в текстовой форме и могут быть кем-либо перехвачены и прочитаны в Интернете. Чтобы предотвратить это, мы настоятельно рекомендуем шифровать ваши соединения с помощью SSL. Вы можете узнать, как реализовать шифрование ваших подключений в Tomcat в этом руководстве (примечание: в настоящем руководстве описано шифрование Tomcat 8 в Ubuntu 16.04).


Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.

Sign up
About the authors
Default avatar
Developer and author at DigitalOcean.

Still looking for an answer?

Was this helpful?

There’s a command missing at the end of step four: $sudo chmod -R g+x /opt/tomcat/bin/*.sh

tomcat wouldn’t be able to start without it because systemd[16251]: tomcat.service: Failed at step EXEC spawning /opt/tomcat/bin/startup.sh: Permission dinied