Apache Tomcat – это открытый веб-сервер и контейнер сервлетов, который разрабатывается и поддерживается Apache Software Foundation. Он представляет собой реализацию технологий Java Servlet, JavaServer Pages (JSP) и Java Expression Language (EL) и используется для запуска веб-приложений, написанных на языке программирования Java.
Tomcat обеспечивает среду выполнения для Java-приложений в виде контейнера сервлетов, который управляет их жизненным циклом, обработкой HTTP-запросов и отправкой ответов. Он также поддерживает множество дополнительных функций, таких как виртуальные хосты, аутентификация пользователей, SSL и многое другое.
Как правило, Tomcat используется в качестве сервера приложений для развёртывания веб-приложений и веб-служб на платформе Java. Благодаря своей открытой природе и распространённости он является одним из наиболее популярных серверов приложений для Java-разработки.
В статье рассмотрим процесс установки Apache Tomcat на VPS, работающий под управлением Ubuntu 22.04. Сервер, на который будем производить установку, должен быть предварительно настроен в соответствии с тем, как это описано в посвящённой этому статье нашего справочника.
Установка OpenJDK
Перед тем, как загрузить и проинсталлировать Apache Tomcat, необходимо убедиться, что на сервере установлен OpenJDK. Такую проверку можно проделать при помощи команды:
$ java -version
Если вывод данной команды сообщает об отсутствии OpenJDK, то установить пакет можно при помощи следующей инструкции:
$ sudo apt install default-jdk
Создание группы и учётной записи для Apache Tomcat
Далее, необходимо обеспечить более высокий уровень безопасности Apache Tomcat. Для этого нужно создать специальную группу и пользователя. Они понадобятся для запуска Tomcat из директории /opt/tomcat/
, которую предварительно также необходимо создать.
$ sudo mkdir /opt/tomcat/
$ sudo groupadd tomcat
$ sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Загрузка и установка Apache Tomcat
Дистрибутив Tomcat доступен на своей официальной странице, где найдите актуальный релиз и скопируйте адрес ссылки на соответствующий архив tar.gz
.
Затем при помощи утилиты curl
загрузите файл архива Tomcat:
$ curl -O https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.19/bin/apache-tomcat-10.1.19.tar.gz
После того, как загрузка архива завершится, извлеките содержимое загруженного архива в директорию /opt/tomcat/
:
$ sudo tar xzvf apache-tomcat-10.1.19.tar.gz -C /opt/tomcat/ --strip-component=1
Далее, перейдите в директорию /opt/tomcat/
:
$ cd /opt/tomcat/
Затем группе и пользователю tomcat
предоставьте права на каталог, в который вы произвели установку Tomcat:
$ sudo chown -RH tomcat: /opt/tomcat/
И наконец, измените разрешения на sh-скрипты, чтобы предоставить им доступ на исполнение из директории /opt/tomcat/bin/
:
$ sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'
Так как мы планируем запустить Tomcat как службу, необходимо создать соответствующий служебный файл в системе инициализации. Для этого сначала нужно найти путь для переменной JAVA_HOME
. Он представляет собой местоположение установочного пакета Java. Следующей командой запросите у системы информацию о пакетах Java, установленных в системе:
$ sudo update-java-alternatives -l
Как видно из вывода, в системе существуют две доступные версии Java. Соответственно, здесь также показаны два пути, отображающие их местоположение.
Таким образом, вам необходимо выбрать версию, которую вы хотите использовать и скопировать её местоположение. После этого можно перейти к созданию служебного файла.
С использованием текстового редактора nano
в каталоге /etc/systemd/system/
создайте файл, который будет называться tomcat.service
:
$ cd /etc/systemd/system/
$ sudo nano tomcat.service
Вставьте в файл следующий текст:
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Обратите внимание, что переменной JAVA_HOME
должно соответствовать значение, содержащее путь к одной из версий Java.
Закройте файл с сохранением внесённых изменений, после чего запустите следующую команду, при помощи которой перечитаются конфигурации всех юнитов:
$ sudo systemctl daemon-reload
После чего произведите запуск сервиса Tomcat:
$ sudo systemctl start tomcat
Чтобы убедиться в том, что служба запустилась и работает корректно, просмотрите её состояние:
$ sudo systemctl status tomcat
После чего добавьте службу в автозагрузку, чтобы Tomcat стартовал вместе с запуском системы:
$ sudo systemctl enable tomcat
Настройка доступа через брандмауэр UFW
Если вы производили на своём виртуальном сервере предварительную настройку, значит, на VPS установлен брандмауэр UFW. Это означает, что на данный момент у вас нет возможности подключиться к веб-интерфейсу Tomcat. В данном случае для открытия доступа через веб-интерфейс по умолчанию используется порт 8080. Поэтому сейчас необходимо будет открыть tcp-порт 8080 в брандмауэре:
$ sudo ufw allow 8080/tcp
Чтобы убедиться в том, что порт открыт, проверьте состояние брандмауэра UFW:
$ sudo ufw status
И поскольку теперь порт 8080 действительно открыт, вы можете подключиться к веб-интерфейсу набрав в строке браузера http://X.X.X.X:8080
, где X.X.X.X
– IP-адрес вашего VDS.
Настройка доступа через веб-интерфейс
Для полноценного управления Apache Tomcat вам также необходимо создать административную учётную запись. Она будет обладать администраторскими полномочиями в отношении вашего экземпляра веб-сервера. Чтобы этого сделать, откройте для редактирования файл tomcat-users.xml
из каталога /opt/tomcat/conf/
.
$ sudo nano /opt/tomcat/conf/tomcat-users.xml
Очистите содержимое данного файла и добавьте в него следующие строки:
<tomcat-users>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="your-admin" password="your-password" roles="admin-gui,manager-gui"/>
</tomcat-users>
Здесь замените your-admin
на имя создаваемого пользователя, а your-password
— на пароль для этого пользователя. После чего закройте файл, сохранив внесённые в него изменения.
И наконец, для получения полноценного доступа к управлению Tomcat через веб-интерфейс нам остаётся разрешить возможность подключаться к нему под именем нашего нового пользователя удалённо. Для чего необходимо отредактировать файл /opt/tomcat/webapps/manager/META-INF/context.xml
:
$ sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
В нём необходимо строку
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
привести к следующему виду:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.10.10.*" />
В данном случае мы в данный файл добавили запись |10.10.10.*
, которая разрешает подключение к веб-интерфейсу из сети 10.10.10.0
. Закройте файл с сохранением и точно такую же настройку добавьте в файл /opt/tomcat/webapps/host-manager/META-INF/context.xml
:
$ /opt/tomcat/webapps/host-manager/META-INF/context.xml
А, именно, приведите соответствующую строку к виду:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.10.10.*" />
После того, как вы сохраните изменения и в этом файле, вы сможете авторизоваться в панели управления Apache Tomcat под именем вашей учётной записи, подключившись к VPS с локальной рабочей станции, имеющей IP-адрес из сети 10.10.10.0
.