Установка 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: Apache Tomcat 8, Java, OpenJDK, Tomcat, Ubuntu 16.04
3 комментария
У меня возникает ошибка после запуска 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/*
chmod не изменит права, если указать просто conf/*
Надо использовать флаг -R