The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Установка и конфигурирование Tomcat 5.5 на ALT Linux Master 2.4 (web linux apache tomcat java)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: web, linux, apache, tomcat, java,  (найти похожие документы)
From: Юрий Левыкин Newsgroups: webform Date: Mon, 28 Apr 2005 14:31:37 +0000 (UTC) Subject: Установка и конфигурирование Tomcat 5.5 на ALT Linux Master 2.4 Установка и конфигурирование Tomcat 5.5 на ALT Linux Master 2.4 © Юрий Левыкин, 2005. Каждый имеет право воспроизводить, распространять и/или вносить изменения в настоящий Документ в соответствии с условиями GNU Free Documentation License, Версией 1.1 или любой более поздней версией, опубликованной Free Software Foundation; Данный документ не содержит Неизменяемых разделов; данный документ содержит следующий Текст, помещаемый на первой странице обложки: "Установка и конфигурирование Tomcat 5.5 на ALT Linux Master 2.4", данный документ не содержит Текста, помещаемого на последней странице обложки. Копия настоящей Лицензии включена в раздел под названием "GNU Free Documentation License". В этом документе будут описаны следующие операции: * Установка tomcat 5.5 * Запуск сервера в качестве демона на 80 порту * Настройка виртуальных хостов * Включение режима записи access логов * Подключение Webalizer * Настройка logrotate Установка tomcat 5.5 1. Загружаем архив Загружаем архив jakarta-tomcat-5.5.7.tar.gz с сайта разработчика http://jakarta.apache.org/tomcat 2. Распаковываем полученный архив # cd /usr/local # mkdir tomcat # cd tomcat # tar -xzf /path/to/archives/jakarta-tomcat-5.5.7.tar.gz # ln -s jakarta-tomcat-5.5.7 5.5 После распаковки архива создаем символьную ссылку которая позволит в дальнейшем, при установке другой версии сервера, избежать изменения путей в скриптах запуска. Для перехода на новую версию нужно будет только перенаправить эту ссылку на другую папку. 3. Загружаем jdk Tomcat версии 5.5 предназначен для работы с jdk 1.5. Загружаем jdk-1_5_0_02-linux-i586-rpm.bin с http://java.sun.com 4. Устанавливаем полученный jdk # ./jdk-1_5_0_02-linux-i586-rpm.bin [ принимаем лицензию и получаем rpm пакет ] # rpm -ihv jdk-1_5_0_02-linux-i586-rpm jdk ####################################################### Запуск сервера в качестве демона на 80 порту Вопрос стоит или нет запускать tomcat на 80 порту часто вызывает дискуссии по поводу безопасности этого решения. Есть мнение, что более безопасно запустить apache на 80 порту, а tomcat оставить на порту 8080. В этом случае, tomcat подключается к apache с помощью mod_jk. Все запросы к web серверу принимает apache и перенапарвляет их на tomcat. Такая конфигурация главным образом используется когда одно web приложение использует и php и jsp/servlet. В случае, когда используется только java работа apache сводится только к перенаправлению запросов, кроме этого усложняется конфигурирование web сервера. Для того, чтобы определиться, я задал этот вопрос в нескольких списках рассылки в результате чего сделал вывод о том, что запускать tomcat с помощью команды jsvc допустимо с точки зрения безопасности. Я не в коем случае не настаиваю на правильности моего решения, я всего лиш провел исследование которое удовлетворило лично меня. В качестве альтернативного варианта можно оставить tomcat на порту 8080 и подключить его к apache с помощью mod_jk или сделать перенаправление портов с помощью iptables. Вот ссылки на письма в списках рассылки: [email protected] - тема: "tomcat5 -- 80 port" http://lists.altlinux.ru/pipermail/community/2005-March/thread.html [email protected] - тема: "Tomcat -- port 80 for Linux" http://mail-archives.eu.apache.org/mod_mbox/jakarta-tomcat-user/200503.mbox/threads.html Обсуждение этой темы на форуме www.javable.com: http://www.javable.com/forum/thread.jspa?threadID=11553 http://www.javable.com/forum/thread.jspa?threadID=11586 Порты с номерами меньшими 1024 являются привилегированными, поэтому чтобы запустить Tomcat на порту 80 нужно собрать программу jsvc которая запускает tomcat в качестве демона. Команда jsvc запускает два процесса: первый выполняется с правами root и открывает 80 порт, второй выполняется с правами $TOMCAT_USER он обслуживает пользовательские запросы к серверу. Ссылки по этой теме: http://www.klawitter.de/tomcat80.html http://jakarta.apache.org/tomcat/tomcat-5.5-doc/setup.html 1. Собираем jsvc # cd /usr/local/tomcat/5.5/bin # tar -xzf jsvc.tar.gz # cd jsvc-src # autoconf # chmod +x configure # ./configure --with-java=/usr/java/jdk1.5.0_02 # make # cp jsvc .. 2. Заводим пользователя tomcat5 С полномочиями этого пользователя будет работать tomcat. # useradd -d /dev/null -s /dev/null -c 'Tomcat5 user' tomcat5 3. Пишем скрипт запуска Заготовка скрипта запуска есть в каталоге jsvc-src/native # cd /usr/local/tomcat/5.5/bin/jsvc-src/native # cp Tomcat5.sh ../.. # vim /usr/local/tomcat/5.5/bin/Tomcat5.sh # cat /usr/local/tomcat/5.5/bin/Tomcat5.sh #!/bin/sh # # tomcat Start/Stop the Jakarta Tomcat # # chkconfig: 345 81 14 # description: Tomcat is the servlet container that is used \ # in the official Reference Implementation for the Java Servlet \ # and JavaServer Pages technologies. The Java Servlet and JavaServer Pages \ # specifications are developed by Sun under the Java Community Process. # # processname: jsvc # pidfile: /var/run/jsvc.pid # config: /usr/local/tomcat/5.5/conf/server.xml # ############################################################################## # # Copyright 2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ############################################################################## # # Small shell script to show how to start/stop Tomcat using jsvc # If you want to have Tomcat running on port 80 please modify the server.xml # file: # # <!-- Define a non-SSL HTTP/1.1 Connector on port 80 --> # <Connector className="org.apache.catalina.connector.http.HttpConnector" # port="80" minProcessors="5" maxProcessors="75" # enableLookups="true" redirectPort="8443" # acceptCount="10" debug="0" connectionTimeout="60000"/> # # That is for Tomcat-5.0.x (Apache Tomcat/5.0) # # Adapt the following lines to your configuration JAVA_HOME=/usr/java/jdk1.5.0_02 CATALINA_HOME=/usr/local/tomcat/5.5 DAEMON_HOME=/usr/local/tomcat/5.5/bin TOMCAT_USER=tomcat5 TMP_DIR=/var/tmp CATALINA_OPTS= CLASSPATH=\ $JAVA_HOME/lib/tools.jar:\ $CATALINA_HOME/bin/commons-daemon.jar:\ $CATALINA_HOME/bin/bootstrap.jar case "$1" in start) # # Start Tomcat # echo -n "Tomcat starting ... " chown -R tomcat5:tomcat5 /usr/local/tomcat/5.5/* $DAEMON_HOME/jsvc \ -user $TOMCAT_USER \ -home $JAVA_HOME \ -Dcatalina.home=$CATALINA_HOME \ -Djava.io.tmpdir=$TMP_DIR \ -outfile $CATALINA_HOME/logs/catalina.out \ -errfile '&1' \ $CATALINA_OPTS \ -cp $CLASSPATH \ org.apache.catalina.startup.Bootstrap # # To get a verbose JVM #-verbose \ # To get a debug of jsvc. #-debug \ ;; stop) # # Stop Tomcat # echo -n "Tomcat shutting ... " PID=`cat /var/run/jsvc.pid` kill $PID ;; status) echo "Tomcat processes: " ps aux --cols 1024 | grep org.apache.catalina.startup.Bootstrap | grep -v g rep ;; restart|reload) $0 stop $0 start exit 0 ;; *) echo "Usage: $0 {start|stop|status|restart|reload}" exit 1 ;; esac echo " [ DONE ]" exit 0 4. Размещаем ссылку на скрипт запуска в /etc/rc.d/init.d # cd /etc/rc.d/init.d # ln -s /usr/local/tomcat/5.5/bin/Tomcat5.sh tomcat 5. Меняем порт в server.xml с 8080 на 80 # vim /usr/local/tomcat/5.5/conf/server.xml # cat /usr/local/tomcat/5.5/conf/server.xml . . . <Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> . . . Если на компьютере запущен apache то необходимо перевести его на другой порт, например 8080 и перезапустить. # vim /etc/httpd/conf/httpd.conf # cat /etc/httpd/conf/httpd.conf . . . Listen 8080 . . . # service httpd restart Stopping httpd service: [ DONE ] Checking configuration sanity for httpd: [ DONE ] Starting httpd service: [ DONE ] 6. Подключаем tomcat к стартовым скриптам SystemV и запускаем сервер # chkconfig --add tomcat # chkconfig --list | grep tomcat tomcat 0:off 1:off 2:off 3:on 4:on 5:on 6:off # service tomcat start Tomcat starting ... [ DONE ] Чтобы убедиться в том, что tomcat загрузится после перезагрузки системы выполняем перезагрузку. # reboot У меня все загрузилось нормально. Настройка виртуальных хостов Если сервер будет обслуживать несколько доменов и на каждом домене будет свое web приложение, то нужно настроить виртуальные хосты. 1. Редактируем конфигурационный файл server.xml Добавляем xml блоки Host в блок Engine для каждого имени которое будет использоваться в URL. # vim /usr/local/tomcat/5.5/conf/server.xml # cat /usr/local/tomcat/5.5/conf/server.xml . . . <Host name="www.mydomain1.org" appBase="webapps"> <Context path="" docBase="app1" reloadable="true" /> </Host> <Host name="mydomain1.org" appBase="webapps"> <Context path="" docBase="app1" reloadable="true" /> </Host> <Host name="www.mydomain2.org" appBase="webapps"> <Context path="" docBase="app2" reloadable="true" /> </Host> <Host name="mydomain2.org" appBase="webapps"> <Context path="" docBase="app2" reloadable="true" /> </Host> </Engine> . . . Здесь: Host name="www.mydomain1.org" - имя web приложения; Context path="/webapp" - продолжение имени ресурса (www.mydomain1.org/webapp); Context docBase="app1" - директория внутри webapps в которой находится web приложение. 2. Размещаем web приложения в директориях указанных в server.xml и перезапускаем tomcat # service tomcat restart Tomcat shutting ... [ DONE ] Tomcat starting ... [ DONE ] Включение режима записи access логов По умолчанию tomcat не пишет access логи, но эту функцию можно включить. 1. Создаем директорию для tomcat в /var/log и ставим ссылку на нее из директории logs в директории установки tomcat Если нам нужно вести логи отдельно для каждого виртуального домена, то создаем поддиректории в /var/log/tomcat соответствующие именам наших доменов. # cd /var/log # mkdir -p tomcat/mydomain1 # mkdir -p tomcat/mydomain2 # chown -R tomcat5:tomcat5 tomcat # cd /usr/local/tomcat/5.5/logs # ln -s /var/log/tomcat access 2. Для активации режима ведения access лога нужно определить соответствующий xml блок Valve в server.xml Нужно задать один из Valve блоков: Valve className="org.apache.catalina.valves.AccessLogValve" Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" Valve className="org.apache.catalina.valves.ByteBufferAccessLogValve" Такой блок нужно задать внутри блока Context, Host, или Engine задавая тем самым уровень на котором будет вестись запись логов. Ссылка по этой теме: http://localhost/tomcat-docs/config/valve.html ссылка на localhost так как сервер уже работает, а в его комплект входит документация. В следующем примере я включаю режим ведения access лога для виртуального хоста www.mydomain1.org. # vim /usr/local/tomcat/5.5/conf/server.xml # cat /usr/local/tomcat/5.5/conf/server.xml . . . <Host name="www.mydomain1.org" appBase="webapps"> . . . <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="logs/access/mydomain1" prefix="access" suffix=".log" pattern="combined" resolveHosts="true"/> </Host> . . . 3. Для активации режима ведения логов перезапускаем tomcat # service tomcat restart Tomcat shutting ... [ DONE ] Tomcat starting ... [ DONE ] Подключение Webalizer Для ведения статистики посещения web приложений с помощью анализа access.log подключим Webalizer. 1. Устанавливаем пакет webalizer # apt-get install webalizer . . . 2. Создаем конфигурационные файлы для каждого виртуального хоста # cd /etc/webalizer # cp apache.conf mydomain1.conf # cp apache.conf mydomain2.conf 3. Редактируем созданные конфигурационные файлы Я переопределил и добавил следующие строки: # cat mydomain1.conf | grep ^[^#] LogFile /var/log/tomcat/mydomain1/access_log LogType clf OutputDir /var/www/html/webalizer/mydomain1 HistoryName /var/lib/webalizer/mydomain1/webalizer.hist Incremental yes IncrementalName /var/lib/webalizer/mydomain1/webalizer.current ReportTitle Usage Statistics for HostName www.mydomain1.ru . . . PageType jsp DNSCache /var/lib/webalizer/mydomain1/dns_cache.db . . . Для вывода информации я использую www директорию apache, который у меня запущен на порту 8080. Если apache не установлен можно направить вывод webalizer в директорию /usr/local/tomcat/5.5/webapps/mydomain1. Для работы такого web приложения под tomcat нужно написать простейший WEB-INF/web.xml файл. 4. Создаем необходимые директории для webalizer # cd /var/lib/webalizer # mkdir mydomain1 # mkdir mydomain2 # chown webalizer:webalizer mydomain1 # chown webalizer:webalizer mydomain2 # cd /var/www/html # mkdir -p webalizer/mydomain1 # mkdir -p webalizer/mydomain2 # chgrp -R webalizer webalizer/ # chmod -R 775 webalizer/ 5. Перенаправляем данные содержащиеся в access логах tomcat в файл access_log Поскольку tomcat пишет логи в формате accessYYYY-MM-DD.log то для того, чтобы webalizer имел возможность работать с одним файлом пишем скрипт который перенаправляет содержимое лога в файл с постоянным именем. # vim /usr/local/sbin/tomcat_logs_mover # cat /usr/local/sbin/tomcat_logs_mover #!/bin/bash # # # Logs Mover for Tomcat Server # # To correct use this command need specify # path to logs files in the first parameter. # if [ -n "$1" ] then cd $1 LOGFN=log_file_name if [ -s $LOGFN ] then LOGFILE=`cat $LOGFN` if [ -s $LOGFILE ] then cat $LOGFILE >> access_log rm -f $LOGFILE fi echo -n 'access'`date +%Y"-"%m"-"%d`'.log' > $LOGFN exit 0 else echo Error: File $LOGFN not found exit 1 fi else echo Error: Not specified path to logs exit 1 fi Этот скрипт необходимо запускать с параметром который задает путь до директории в которой находятся логи tomcat. 6. Создаем файл хранящий имя текущего файла лога # cd /var/log/tomcat # echo -n 'access'`date +%Y"-"%m"-"%d`'.log' > mydomain1/log_file_name # echo -n 'access'`date +%Y"-"%m"-"%d`'.log' > mydomain2/log_file_name 7. Задаем время запуска скрипта и webalizer с помощью cron # crontab -e # crontab -l # crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.T2FfUJ installed on Fri Apr 1 14:29:42 2005) # (Cron version V5.0 -- vixie-cron-4.0.b1.20040604-alt2) #minute (0-59), #| hour (0-23), #| | day of the month (1-31), #| | | month of the year (1-12), #| | | | day of the week (0-6 with 0=Sunday). #| | | | | commands #| | | | | | 1 0 * * * /usr/local/sbin/tomcat_logs_mover /var/log/tomcat/mydomain1 1 0 * * * /usr/local/sbin/tomcat_logs_mover /var/log/tomcat/mydomain2 3 0 * * * /usr/bin/webalizer -c /etc/webalizer/mydomain1.conf >/dev/null 2>/dev/null 3 0 * * * /usr/bin/webalizer -c /etc/webalizer/mydomain2.conf >/dev/null 2>/dev/null Таким образом, в 0:01 запускается скрипт перенапрвляющий данные в access_log, а в 0:03 запускается webalizer который обрабатывает этот лог. После того как webalizer сгенерировал статистику ее можно посмотреть по следующим URL: http://www.mydomain1.ru:8080/webilizer/mydomain1 http://www.mydomain1.ru:8080/webilizer/mydomain2 Настройка logrotate Для того, чтобы не происходил процесс бесконечного роста лог файлов настраиваем logrotate. 1. Создаем конфигурационный файл в /etc/logrotate.d # cd /etc/logrotate.d # echo '/var/log/tomcat/mydomain1/access_log { missingok notifempty } /var/log/tomcat/mydomain1/access_log { missingok notifempty }' > tomcat По умолчанию, logrotate запускается раз в неделю около четырех часов утра в воскресенье. В нашем случае, важно только то, чтобы webalizer обработал лог до того как его заархивирует logrotate. У меня webalizer запускается в 0:03, а logrotate в 4:02. Глобальные настройки logrotate настраиваются в конфигурационном файле /etc/logrotate.conf. GNU Free Documentation License Текст GFDL на английском языке вы можете прочитать здесь http://www.gnu.org/copyleft/fdl.html Текст перевода на русский язык лицензии GNU на свободную документацию вы можете прочитать здесь http://www.infolex.narod.ru/gpl_gnu/gfdlrus.html Юрий Левыкин, 10.04.2005

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру