Как установить Apache Tomcat 9 в Debian 9

Вступление

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

Предпосылки

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

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

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

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

sudo apt update

Затем установите пакет Java Development Kit с помощью apt:

sudo apt install default-jdk

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

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

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

Сначала создайте новую группу + tomcat +:

sudo groupadd tomcat

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

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

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

Шаг 3 - Установите Tomcat

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

Найдите последнюю версию Tomcat 9 на странице загрузки Tomcat 9. На момент написания последней версии * 9.0.11 *, но вы должны использовать более позднюю стабильную версию, если она доступна. В разделе * Binary Distribution *, затем в списке * Core *, скопируйте ссылку на «tar.gz».

Затем перейдите в каталог + / tmp + на вашем сервере. Это хороший каталог для загрузки эфемерных элементов, например тарбола Tomcat, который нам не понадобится после извлечения содержимого Tomcat:

cd /tmp

Мы будем использовать инструмент командной строки + curl + для загрузки архива. Установите + curl +:

sudo apt install curl

Теперь используйте + curl +, чтобы скачать ссылку, которую вы скопировали с веб-сайта Tomcat:

curl -O

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

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

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

Шаг 4 - Обновить разрешения

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

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

cd /opt/tomcat

Дайте группе + tomcat + право собственности на весь каталог установки:

sudo chgrp -R tomcat /opt/tomcat

Затем дайте группе + tomcat + доступ на чтение к каталогу + conf + и всему его содержимому и * выполните * доступ к самому каталогу:

sudo chmod -R g+r conf
sudo chmod g+x conf

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

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

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

Шаг 5 - Создайте файл службы systemd

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

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

sudo update-java-alternatives -l
Outputjava-1.8.0-openjdk-amd64       1081

Ваш + JAVA_HOME + является выводом из последнего столбца (выделено красным). Учитывая приведенный выше пример, правильный + JAVA_HOME + для этого сервера будет:

JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-amd64

Ваш + JAVA_HOME + может отличаться.

С помощью этой информации мы можем создать файл службы systemd. Откройте файл с именем + tomcat.service в каталоге` + / etc / systemd / system`, набрав:

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=
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, чтобы он знал о нашем служебном файле:

sudo systemctl daemon-reload

Запустите сервис Tomcat, набрав:

sudo systemctl start tomcat

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

sudo systemctl status tomcat

Вы должны увидеть вывод, похожий на следующий:

Output● tomcat.service - Apache Tomcat Web Application Container
  Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
  Active: active (running) since Wed 2018-09-05 20:47:44 UTC; 3s ago
 Process: 9037 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 9046 (java)
   Tasks: 46 (limit: 4915)
  CGroup: /system.slice/tomcat.service
          └─9046 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Dja

Sep 05 20:47:44 tomcat systemd[1]: Starting Apache Tomcat Web Application Container...
Sep 05 20:47:44 tomcat systemd[1]: Started Apache Tomcat Web Application Container.

Это подтверждает, что Tomcat запущен и работает на вашем сервере.

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

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

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

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

sudo ufw allow 8080

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

Open in web browserhttp://:8080

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

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

sudo systemctl enable tomcat

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

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

sudo nano /opt/tomcat/conf/tomcat-users.xml

Вы захотите добавить пользователя, который может получить доступ к + manager-gui + и + admin-gui + (веб-приложения, которые поставляются с Tomcat). Вы можете сделать это, определив пользователя, как в примере ниже, между тегами + tomcat-users +. Обязательно измените имя пользователя и пароль на что-то безопасное:

tomcat-users.xml - Администратор

<tomcat-users . . .>
   <user username="" password="" roles="manager-gui,admin-gui"/>
</tomcat-users>

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

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

Для приложения «Менеджер» введите:

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

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

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

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

файлы context.xml для веб-приложений Tomcat

<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 tomcat

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

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

Open in web browserhttp://:8080

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

изображение: https: //assets.digitalocean.com/articles/tomcat8_1604/splashscreen.png [корневой каталог Tomcat]

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

изображение: https: //assets.digitalocean.com/articles/tomcat8_1604/manager.png [Диспетчер веб-приложений Tomcat]

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

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

изображение: https: //assets.digitalocean.com/articles/tomcat8_1604/host-manager.png [Tomcat Virtual Host Manager]

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

Заключение

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

В настоящее время ваша установка Tomcat работает, но полностью не зашифрована. Это означает, что все данные, включая такие важные элементы, как пароли, отправляются в виде простого текста, который может быть перехвачен и прочитан другими сторонами в Интернете. Чтобы этого не произошло, настоятельно рекомендуется зашифровать свои соединения с помощью SSL. Вы можете узнать, как зашифровать ваши подключения к Tomcat, следуя https://www.digitalocean.com/community/tutorials/how-to-encrypt-tomcat-8-connections-with-apache-or-nginx-on-ubuntu -16-04 [это руководство] (note: это руководство охватывает шифрование Tomcat 8 в Ubuntu 16.04).