Вступление
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).