Поиск по сайту:

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

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

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

Сначала обновите индекс пакета apt:

  1. sudo apt update

Затем установите пакет Java Development Kit с помощью 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, но вам следует использовать более позднюю стабильную версию, если она доступна. В разделе «Двоичные дистрибутивы», а затем в списке «Основные» скопируйте ссылку на «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 и всему его содержимому, а также доступ к самому каталогу:

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

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

  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:

[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. Однако, если вы, например, нажмете ссылки для приложения Manager, вам будет отказано в доступе. Далее мы можем настроить этот доступ.

Если вы смогли успешно получить доступ к 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 . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

Сохраните и закройте файл, когда закончите.

По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager подключениями, поступающими с самого сервера. Поскольку мы устанавливаем на удаленную машину, вы, вероятно, захотите удалить или изменить это ограничение. Чтобы изменить для них ограничения IP-адресов, откройте соответствующие файлы context.xml.

Для приложения Manager введите:

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

Для приложения Host Manager введите:

  1. 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:

  1. sudo systemctl restart tomcat

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

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

Open in web browser
http://server_domain_or_IP:8080

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

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

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

Теперь давайте взглянем на Host Manager, доступный по ссылке или http://server_domain_or_IP:8080/host-manager/html/:

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

Заключение

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

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