береженого кольт бережет
береженого кольт бережет

Установка Apache Tomcat 9 в Ubuntu 18.04

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 владельцем директорий webappsworktemp и 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/​​​:

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