Введение
Apache Tomcat — это веб-контейнер, который позволяет обслуживать веб-приложения Java Servlets и Java Server Pages (JSP).
Предпосылки
Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть установлен пользователь без полномочий root с привилегиями sudo. Следуйте этому руководству: Первоначальная настройка в Ubuntu 16.04-17.10
Установить Java
Tomcat требует, чтобы на сервере была установлена Java. Мы можем установить OpenJDK с помощью apt-get.
Сначала обновите индекс пакета apt-get:
sudo apt-get update
Затем установите пакет Java Development Kit с помощью apt-get:
sudo apt-get install default-jdk
Теперь, когда Java установлена, мы можем создать пользователя tomcat, который будет использоваться для запуска Tomcat.
Создать пользователя Tomcat
Из соображений безопасности Tomcat должен запускаться как непривилегированный (т.е. не root) пользователь. Мы создадим нового пользователя и группу, которые будут запускать службу Tomcat.
Сначала создайте новую группу tomcat:
sudo groupadd tomcat
Давайте создадим нового члена группы tomcat с домашним каталогом /opt/tomcat (куда мы установим Tomcat) и с оболочкой /bin/false (чтобы никто не мог получить доступ к учетной записи):
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Теперь, когда наш пользователь tomcat настроен, давайте загрузим и установим Tomcat.
Установить Томкэт
Лучший способ установить Tomcat 9 — загрузить последнюю двоичную версию и настроить ее вручную.
Найдите последнюю версию Tomcat 9 на странице загрузки Tomcat 9. На данный момент последняя версия 9.0.7. В разделе «Двоичные дистрибутивы», затем в списке «Основные» скопируйте ссылку на tar.gz.
Затем перейдите в каталог /tmp на вашем сервере. Это хороший каталог для загрузки временных элементов, таких как tar-архив Tomcat, который нам не понадобится после извлечения содержимого Tomcat:
cd /tmp
Используем curl для скачивания Tomcat по ссылке, скопированной с сайта Tomcat:
Если curl не установлен, введите эту команду терминала:
sudo apt-get install curl
Итак, чтобы скачать Tomcat:
curl -O http://it.apache.contactlab.it/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz
Мы установим Tomcat в каталог /opt/tomcat. Создайте каталог и распакуйте архив с помощью этих команд:
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-9.0.7.tar.gz -C /opt/tomcat --strip-components=1
Затем мы можем установить соответствующие права пользователя для нашей установки.
Установить разрешения
Настроенный нами пользователь tomcat должен иметь доступ к установке Tomcat.
Перейдем в каталог, в который мы распаковали установку Tomcat:
cd /opt/tomcat
Мы назначаем владение группой tomcat всему каталогу установки:
sudo chgrp -R tomcat /opt/tomcat
Затем мы даем группе tomcat доступ на чтение к каталогу conf и всему его содержимому, а также доступ к самому каталогу:
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.
Системный сервис
Мы хотим запустить Tomcat как службу, поэтому мы настроим файл службы systemd.
Tomcat должен знать, где установлена Java. Этот путь обычно называют JAVA_HOME. Самый простой способ найти правильный путь — запустить эту команду:
sudo update-java-alternatives -l
Output
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 может быть другим.
С помощью этой информации мы можем создать служебный файл systemd. Откройте файл с именем tomcat.service в каталоге /etc/systemd/system, набрав:
sudo nano /etc/systemd/system/tomcat.service
Вставьте следующее содержимое в файл. При необходимости измените значение JAVA_HOME, чтобы оно соответствовало значению, найденному в системе:
[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
Брандмауэр для Tomcat
Теперь, когда служба Tomcat запущена, давайте удостоверимся, что страница по умолчанию доступна.
Прежде чем сделать это, нам нужно изменить правила брандмауэра (если они активны). Если вы выполнили предварительные требования, в настоящее время у вас будет включен брандмауэр ufw.
Tomcat использует порт 8080. Чтобы разрешить трафик на этом типе порта:
sudo ufw allow 8080
Открыть в веб-браузере
http://TUO_IP:8080
Чтобы автоматически запускать Tomcat при запуске сервера, введите следующую команду:
sudo systemctl enable tomcat
Вы увидите начальную страницу Tomcat по умолчанию. Если мы попытаемся войти по некоторым ссылкам приложения управления, доступ будет запрещен. На следующем этапе мы настроим параметры доступа.
Управление котом
Чтобы использовать приложение веб-менеджера, которое поставляется с Tomcat, вам необходимо добавить логин на наш сервер Tomcat. Мы сделаем это, отредактировав файл tomcat-users.xml:
sudo nano /opt/tomcat/conf/tomcat-users.xml
Вам нужно будет добавить пользователя, который сможет получить доступ к графическому интерфейсу менеджера и графическому интерфейсу администратора (веб-приложениям, поставляемым с Tomcat). Вы можете сделать это, определив пользователя, как в следующем примере. Убедитесь, что вы изменили свое имя пользователя и пароль на что-то безопасное:
<tomcat-users...>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
Сохраните и закройте файл.
По умолчанию более новые версии Tomcat ограничивают доступ к приложениям Manager и Host Manager подключениями с самого сервера. Поскольку мы устанавливаем на удаленную машину, вы, вероятно, захотите удалить или изменить это ограничение. Чтобы изменить ограничения IP-адреса, откройте соответствующий файл context.xml.
Для приложения Manager введите:
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 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
веб интерфейс
Теперь, когда мы создали пользователя, мы снова можем получить доступ к веб-интерфейсу управления. Опять же, вы можете получить доступ к интерфейсу, введя доменное имя или IP-адрес сервера, а затем порт 8080 в браузере:
Откройте в веб-браузере:
http://TUO_IP:8080
Приложение Manager доступно по следующему адресу:
http://TUO_IP:8080/manager/html
Вам нужно будет ввести учетные данные учетной записи, которые вы ранее добавили в файл tomcat-users.xml.
Диспетчер веб-приложений используется для управления приложениями Java.
Host Manager доступен по следующему адресу:
http://TUO_IP:8080/host-manager/html/
Установка Apache Tomcat 9 на Ubuntu 16.04 - 17.10 завершена.