Связка Tomcat5.5 + Apache2

bum аватар

Задача:

Необходимо создать на одном сервере несколько виртуальных хостов, в каждый хост как отдельный сайт со своим кодом (например один сайт на java, второй сайт на php).

Ресурсы:

1)Сервер Debian Lenny (с последними апдейтами)
2)Установленный Tomcat 5.5
3)Установленный Apache2 но не используемый
4)Iptables (настроенный разработчиками на переадресацию порта 80 на 8180)
5)Готовый сайт newst работающий через tomcat
6)Установленная и настроенная БД FireBird в ней лежит база от сайта newst
7)Установленный но не настроенный mysql

Решение:

1)Проверяем куда уходят запросы от 80 порта, в моем случае это был редирект на iptables и он уходил на 8180, я отключил его.
2)Проверяем работу apache по дефолту при обращении на 80 порт он выдает сообщение Its work!
3)Настраиваем tomcat, нам необходимо изменить название виртуального хоста (в моем случае он один и я ничего не менял, оставил так как предоставили разработчики сайта)
уделяем особое внимание файлу /var/lib/tomcat5.5/conf/server.xml

Host name="localhost" appBase="webapps" 
unpackWARs="true" autoDeploy="true"  
xmlValidation="false" xmlNamespaceAware="false">
Context path="" docBase="newst" />

Тоесть каждый хост на java должен быть описан отдельно, причем имя хоста берется из ответа dns
4)Настраиваем Apache
Ставим libapache2-mod-jk для связывания tomcat и apache
#apt-get install libapache2-mod-jk 

после чего идем в /usr/share/doc/libapache2-mod-jk
и копируем с переименованием файл httpd_example_apache2.conf в /etc/apache2/mods-available/jk.conf
делаем модуль jk доступным apache
#cd /etc/apache2/mods-enabled/
#ln -s /etc/apache2/mods-available/jk.conf jk.conf
#ln -s /etc/apache2/mods-available/jk.load jk.load

далее редактируем файл /etc/libapache2-mod-jk/workers.properties если это необходимо, я нечего не менял, просто запомнил какой сервис обрабатывает запрос ajp13_worker

Создаем новый виртуальный хост, при этом либо удаляем default либо правим его
/etc/apache2/sites-available/newst

VirtualHost *:80>
        ServerAdmin web@newst
        DocumentRoot /var/lib/tomcat5.5/webapps/newst/
        ServerName  newst
        UseCanonicalName off
        JkMount /* ajp13_worker
        JkMount /WEB-INF/* ajp13_worker
        ErrorLog /var/lib/tomcat5.5/webapps/newst/logs/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel info
        CustomLog /var/lib/tomcat5.5/webapps/newst/logs/access.log combined
/VirtualHost>

Собственно все, теперь все запросы попадающие в данный хост будут уходить на томкат, остальные виртуальные хосты где не будет указано
JkMount /* ajp13_worker

будут уходить на apache

P.S. Честно признаюсь я потратил на понимание данной задачи 2е суток, так как документы в интернете в большинстве от tomcat 4, а синтаксис уже изменился. После того как я увидел дефолтные конфиги в Debian то понял что изобретать велосипед не нужно. Все просто!

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

bum аватар

Угу, еще купить железки у сана за куеву тучу мультов, еще редхаЙта и ваще можно сделать все, тока вот пахнет какой то амерекатостью, а слабо сделать из ничего сервер не уступающий платным аналогам? вот когда научитесь совмещать задача+0финонсирование+остатки былой роскоши от бывшего идиота админа или ИТ директора, вот тогда поговорим, а сейчас ваше высказывание я даже не воспринимаю, так как ничего конструктивного в предложении я не нашел.

P.S. напишите как бы вы реализовали данную задачу и тогда поговорим!
---
Linux - это тип жизни!

Cколько агрессии :) "Нежнее, Виктор" (с)

bum аватар

Ну как тут не вскипишь, если человек вообще не в теме пишет полный бред и при этом выставляет себя гуру. Я с полной уверенностью выложил материал для тех кто в теме и знает что толковых доков просто нет, а тут такое... обидно блин...
---
Linux - это тип жизни!

На *:80 апач не ругается при reload?

bum аватар

Нет не ругается, а знаешь почему??? потому что конфиг апача из нескольких мест может взять свое доменное имя... за это я и люблю второй апач, и мне очень нравится его реализация на дебе, например сортировка по директориям и то что ненужно каждый модуль в ручную в конфиг вносить... короче апач2 рулез..
---
Linux - это тип жизни!

Да еще. Насколько я понял из вот этой строки "выдает сообщение Its work!" апач стоял и ничего не делал.
Вопрос, появилась задача, чтобы он начал работать? Т.е. понадобилось повесить второй сайт с php?

bum аватар

1)Да апач поставился дефолтно видать при установке системы, но его никто не юзал
2)Разработчики написали сайт на ява, и он болтался на томкат, а у меня помимо этого сайта еще 5 готовых работают сейчас на debian 3.0 и написаны на php. Вот и задача была объединить все на одном новом сервере.

---
Linux - это тип жизни!

Grifon аватар

Полгода назад делал подобную задачу. В то время мне это бы очень пригодилось. К сожалению, автор не расписал для чего мы выполняем каждый шаг, от чего читатель может почувствовать себя обезьяной. А так - полезная заметка

bum аватар

Согласен с тобой но нехватка времени мне не дает сделать большее, мне сейчас нужно перенести 5 сайтов и настроить еще кучу всего другого. Будет время постараюсь приукрасить данный пост.
---
Linux - это тип жизни!

MT аватар

Недавно тоже столкнулся с необходимостью повесить на сервак сайт, написанный на Java.

Теперь у меня на серваке под Apache 1.3 крутится примерно три десятка сайтов, написанных на Java, PHP (4 и 5) и Parser (разные версии для разных сайтов). Плюс вспомогательные скрипты на Perl и Python. Плюс XSL. Плюс AWStats и ежедневный бекап на другой винт.

А на другом сервере — Apache 2.2 + Tomcat 5.5 + nginx (reverse proxy) + Perl + Python. Тоже ежедневный бекап, но с отправкой по почте.

В выходные поднял похожее хозяйство на третьем сервере. Там Apache 2.2 + nginx, чисто статика, без скриптов.

Все это под Debian Lenny. Везде стоит и работает mysql + proftpd + iptables + webmin + fail2ban. На главном серваке кроме этого есть еще exmi4 + dovecot + clamav + vsftpd (вместо proftpd).

Если вдруг кому понадобится помощь или просто совет по установке, настройке и администрированию веб-сервера под Debian — обращайтесь.

Хм, у меня не хочет работать JkMount
в логах пишет

[Sat Oct 31 01:13:48 2009] [warn] No JkShmFile defined in httpd.conf. Using default /var/log/apache2/jk-runtime-status
[Sat Oct 31 01:13:48 2009] [warn] No JkShmFile defined in httpd.conf. Using default /var/log/apache2/jk-runtime-status
[Sat Oct 31 01:13:48 2009] [notice] Apache/2.2.14 (Debian) mod_jk/1.2.28 PHP/5.2.11-1 with Suhosin-Patch configured -- resuming normal operations
[Sat Oct 31 01:25:05 2009] [notice] caught SIGTERM, shutting down

и не совсем понятно куда писать
...Context path="" docBase="newst" />

MT аватар

Цитата:
[Sat Oct 31 01:13:48 2009] [notice] Apache/2.2.14 (Debian) mod_jk/1.2.28 PHP/5.2.11-1 with Suhosin-Patch configured -- resuming normal operations
[Sat Oct 31 01:25:05 2009] [notice] caught SIGTERM, shutting down

Разница по времени — 11 минут. Эти два события явно не связаны. Насколько я понимаю, сначала апач нормально поднимается, а потом через 11 минут по какой-то причине падает. Почему ты решил, что у тебя именно JkMount не хочет работать?

Выкладывай конфиги и логи апача.

Цитата:
и не совсем понятно куда писать
...Context path="" docBase="newst" />

Это надо писать в /var/lib/tomcat5.5/conf/server.xml, об этом сказано в посте.

Попробовал сделать всё с начала.
После того как вставляю
JkMount /* ajp13_worker
JkMount /WEB-INF/* ajp13_worker

Сайт выдаёт Service Temporarily Unavailable

Я наверно не до конца что-то понял.
Прикрепил конфиги.

MT аватар

Цитата:
JkMount /* ajp13_worker
JkMount /WEB-INF/* ajp13_worker

Любая из этих строчек вызывает ошибку или только какая-то одна?

Почему у тебя сервер отвечает "Apache/2.2.14 (Debian)" вместо "Apache/2.2.9 (Debian) mod_jk/1.2.26"?
Есть ощущение, что ты а) апач собирал из исходников и б) не включил модуль mod_jk (надо закинуть симлинки в modules-enabled).

Закинь сюда логи апача.

Не работает с этим параметром.
JkMount /* ajp13_worker

При попытке влючить a2enmod jk пишет что включён.

Почистил логи, рестартанул апач. Прикрепил логи

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".