Установка Tomcat6 с Sun-Java и интеграцией Apache2 на Ubuntu 10.04 Lucid Lynx с виртуальными хостами
Краткое руководство по установке Tomcat6 на Ubuntu 10.04 с Sun-Java (sun-java6-jdk), интеграцией в Apache2 через модуль mod_jk и настройкой виртуальных хостов. Включены файлы конфигурации, примеры виртуального хоста, чек-листы и устранение неполадок.
Введение
Автор: Jaac
Последнее редактирование: 25-01-2011
Apache Tomcat — открытый контейнер сервлетов, реализующий спецификации Java Servlet и JavaServer Pages (JSP). Tomcat предоставляет «чисто Java» HTTP-среду выполнения для Java-приложений и обычно работает отдельно от веб-сервера Apache HTTPd (C-реализация). Интеграция обычно делается через коннектор mod_jk с AJP-портом.
Определение: AJP — протокол для связи между Apache и контейнером сервлетов (Tomcat), работает поверх TCP и обычно использует порт 8009.
Предварительная заметка
Это руководство ориентировано на Ubuntu 10.04 Server (Lucid Lynx). Перед началом убедитесь, что у вас базовая установка Ubuntu 10.04 с Apache2 или LAMP и статический IP. В примерах используется IP 192.168.1.100 и hostname server1.example.com.
Важное: выполняйте команды от root (sudo su).
TL;DR шаги
- Установить python-software-properties и подключить репозиторий partner.
- Установить sun-java6-jdk и openjdk-6-jdk, выбрать sun как java по умолчанию.
- Установить tomcat6 и дополнения, настроить tomcat-users.xml.
- Установить libapache2-mod-jk, создать workers.properties и конфигурацию mod_jk.
- Создать виртуальные хосты Apache, пробросить URL к Tomcat через JkMount.
- Проверить сеть, firewall и перезапустить службы.
Важно: Ubuntu 10.04 устарела и больше не получает обновлений безопасности. Для продакшена рекомендуется более новый релиз Ubuntu.
1 Подготовка системы и привилегии
Войдите как root:
sudo suПроверьте IP и /etc/hosts:
ifconfig -a
vi /etc/hostsДобавьте строку вида:
192.168.1.100 server1.example.com server12 Установка Java Development Kit (JDK)
Установите помощник для добавления репозиториев:
apt-get install python-software-propertiesДобавьте репозиторий partner (Lucid):
add-apt-repository "deb http://archive.canonical.com/ubuntu lucid partner"Обновите кэш пакетов:
apt-get updateУстановите Sun JDK и OpenJDK (Sun рекомендован для совместимости с некоторыми приложениями):
apt-get install sun-java6-jdk openjdk-6-jdkПримите лицензию Sun при запросе.
Убедитесь, что система использует sun-java6-jdk по умолчанию:
update-alternatives --config javaВыберите путь, похожий на /usr/lib/jvm/java-6-sun/jre/bin/java.
Проверьте версию Java:
java -versionОжидаемый пример вывода (зависит от версии):
root@ubuntu:~# java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)3 Установка Tomcat6
Установите Tomcat6 и дополнительные пакеты:
apt-get install tomcat6 tomcat6-admin tomcat6-common tomcat6-docs tomcat6-examples tomcat6-user3.1 Объявление пользователей и ролей
Отредактируйте файл /etc/tomcat6/tomcat-users.xml и добавьте роли и пользователя для доступа к менеджеру:
vi /etc/tomcat6/tomcat-users.xmlВставьте:
Замените YOUR_USERNAME и YOUR_PASSWORD на свои учётные данные и сохраните файл.
Важно: в продакшне используйте более строгие меры защиты менеджера Tomcat (разрешения по IP, SSL, отдельный контекст), см. раздел безопасность.
3.2 Перезапуск Tomcat и первая проверка
/etc/init.d/tomcat6 restartОткройте в браузере: http://192.168.1.100:8080/ — должна появиться стандартная страница Tomcat.

Проверьте доступ к менеджеру: http://192.168.1.100:8080/manager/html — войдите под созданными учетными данными.

4 Интеграция Tomcat6 с Apache2 через mod_jk
Установите модуль-коннектор:
apt-get install libapache2-mod-jkПри необходимости включите модуль и перезапустите Apache:
a2enmod jk
/etc/init.d/apache2 restart4.1 Конфигурирование workers.properties
Создайте файл, в котором определяются воркеры (Tomcat-инстансы):
vi /etc/apache2/workers.propertiesДобавьте содержимое:
workers.tomcat_home=/var/lib/tomcat6
workers.java_home=/usr/lib/jvm/java-6-sun
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1Разъяснение основных параметров:
- worker.list — список активных воркеров.
- worker.DEFAULT.port — порт AJP, по умолчанию 8009 в Tomcat.
- worker.DEFAULT.host — где слушает Tomcat (localhost если на той же машине).
- worker.default.type — тип коннектора (ajp13 для mod_jk).
4.2 Конфигурация модульного файла mod_jk для Apache
Создайте конфигурацию, которая будет загружаться Apache при старте:
vi /etc/apache2/conf.d/mod_jk.confВставьте:
JkWorkersFile /etc/apache2/workers.properties
JkShmFile /var/log/apache2/mod_jk.shm
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat "%w %V %T"
Перезапустите Apache:
/etc/init.d/apache2 restart5 Настройка виртуальных хостов Apache и маршрутизация запросов к Tomcat
Часто требуется пробросить только определённые URL (например, /app/*) в Tomcat, а остальное отдавать Apache. Пример виртуального хоста:
vi /etc/apache2/sites-available/example.com.conf
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
# Логирование
ErrorLog /var/log/apache2/example.com-error.log
CustomLog /var/log/apache2/example.com-access.log combined
# Подключаем мод_jk
JkMount /app/* default
JkMount /*.jsp default
# Пример: проксирование контекста /manager запрещено наружу
Require ip 127.0.0.1
Активируйте сайт и перезапустите Apache:
a2ensite example.com
/etc/init.d/apache2 reloadПояснение: JkMount указывает, какие URL отправлять воркеру default (как определено в workers.properties).
6 Проверка и отладка
Проверки:
- Убедитесь, что Tomcat слушает AJP порт 8009:
netstat -tulpn | grep 8009Проверьте логи Apache и Tomcat при ошибках:
- /var/log/apache2/mod_jk.log
- /var/log/apache2/error.log
- /var/log/tomcat6/catalina.out
Попробуйте curl через Apache и напрямую Tomcat для сравнения:
curl -I http://localhost/app/your-servlet
curl -I http://localhost:8080/app/your-servletРаспространённые проблемы и решения
- Ошибка 404 при пробросе через mod_jk: проверьте JkMount и контексты в Tomcat (context path).
- Пустой ответ или 502: проверьте, слушает ли Tomcat AJP (8009) и нет ли блокировки firewall.
- Невозможно зайти в /manager: убедитесь, что пользователь и роли в tomcat-users.xml корректны и что конфигурация manager’а не ограничивает доступ по IP.
7 Безопасность и ограничения доступа
- Отключите публичный доступ к /manager и /host-manager через Apache (разрешить только с внутренних IP).
- На продакшн-серверах используйте SSL на стороне Apache и проксируйте трафик безопасно.
- Для защиты менеджеров Tomcat используйте дополнительные фильтры, firewall и защиту на уровне сети.
Пример ограничений в конфигурации Apache для /manager:
Order deny,allow
Deny from all
Allow from 127.0.0.1
На Ubuntu 10.04 вместо Order/Allow можно использовать соответствующие директивы для вашей версии Apache.
8 Критерии приёмки
- Tomcat отвечает на порту 8080 и на AJP порту 8009.
- Apache корректно проксирует URL, указанные через JkMount, на Tomcat.
- Страницы вне контекста Tomcat обслуживаются Apache.
- Менеджер Tomcat защищён (доступ только с разрешённых IP/по учётным данным).
Чек-листы по ролям
Системный администратор:
- Установлены пакеты sun-java6-jdk, tomcat6, libapache2-mod-jk.
- Tomcat настроен и перезапущен.
- Apache настроен с mod_jk, конфигурации протестированы.
Разработчик:
- Приложение разворачивается в Tomcat и доступно по контексту.
- Конфигурация JkMount соответствует маршрутам приложения.
Оператор DevOps:
- Логи централизованы и доступны.
- Мониторинг процессов Tomcat/Apache настроен.
Мини-методология развёртывания
- Подготовить VM/сервер и статический IP.
- Установить JDK и выбрать Sun как default.
- Установить Tomcat, создать пользователя менеджера.
- Установить libapache2-mod-jk и настроить workers.properties.
- Настроить виртуальные хосты Apache с JkMount.
- Тестировать локально и через Apache, настроить firewall и ограничения доступа.
Глоссарий (1 строка)
- Tomcat — Java контейнер сервлетов.
- AJP — протокол для связи Apache ↔ Tomcat.
- mod_jk — Apache модуль-коннектор для AJP.
Короткое резюме
Это руководство показывает полный путь: установка Sun-Java, установка Tomcat6, базовая настройка пользователей, интеграция с Apache2 через mod_jk и пример настройки виртуального хоста с пробросом URL. Включены советы по отладке и безопасность.
Ключевые действия: установить JDK, настроить Tomcat и mod_jk, прописать JkMount в виртуальном хосте Apache, перезапустить сервисы и проверить доступность через браузер.
Спасибо за внимание.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента