Page tree

Tomcat - сервер приложений, используемый для обслуживания приложений Java. Tomcat разработан Apache Software Foundation и на сегодняшний день является одним из самых популярных контейнеров сервлетов.  

В инструкции ниже рассматривается установка Tomcat 9 на VDS с Ubuntu 18.04. 

Инструкция предполагает наличие на сервере пользователя с привилегиями sudo.

1. В первую очередь нужно установить Java (OpenJDK).

Для этого выполните:

sudo apt update

sudo apt install default-jdk

2. Запуск Tomcat из-под root небезопасен, поэтому далее необходимо создать пользователя без привилегий root, от имени которого будет выполняться запуск.

2.1. Создайте группу:

sudo groupadd tomcat

2.2. Создайте одноименного пользователя с домашней директорией /opt/tomcat:

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

3. Далее установим Tomcat на сервер.

3.1. Перейдите в директорию tmp, куда далее будет нужно скачать файл .tar.gz с официального сайта проекта.

cd /tmp

3.2. Установите tomcat командой:

curl -O https://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-9/v9.0.37/bin/apache-tomcat-9.0.37.tar.gz

С помощью данной команды будет загружена версия 9.0.37, актуальная на момент написания инструкции.

Наличие более новых версий вы можете проверить на сайте проекта. Если доступна новая версия, для скопируйте ссылку на нее в блоке Binary Distributions - Core (файл .tar.gz) и используйте ее в команде выше.

3.3. Установку необходимо выполнить в директорию /opt/tomcat. Создайте ее:

sudo mkdir /opt/tomcat

3.4. И разархивируйте скачанный .tar.gz в эту директорию:

sudo tar xzvf /tmp/apache-tomcat-9.0.*tar.gz -C /opt/tomcat --strip-components=1

4. Далее настроим необходимые разрешения для пользователя tomcat.

4.1. Перейдите в каталог, куда был распакован Tomcat:

cd /opt/tomcat

4.2. Сделайте пользователя tomcat владельцем директории:

sudo chgrp -R tomcat /opt/tomcat

4.3. Выдайте права на изменение и чтение каталога conf и файлов в нем:

sudo chmod -R g+r conf
sudo chmod g+x conf

4.4. Дополнительно сделайте его владельцем каталогов webapps, work, temp и logs:

sudo chown -R tomcat webapps/ work/ temp/ logs/

5. Чтобы запускать Tomcat как службу, создадим юнит в systemd.

5.1. В процессе нам потребуется указать путь, по которому установлена Java - JAVA_HOME. Узнать его проще всего с помощью команды:

sudo update-java-alternatives -l

Вывод будет выглядеть следующим образом: 

java-1.11.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.11.0-openjdk-amd64

Указанный в нем путь (здесь: /usr/lib/jvm/java-1.11.0-openjdk-amd64) и есть путь JAVA_HOME; он потребуется нам далее.

5.2. Создайте файл tomcat.service:

sudo nano /etc/systemd/system/tomcat.service

5.3. Скопируйте в него следующее содержимое, указав в параметре JAVA_HOME полученный ранее путь:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking

Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
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

Сохраните изменения и закройте файл. 

5.4. Перезагрузите демон systemd:

sudo systemctl daemon-reload

5.5. Запустите службу Tomcat с помощью:

sudo systemctl start tomcat

Проверить, что служба запущена без ошибок, можно командой:

sudo systemctl status tomcat

6. Для работы службы Tomcat необходимо настроить брандмауэр: нужно разрешить прием трафика для порта 8080, так как Tomcat использует именно этот порт.

6.1. При использовании ufw такая настройка выполняется командой:

sudo ufw allow 8080

6.2. Теперь проверьте, что начальная страница Tomcat доступна.

Для этого перейдите по адресу: http://IP-адрес-сервера:8080.

Если все в порядке, отобразится следующее:

Однако в данный момент вы не сможете использовать Manager App и Host Manager (веб-приложения Tomcat для управления виртуальными хостами и приложениями Java) — при попытке обратиться к ним вы получите ошибку доступа. Это нормально, далее мы выполним необходимые настройки.

6.3. Если начальная страница отобразилась, добавьте Tomcat в автозагрузку:

sudo systemctl enable tomcat

7. Далее, чтобы сделать возможной работу с веб-приложениями, создадим пользователя для них.

7.1. Откройте для редактирования файл tomcat-users.txt:

sudo nano /opt/tomcat/conf/tomcat-users.xml

7.2. В блок <tomcat-users> вставьте строку с логином и паролем пользователя, который будет иметь доступ к Manager App и Host Manager:

<tomcat-users . . .>
    <user username="имя_пользователя" password="пароль_пользователя" roles="manager-gui,admin-gui"/>
</tomcat-users>

Сохраните изменения и закройте файл.

7.3. Далее нужно снять ограничение доступа к этим приложениям с самого сервера.

7.3.1. Для приложения Manager откройте файл:

sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

7.3.2. Закомментируйте в нем строку с ограничением 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>

Сохраните изменения и закройте файл.

7.3.3. Выполните то же самое для приложения Host Manager, отредактировав файл:

sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

Сохраните изменения и закройте файл.

8. Снова перейдите по адресу http://IP-адрес-сервера:8080.

Теперь разделы Manager App и Host Manager доступны. Вы можете перейти в них с начальной страницы или по ссылкам:

http://IP-адрес-сервера:8080/manager/html

http://IP-адрес-сервера:8080/host-manager/html

Для авторизации в каждом приложении потребуется ввести логин и пароль, который вы ранее указали в файле tomcat-users.txt.


  • No labels