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
Каждый имеет право воспроизводить, распространять и/или вносить
изменения в настоящий Документ в соответствии с условиями 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 пакет ]
Вопрос стоит или нет запускать 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.
Вот ссылки на письма в списках рассылки:
community@altlinux.ru - тема: "tomcat5 -- 80 port"
http://lists.altlinux.ru/pipermail/community/2005-March/thread.html
tomcat-user@jakarta.apache.org - тема: "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.
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
;;
Host name="www.mydomain1.org" - имя web приложения;
Context path="/webapp" - продолжение имени ресурса (www.mydomain1.org/webapp);
Context docBase="app1" - директория внутри webapps в которой
находится web приложение.
2. Размещаем web приложения в директориях указанных в server.xml
и перезапускаем tomcat
По умолчанию tomcat не пишет access логи, но эту функцию можно
включить.
1. Создаем директорию для tomcat в /var/log и ставим ссылку на
нее из директории logs в директории установки tomcat
Если нам нужно вести логи отдельно для каждого виртуального
домена, то создаем поддиректории в /var/log/tomcat соответствующие
именам наших доменов.
Такой блок нужно задать внутри блока 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
. . .
Для вывода информации я использую www директорию apache, который у
меня запущен на порту 8080. Если apache не установлен можно
направить вывод webalizer в директорию
/usr/local/tomcat/5.5/webapps/mydomain1. Для работы такого web
приложения под tomcat нужно написать простейший WEB-INF/web.xml
файл.
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.
По умолчанию, 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
1071 Прочтений • [Установка и конфигурирование Tomcat 5.5 на ALT Linux Master 2.4 (web linux apache tomcat java)] [08.05.2012] [Комментариев: 0]