Как установить 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:
- sudo apt update
Затем установите пакет Java Development Kit с помощью apt:
- sudo apt install default-jdk
Теперь, когда Java установлена, мы можем создать пользователя tomcat
, который будет использоваться для запуска службы Tomcat.
Шаг 2 — Создайте пользователя Tomcat
В целях безопасности Tomcat следует запускать от имени непривилегированного пользователя (т. е. не root). Мы создадим нового пользователя и группу, которые будут запускать службу 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.10, но вам следует использовать более позднюю стабильную версию, если она доступна. В разделе «Двоичные дистрибутивы», а затем в списке «Основные» скопируйте ссылку на «tar.gz». В большинстве браузеров это можно сделать, щелкнув ссылку правой кнопкой мыши и выбрав «Копировать адрес ссылки» или аналогичную опцию.
Затем перейдите в каталог /tmp
на вашем сервере. Это хороший каталог для загрузки временных элементов, таких как tar-архив Tomcat, который нам не понадобится после извлечения содержимого Tomcat:
- cd /tmp
Используйте curl
, чтобы загрузить ссылку, скопированную с веб-сайта Tomcat:
- curl -O paste_the_copied_link_here
Мы установим Tomcat в каталог /opt/tomcat
. Создайте каталог, затем распакуйте в него архив с помощью следующих команд:
- sudo mkdir /opt/tomcat
- sudo tar xzvf apache-tomcat-*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
и журналов
каталоги:
- 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.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/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, чтобы он знал о нашем служебном файле:
- sudo systemctl daemon-reload
Запустите службу Tomcat, набрав:
- sudo systemctl start tomcat
Дважды проверьте, что он запустился без ошибок, набрав:
- sudo systemctl status tomcat
Шаг 6 — Настройте брандмауэр и протестируйте сервер Tomcat
Теперь, когда служба Tomcat запущена, мы можем проверить, доступна ли страница по умолчанию.
Прежде чем мы это сделаем, нам нужно настроить брандмауэр, чтобы наши запросы попадали в службу. Если вы выполнили предварительные требования, в настоящее время у вас будет включен брандмауэр ufw
.
Tomcat использует порт 8080
для приема обычных запросов. Разрешите трафик на этот порт, набрав:
- sudo ufw allow 8080
С измененным брандмауэром вы можете получить доступ к странице-заставке по умолчанию, перейдя в свой домен или IP-адрес, а затем :8080
в веб-браузере:
Open in web browserhttp://server_domain_or_IP: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 . . .>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Сохраните и закройте файл, когда закончите.
По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager подключениями, поступающими с самого сервера. Поскольку мы устанавливаем на удаленную машину, вы, вероятно, захотите удалить или изменить это ограничение. Чтобы изменить для них ограничения IP-адресов, откройте соответствующие файлы context.xml
.
Для приложения Manager введите:
- 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 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://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).