Как установить Apache Tomcat 8 в Ubuntu 16.04

Вступление

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

Предпосылки

Прежде чем вы начнете читать это руководство, у вас должен быть пользователь без полномочий root с привилегиямиsudo, установленными на вашем сервере. Вы можете узнать, как это сделать, заполнив нашUbuntu 16.04 initial server setup guide.

Шаг 1: Установите Java

Tomcat требует, чтобы на сервере была установлена ​​Java, чтобы можно было выполнить любой код веб-приложения Java. Мы можем удовлетворить это требование, установив OpenJDK с помощью apt-get.

Сначала обновите индекс пакета apt-get:

sudo apt-get update

Затем установите пакет Java Development Kit с помощью apt-get:

sudo apt-get install default-jdk

Теперь, когда Java установлена, мы можем создать пользователяtomcat, который будет использоваться для запуска службы Tomcat.

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

В целях безопасности Tomcat следует запускать как непривилегированный пользователь (т.е. не рут). Мы создадим нового пользователя и группу, которые будут запускать сервис 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 8 - это загрузить последний двоичный выпуск, а затем настроить его вручную.

Найдите последнюю версию Tomcat 8 наTomcat 8 Downloads page. На момент написания последней версией является8.5.5, но вы должны использовать более позднюю стабильную версию, если она доступна. В разделеBinary Distributions, затем в спискеCore скопируйте ссылку на «tar.gz».

Затем перейдите в каталог/tmp на вашем сервере. Это хороший каталог для загрузки эфемерных элементов, например тарбола Tomcat, который нам не понадобится после извлечения содержимого Tomcat:

cd /tmp

Используйтеcurl, чтобы загрузить ссылку, которую вы скопировали с веб-сайта Tomcat:

curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.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 право собственности на весь каталог установки:

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
Outputjava-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 может быть другим.

С помощью этой части информации мы можем создать файл службы 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.8.0-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
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.xml — Admin User


    

Сохраните и закройте файл, когда вы закончите.

По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager для подключений, исходящих с самого сервера. Поскольку мы устанавливаем на удаленном компьютере, вы, вероятно, захотите снять или изменить это ограничение. Чтобы изменить ограничения IP-адресов для них, откройте соответствующие файлыcontext.xml.

Для приложения «Менеджер» введите:

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.xml files for Tomcat webapps


  

Сохраните и закройте файлы, когда вы закончите.

Чтобы изменения вступили в силу, перезапустите сервис Tomcat:

sudo systemctl restart tomcat

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

Теперь, когда мы создали пользователя, мы можем снова получить доступ к интерфейсу веб-управления в веб-браузере. Еще раз, вы можете получить правильный интерфейс, введя доменное имя или IP-адрес вашего сервера, за которым следует порт 8080 в вашем браузере:

Open in web browserhttp://server_domain_or_IP:8080

Страница, которую вы видите, должна быть той же, которую вы получили, когда тестировали ранее:

Tomcat root

Давайте взглянем на приложение Manager, доступное по ссылке илиhttp://server_domain_or_IP:8080/manager/html. Вам нужно будет ввести учетные данные, которые вы добавили в файлtomcat-users.xml. После этого вы должны увидеть страницу, которая выглядит следующим образом:

Tomcat Web Application Manager

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

Теперь давайте посмотрим на Host Manager, доступный по ссылке илиhttp://server_domain_or_IP:8080/host-manager/html/:

Tomcat Virtual Host Manager

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

Заключение

Ваша установка Tomcat завершена! Теперь вы можете свободно развертывать свои собственные веб-приложения на Java!

В настоящее время ваша установка Tomcat работает, но полностью не зашифрована. Это означает, что все данные, включая такие важные элементы, как пароли, отправляются в виде простого текста, который может быть перехвачен и прочитан другими сторонами в Интернете. Чтобы этого не произошло, настоятельно рекомендуется зашифровать свои соединения с помощью SSL. Вы можете узнать, как зашифровать свои подключения к Tomcat, выполнивthis guide.

Related