Skip to content

📄 Apache Tomcat

1. Описание

Apache Tomcat — это веб-контейнер, который позволяет запускать Java-приложения, такие как веб-сайты, REST API, микросервисы и другие приложения, основанные на Java. Tomcat не является полноценным Java EE сервером, но поддерживает большинство ключевых стандартов Java Web.


2. Установка Apache Tomcat

2.1 Предварительные требования

  • Установленная Java (OpenJDK или Oracle JDK)
  • Права root / sudo

Проверьте установленную версию Java:

java -version

Если Java не установлена:

sudo apt install default-jdk

2.2 Скачивание Tomcat

Перейдите на официальный сайт и скачайте последнюю версию (например, tomcat-10.1.xx.tar.gz).

Пример через wget:

cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.12/bin/apache-tomcat-10.1.12.tar.gz

2.3 Распаковка

Создайте директорию для Tomcat:

sudo mkdir /opt/tomcat
sudo tar -xvf apache-tomcat-10.1.12.tar.gz -C /opt/tomcat --strip-components=1

3. Конфигурация

3.1 Пользователь Tomcat (опционально)

Для безопасности создайте отдельного пользователя:

sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
sudo chown -R tomcat:tomcat /opt/tomcat

3.2 Редактирование конфигурации

Файл: /opt/tomcat/conf/server.xml

Основные параметры: - Порт HTTP (Connector port="8080") - Админ порт (Shutdown port="8005")

3.3 Настройка пользователей

Редактируйте файл:

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

Добавьте роли и пользователей:

<tomcat-users>
    <role rolename="manager-gui"/>
    <role rolename="admin-gui"/>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

4. Запуск и остановка

4.1 Запуск

/opt/tomcat/bin/startup.sh

4.2 Остановка

/opt/tomcat/bin/shutdown.sh

5. Интеграция с systemd (рекомендуется)

Создайте файл сервиса:

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

Содержимое:

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

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Перезагрузите демон и включите автозапуск:

sudo systemctl daemon-reexec
sudo systemctl enable tomcat
sudo systemctl start tomcat
sudo systemctl status tomcat

6. Доступ к интерфейсу Tomcat

Откройте браузер и перейдите:

http://ваш_сервер_ip:8080

Вы увидите главную страницу Tomcat. Для доступа к GUI-интерфейсу управления:

http://ваш_сервер_ip:8080/manager/html

🔒 Важно: Не открывайте эти страницы в публичном доступе без защиты (SSL + авторизация).


7. Развертывание приложения

7.1 Через веб-интерфейс

  • Перейдите в Manager App.
  • Используйте форму "Deploy".
  • Загрузите .war файл своего приложения.

7.2 Вручную

Положите .war файл в директорию:

/opt/tomcat/webapps/

Tomcat автоматически его развернет при запуске.


8. Логи

Логи находятся в:

/opt/tomcat/logs/

Основные файлы: - catalina.out — общий лог сервера. - localhost.log, manager.log — логи конкретных приложений.

Чтобы следить за логами в реальном времени:

tail -f /opt/tomcat/logs/catalina.out

9. Безопасность

  • Отключите ненужные функции (например, Manager App в продакшене).
  • Используйте SSL/TLS через Nginx или Apache в режиме reverse proxy.
  • Обновляйте Tomcat регулярно.
  • Используйте strong passwords и firewall.

10. Полезные команды

Команда Описание
systemctl start tomcat Запустить службу
systemctl stop tomcat Остановить службу
systemctl restart tomcat Перезапустить
journalctl -u tomcat Посмотреть системные логи
netstat -tuln | grep 8080 Проверить открытые порты

11. Пример использования с Nginx (reverse proxy)

Конфиг в Nginx:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

📎 Приложения