Установка Apache Tomcat 8 в Ubuntu 16.04

Apache Tomcat – это сервер приложений, который используется для обслуживания приложений Java. Tomcat – это открытая реализация технологий Java Servlet и JavaServer Pages, выпущенная Apache Software Foundation. Данное руководство описывает базовую установку и настойку Tomcat 8 на сервере Ubuntu 16.04.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04 (инструкции по начальной настройке – здесь).
  • Не-root пользователь с доступом к sudo.

1: Установка Java

Для работы Tomcat необходимо установить Java, иначе код Java не будет выполняться. Установите OpenJDK  при помощи стандартного пакетного менеджера apt-get.

Сначала нужно обновить индекс пакетов.

sudo apt-get update

Чтобы установить JDK, введите:

sudo apt-get install default-jdk

После установки Java создайте пользователя tomcat для запуска сервиса Tomcat.

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

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

Чтобы создать группу tomcat, введите:

sudo groupadd tomcat

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

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

После этого приступайте к установке Tomcat.

3: Установка Tomcat

На данный момент Tomcat 8 проще всего установить вручную из бинарного релиза.

На странице загрузки найдите последнюю версию Tomcat. На данный момент такой версией является 8.0.33. В разделе Binary Distributions найдите список Core и скопируйте ссылку на tar.gz.

Перейдите в каталог /tmp на сервере. Этот каталог предназначен для временных пакетов.

cd /tmp

Чтобы загрузить архив Tomcat, используйте следующую команду (приведенная ниже ссылка может отличаться):

curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz

Установите Tomcat в каталог /opt/tomcat. Создайте этот каталог и извлеките в него архив:

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

После этого нужно установить соответствующие права на каталог.

4: Права

Пользователь tomcat должен иметь доступ к установке Tomcat.

Откройте каталог Tomcat:

cd /opt/tomcat

Дайте пользователю tomcat право на изменение каталога conf и право на чтение файлов в нём:

sudo chgrp -R tomcat conf
sudo chmod g+rwx conf
sudo chmod g+r conf/*

Затем сделайте пользователя tomcat владельцем каталогов work, temp и logs.

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

5: Создание файла systemd

Чтобы запустить Tomcat как сервис, нужно создать service-файл systemd.

Серверу Tomcat нужно знать, где находится установка Java. Этот путь называется JAVA_HOME. Чтобы узнать местонахождение установки, используйте команду:

sudo update-java-alternatives -l
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

Примечание: В данном примере JAVA_HOME выделен красным.

Теперь добавьте к полученному значению секцию /jre и установите в качестве значения JAVA_HOME:

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

Примечание: Переменная JAVA_HOME может отличаться.

Теперь можно создать service-файл. Откройте 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-8-openjdk-amd64/jre
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
[Install]
WantedBy=multi-user.target

Сохраните и закройте файл.

После этого нужно перезапустить демон systemd:

sudo systemctl daemon-reload

Теперь сервис Tomcat готов к запуску. Для этого используйте:

sudo systemctl start tomcat

Убедитесь, что при запуске не произошло ошибок:

sudo systemctl status tomcat

6: Настройка брандмауэра и тестирование сервера Tomcat

После запуска сервиса Tomcat нужно убедиться, что стандартная страница доступна.

Но сначала нужно откорректировать настройки брандмауэра и разблокировать порт Tomcat. Если вы следовали руководству по начальной настройке сервера, на данный момент сервер защищён брандмауэром ufw.

Для обработки запросов Tomcat использует порт 8080. Чтобы разблокировать трафик этого порта, введите:

sudo ufw allow 8080

Теперь брандмауэр пропускает трафик Tomcat. Чтобы получить доступ к стандартной странице сервиса, откройте ссылку:

http://server_domain_or_IP:8080

На экране появится приветственная страница Tomcat, которая содержит некоторую информацию о программе. Однако доступа к ссылкам (например, Manager App) у вас на данный момент нет.

Если всё работает должным образом, включите service-файл, чтобы сервис Tomcat автоматически запускался вместе с сервером.

sudo systemctl enable tomcat

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

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

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

Теперь нужно добавить пользователя, который будет иметь доступ к поставляемым с Tomcat интерфейсам: manager-gui и admin-gui. Для этого можно использовать приведённый ниже код (но укажите более надёжное имя и пароль пользователя):

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

Сохраните и закройте файл tomcat-users.xml. Чтобы обновить настойки, перезапустите сервис Tomcat.

sudo systemctl restart tomcat

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

Теперь сервер Tomcat запущен. Откройте в браузере веб-интерфейс управления. http://server_IP_address:8080

На экране появится страница с сообщением:

If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!

Также на этой странице есть ссылки на веб-приложения админа, для которых ранее была создана учётная запись администратора.

Теперь откройте Manager App, доступный по ссылке:

http://server_IP_address:8080/manager/html

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

Теперь откройте Host Manager:

http://server_IP_address:8080/host-manager/html/:

Страница Virtual Host Manager нужна для управления виртуальными хостами; она позволяет добавлять виртуальные хосты для развёртывания приложений.

Заключение

Готово! Теперь сервер Tomcat полностью готов к обслуживанию приложений Java.

Tags: , , , ,
  • Александр

    У меня возникает ошибка после запуска tomcat
    tomcat.service — Apache Tomcat Web Application Container
    Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset:
    enabled)
    Active: inactive (dead)
    alexandr@p466196:~$ sudo systemctl start tomcat
    Job for tomcat.service failed because the control process exited with error code. See «systemctl status tomcat.service» and «journalctl -xe» for details.
    alexandr@p466196:~$ sudo systemctl status tomcat
    ● tomcat.service — Apache Tomcat Web Application Container
    Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset:
    enabled)
    Active: failed (Result: exit-code) since Thu 2017-11-23 12:21:36 E
    ST; 28s ago
    Process: 253 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status
    =203/EXEC)

    Nov 23 12:21:36 p466196 systemd[1]: Starting Apache Tomcat Web Application Conta
    iner…
    Nov 23 12:21:36 p466196 systemd[253]: tomcat.service: Failed at step EXE
    C spawning /opt/tomcat/bin/startup.sh: Permission denied
    Nov 23 12:21:36 p466196 systemd[1]: tomcat.service: Control process exit
    ed, code=exited status=203
    Nov 23 12:21:36 p466196 systemd[1]: Failed to start Apache Tomcat Web Ap
    plication Container.
    Nov 23 12:21:36 p466196 systemd[1]: tomcat.service: Unit entered failed
    state.
    Nov 23 12:21:36 p466196 systemd[1]: tomcat.service: Failed with result ‘
    exit-code’.

    • Артём Мищук

      Скорее всего вашему tomcat не хватает прав для исполнения скриптов запуска. Чтобы поправить права выполните:
      sudo chgrp -R tomcat bin
      sudo chmod g+rwx bin
      sudo chmod g+r bin/*