пятница, 24 декабря 2010 г.

связка Apache+Tomcat

На днях пришлось решать задачу по настройке связки Apache 2+Tomcat 6.02 на Debian 5 сервере. Пришлось в очередной раз порыться в инете в поисках инструкций. Дабы не повторять этот процесс в следующий раз решил выложить тут алгоритм, который получил в итоге.

Итак, дано: VDS с Debian 5, Apache 2 уже установлен, на нём настроены несколько виртуальных хостов. Требуется: в поддиректории одного из сайтов исполнять jsp - страницы средствами Tomcat.

1. Устанавливаем JDK. 

apt-get install python-software-properties 
add-apt-repository ppa:sun-java-community-team/sun-java6 
apt-get update 
apt-get install sun-java6-jdk

Желательно после установки в /etc/profile добавить строки:

JAVA_HOME="/usr/lib/jvm/java-6-sun/"
export JAVA_HOME

2. Устанавливаем Tomcat:

Берём с официального сайта ссылку на последнюю версию и wget-ом вытягиваем её к себе на сервер. Распаковываем и переносим "на место постоянного проживания":

tar -xzvf apache-tomcat-6.0.29.tar.gz
mv apache-tomcat-6.0.29 /opt/tomcat

3. Делаем init-скрипт для запуска/останова/перезапуска Tomcat-а:

в /etc/init.d/tomcat
пишем:

#!/bin/sh
# Tomcat Init-Script
case $1 in
start)
sh /opt/tomcat/bin/startup.sh
;;
stop)
sh /opt/tomcat/bin/shutdown.sh
;;
restart)
sh /opt/tomcat/bin/shutdown.sh
sh /opt/tomcat/bin/startup.sh
;;
esac
exit 0

Ставим на него права 0755 и делаем:
update-rc.d tomcat defaults

4. Настраиваем логин в Tomcat Manager:

редактируем /opt/tomcat/conf/tomcat-users.xml

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


5. Проверяем работу "свежеустановленного" сервера:

/etc/init.d/tomcat start
по адресу http://ваш домен:8080/manager/html будет работать админка Tomcat-а.

6. Настраиваем модуль для связи Tomcat и Apache

Устанавливаем модуль для Apache:
aptitude install libapache2-mod-jk

взаимодействие между серверами реализуется с помощью worker-а. Описываем его конфигурацию в файле /etc/apache2/workers.properties:

workers.tomcat_home=/opt/tomcat
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-а: default
Описываем конфигурацию модуля в файле /etc/apache2/conf.d/jk.conf

JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
Перезагружаем сервера:
/etc/init.d/apache2 stop
/etc/init.d/tomcat restart
/etc/init.d/apache2 start

7. Создаём виртуальный хост на Tomcat и привязываем его к выбранному виртуальному хосту на Apache

добавляем в /opt/tomcat/conf/server.xml
<host name="www.testsrv.local" appBase="/var/www/vhost1"
unpackWARs="true" autoDeploy="true">
<context path="" docBase="htdocs" debug="0" reloadable="true"/>
<valve className="org.apache.catalina.valves.AccessLogValve"
directory="/var/www/vhost1/logs" prefix="tomcat_access_" suffix=".log"
pattern="common" resolveHosts="false"/>
</host>

Пути к директориям указываем соответственно те, где будут лежать наши .jsp

В секцию выбранного витуального хоста Apache в /etc/apache2/apache2.conf добавляем строку:

JkMount /j/*.jsp default

где /j/ - путь к директории, где будут лежать .jsp - страницы относительно корня сайта в Apache.

8. Проверяем:

Создаём файл test.jsp в выбранной директории:

<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
Today is: <%= new java.util.Date().toString() %>
</body>
</html>

и заходим по адресу http://ваш домен/j/test.jsp
наблюдаем работающую .jsp страницу, которую выполнил Tomcat по "поручению" Apache :)

Комментариев нет:

Отправить комментарий