Вступление
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
Страница, которую вы видите, должна быть той же, которую вы получили, когда тестировали ранее:
Давайте взглянем на приложение Manager, доступное по ссылке илиhttp://server_domain_or_IP:8080/manager/html
. Вам нужно будет ввести учетные данные, которые вы добавили в файлtomcat-users.xml
. После этого вы должны увидеть страницу, которая выглядит следующим образом:
Диспетчер веб-приложений используется для управления вашими Java-приложениями. Вы можете запустить, остановить, перезагрузить, развернуть и отменить развертывание здесь. Вы также можете запустить некоторую диагностику в своих приложениях (т.е. найти утечки памяти). Наконец, информация о вашем сервере доступна в самом низу этой страницы.
Теперь давайте посмотрим на Host Manager, доступный по ссылке илиhttp://server_domain_or_IP:8080/host-manager/html/
:
На странице Диспетчер виртуальных хостов вы можете добавить виртуальные хосты для обслуживания ваших приложений.
Заключение
Ваша установка Tomcat завершена! Теперь вы можете свободно развертывать свои собственные веб-приложения на Java!
В настоящее время ваша установка Tomcat работает, но полностью не зашифрована. Это означает, что все данные, включая такие важные элементы, как пароли, отправляются в виде простого текста, который может быть перехвачен и прочитан другими сторонами в Интернете. Чтобы этого не произошло, настоятельно рекомендуется зашифровать свои соединения с помощью SSL. Вы можете узнать, как зашифровать свои подключения к Tomcat, выполнивthis guide.