Apache Tomcat — это веб-сервер и контейнер сервлетов, используемый для обслуживания приложений Java. Tomcat представляет собой реализацию технологий Java Servlet и JavaServer Pages с открытым исходным кодом, разработанную Apache Software Foundation. В настоящем руководстве описывается базовая установка и определенные моменты конфигурации последней версии Tomcat 9 на сервере Ubuntu 18.04.
Шаг 1 — Установка Java
Tomcat требуется наличие на сервере Java, чтобы выполнять любой код веб-приложения Java. Мы можем удовлетворить это требование, установив OpenJDK с помощью apt.
Во-первых, обновите индекс пакетов apt:
$ sudo apt update
Затем установите пакет для разработки Java с помощью 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, но вы должны использовать более позднюю стабильную версию, если такая будет доступна. Перейдите в раздел Binary Distributions (Бинарные дистрибутивы), а затем в списке Core скопируйте ссылку на файл 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
и всего ее содержимого, а также доступ execute для самой директории:
$ 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
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
с помощью следующей команды:
$ 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, чтобы он знал о существовании вашего служебного файла:
$ 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 browser
http://server_domain_or_IP:8080
Вы увидите начальную страницу Tomcat по умолчанию в дополнение к другой информации. Однако, если вы воспользуетесь ссылками на диспетчер приложения, например, вам будет отказано в доступе. Мы можем настроить этот доступ далее.
Если вы смогли успешно получить доступ к 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 — Admin User
<tomcat-users . . .>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Сохраните файл и закройте его после завершения.
По умолчанию новые версии Tomcat ограничивают доступ к приложениям диспетчера и диспетчера хостов для подключений с самого сервера. Поскольку мы выполняем установку на удаленном компьютере, вы, вероятно, захотите удалить или изменить это ограничение. Чтобы изменить подобные ограничения IP-адреса, откройте соответствующие файлы context.xml
.
Для приложения диспетчера введите:
$ sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
Для приложения диспетчера хостов введите:
$ 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:
$ sudo systemctl restart tomcat
Шаг 8 — Доступ к веб-интерфейсу
Теперь, после создания пользователя, мы снова сможем получить доступ к веб-интерфейсу управления в веб-браузере. Вы снова можете перейти к правильному интерфейсу, введя в браузере доменное имя или IP-адрес вашего сервера с портом 8080:
Open in web browser
http://server_domain_or_IP:8080
Страница, которую вы увидите, должна выглядеть аналогично странице, которую вы видели при тестировании ранее:
Давайте изучим приложение диспетчера, доступ к которому можно получить по ссылке или по адресу http://server_domain_or_IP:8080/manager/html
. Вам нужно будет ввести данные учетной записи, которые вы добавили в файл tomcat-users.xml
. После этого вы должны увидеть страницу, которая выглядит следующим образом:
Веб-приложение диспетчера используется для управления приложениями Java. Здесь вы можете запустить, остановить, перезагрузить, развернуть и отменить развертывание. Также вы можете запустить инструменты диагностики для ваших приложений (например, найти утечки памяти). Информация о вашем сервере доступна в самом низу страницы.
Теперь давайте рассмотрим диспетчер хостов, доступный по ссылке или по адресу http://server_domain_or_IP:8080/host-manager/html/
:
На странице диспетчера виртуальных хостов вы можете добавить виртуальные хосты для обслуживания ваших приложений.