Apache Tomcat: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
 
(не показана 81 промежуточная версия этого же участника)
Строка 1: Строка 1:


== РУКОВОДСТВО ПО УСТАНОВКЕ APACHE TOMCAT СЕРВЕРА ==
== Руководство по установке Apache Tomcat ==
В данном документе представлена информация о базовой установке Apache Tomcat 7 на CentOS 7, первоначальной настройке и запуске приложений.
В данном документе представлена информация о базовой установке Apache Tomcat 7 на CentOS 7, первоначальной настройке и запуске приложений.
=== Общие сведения ===
Apache Tomcat – это серверное ПО для исполнения web-приложений, написанных на Java. Apache Tomcat - один из проектов организации Apache Software Foundation и является открытой реализацию таких технологий, как Java Servlet, JavaServer Pages, Java Expression Language и Java WebSocket. Он может быть использован в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP, а также в качестве контейнера сервлетов в некоторых серверах приложений.
==== Архитектура ====
Apache Tomcat сервер состоит из трех основных компонентов: Jasper (механизм JSP), Catalina (контейнер сервлетов) и Coyote (стек HTTP):
* Jasper — механизм JSP Tomcat’а, который является реализацией спецификации JavaServer Pages 2.0 Sun Microsystems. Jasper анализирует JSP-файлы, чтобы компилировать их в Java код, как сервлеты (которые могут быть обработаны с помощью Catalina). Во время выполнения, Jasper может автоматически обнаруживать изменения JSP-файла и перекомпилировать его.
* Catalina — контейнер сервлетов Tomcat’а, который реализует спецификацию Servlet API. Servlet API является основой для всех остальных технологий Java, касающихся Web и дает возможность динамически генерировать любой web-контент, используя любые библиотеки, доступные для java.
* Coyote — компонент стека HTTP Tomcat’а, который поддерживает протокол HTTP для веб-серверов или контейнера приложений. Coyote прослушивает входящие соединения на определённом TCP порту сервера, пересылает запросы в механизм Tomcat для обработки запросов и отправляет ответ назад запрашивающему клиенту.
=== Установка ===
В этой главе описана информация о базовой установке Apache Tomcat сервер 7 при помощи менеджера пакетов yum и из файла дистрибутива (с сайта проекта) на сервер CentOS 7. Apache Tomcat сервер – это серверное ПО для исполнения web-приложений, написанных на Java. Поэтому, предполагается, что у вас уже [http://wiki.etersoft.ru/Java_install установлена Java Runtime Environment (JRE)].
==== Установка с помощью менеджера пакетов ====
Проверить, установлен ли уже Apache Tomcat через менеджер пакетов, можно командой:
[root@server]# yum list tomcat*
Установить Tomcat, используя менеджер пакетов, можно следующей командой:
[root@server]#  yum install tomcat
После выполнения этой команды будет установлен сервер Tomcat 7 и все его зависимости. Кроме того, команда создаст пользователя tomcat.
Данное руководство подразумевает установку нескольких дополнительных пакетов, которые помогут управлять web-приложениями. Чтобы установить стандартную root-страницу (tomcat-webapps), менеджер веб-приложений и виртуальных хостов Tomcat (tomcat-admin-webapps), выполните команду:
[root@server]#  sudo yum install tomcat-webapps tomcat-admin-webapps
После этого в каталоге tomcat/webapps появятся веб-приложения ROOT, examples, sample, manager и host-manager.
==== Установка из файла дистрибутива ====
В некоторых случаях установка ПО с помощью пакетного менеджера невозможна. Тогда используется способ установки из файла дистрибутива. Общий подход в работе Apache Tomcat остается таким же, но есть ряд отличий в установке и запуске.
Чтобы установить Apache Tomcat сервер, необходимо c сайта проекта (или дистрибутива ПО) взять файл apache-tomcat-7.0.67.zip и распаковать его в папку /home/user/tomcat, а потом перенести в /usr/share/tomcat7
[root@server]# cp apache-tomcat-7.0.67.zip  /home/user/tomcat
[root@server]# cd /home/user/tomcat
[root@server]# unzip apache-tomcat-7.0.67.zip
[root@server]# mv apache-tomcat-7.0.67 /usr/share/tomcat7
# Згрузите дистрибутив Apache Tomcat с сайта проекта http://tomcat.apache.org
# Распакуйте файл в нужный каталог (/usr/share/tomcat/).
==== Компиляция из исходного кода ====
==== Установка JDBC-драйвера ====
Неофициальным стандартом, которому следуют программы на языке Java, осуществляя доступ к реляционным базам данных, является JDBC. JDBC – это стандартный API-¬интерфейс, посредством которого Java-программы могут получать доступ к внешним менеджерам ресурсов, главным образом к реляционным базам данных, независящим от менеджера ресурсов способом. То есть Java-приложение, написанное с применением стандартных классов и интерфейсов JDBC, может переноситься на базы данных других производителей реляционных СУБД, если они поддерживают SQL, удовлетворяющий стандарту ANSI.
Драйвер JDBC для PostgreSQL можно скачать с сайта http://jdbc.postgresql.org/download.html Мы используем версию java 1.7, согласно документации, нам нужен файл с именем «postgresql-9.4-1205.jdbc42.jar»  postgresql-9.4.1208.jre7.jar. Этот  файл нам нужно разместить в каталоге /usr/shatre/tomcat7/lib. Убедитесь, что в каталоге нет других версий JDBC-драйвера для той же СУБД. Если есть, необходимо переместить их из этого каталога (или удалить), чтобы избежать путаницы и возможных проблемм при загрузке java-классов.
Далее, нужно добавить следующие строки внутри тега «Context» в файл /usr/shatre/tomcat/conf/context.xml:
<Resource name="jdbc/tomcatDB"
            auth="Container"
            type="javax.sql.DataSource"
            username="tomcat"
            password="newuserpassword"
            driverClassName="org.postgresql.Driver"
            url="jdbc:postgresql://localhost:5432/tomcat"
            maxTotal="8"
            maxIdle="4"/>
Теперь JNDI-ресурс настроен.


После того, как вы разместили jar-файл драйвера в нужном каталоге, и внесли необходимые изменения в файл «context.xml» необходимо перезапустить Apache Tomcat
=== Настройка ===
==== Каталоги и файлы ====
После установки, в системе будут созданы следующие файлы и каталоги:
* /usr/share/tomcat/bin: содержит управляющие скрипты;
* /etc/tomcat: конфигурационные файлы (server.xml, web.xml, context.xml, tomcat-users.xml);
* /usr/share/java/tomcat: jar-файлы, используемые всеми расширениями Tomcat и веб-приложениями;
* /var/log/tomcat: log-файлы;
* /srv/tomcat/webapps: каталог, содержащий веб-приложения (сервлеты и JSP);
* /var/cache/tomcat/work: рабочий каталог Tomcat, который используется, в первую очередь, при преобразовании JSP-страниц в сервлеты;
* /var/cache/tomcat/temp: временные файлы.
В каталоге /usr/share/tomcat будут, также, размещены симлинки на указанные каталоги. Путь к основному каталогу Tomcat можно записать в переменную окружения $CATALINA_HOME (export CATALINA_HOME='/usr/share/tomcat/').
Для настройки сервера Tomcat используются следующие конфигурационные XML-файлы, размещенные в каталоге /usr/share/tomcat/conf/:
* server.xml: Общие настройки сервера (порты, виртуальные хосты и проч.).
* web.xml: Параметры, общие для ВСЕХ веб-приложений на текущем сервере. Настройки отдельных веб-приложений задаются в их собственных файлах /WEB-INF/web.xml (здесь можно провести аналогию с использованием файла .htaccess в Apache).
* context.xml: Общие настройки управления контентом.
* tomcat-users.xml: Список пользователей и групп (ролей).
Внимание: Прежде чем вносить какие-либо изменения в эти файлы, стоит сделать их резервные копии. Также следует обращать внимание на комментарии, которыми снабжены эти файлы
==== Настройка портов подключений и межсетевого экрана ====
'''Настройка портов подключений'''
Изначально Tomcat запускает HTTP-connector (для приема входящих подключений, TCP-порт) на порту 8080 и AJP соединитель на порту 8009. Вы можете захотеть изменить эти порты для исключения конфликтов с другими сервисами и ПО. Кроме того, используется порт 8005, убедиться в этом можно с помощью команды «netstat»:
[root@seкver]# netstat -tuaev --numeric-ports | grep tomcat
tcp6  0    0 localhost:8005    [::]:*    LISTEN      tomcat    33107
tcp6  0    0 [::]:8009        [::]:*    LISTEN      tomcat    29365
tcp6  0    0 [::]:8080        [::]:*    LISTEN      tomcat    29364
[root@server]#
Для того, чтобы сменить порт Apache Tomcat, отредактируйте файл конфигурации server.xml в каталоге /etc/tomcat/server.xml. Найдите строку "<Connector port="8080" protocol="HTTP/1.1"" и замените номер порта. Аналогично с портом 8009:
<Connector port="8080" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
После этого перезапустите Tomcat для того, чтобы изменение настроек вступило в силу.
'''Настройка межсетевого экрана (firewall)'''
После установки Tomcat необходимо убедиться, что в файле конфигурации (/etc/firewalld/zones/public.xml) межсетевого экрана открыты порты, по которым будут обращения к серверу web-приложений из браузера. Чтобы открыть порт 8080 (который используется Tomcat по-умолчанию), выполните команду:
[root@server]# firewall-cmd --permanent --zone=public --add-port=8080/tcp
И перезагрузите сетевой экран
[root@server]# firewall-cmd --reload
В  результате вышеописанных действий, файл конфигурации  межсетевого экрана будет выглядеть следующим образом (добавилась предпоследняя строка):
[root@server]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="postgresql"/>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="ssh"/>
  <port protocol="tcp" port="8080"/>
</zone>
[root@server]#
==== Настройка ролей и прав доступа пользователей ====
Для управления пользователями и ролями Tomcat используется файл tomcat-users.xml, расположенный в каталоге /usr/share/tomcat/conf. Например, чтобы пользоваться ранее установленным менеджером веб-приложений, необходимо добавить соответствующего пользователя на сервер Tomcat. Для этого нужно отредактировать вышеупомянутый файл, добавив в него данные о пользователе, который получит доступ к manager-gui и admin-gui (ранее установленному интерфейсу). Для этого используйте следующий формат, указав имя и пароль пользователя:
[root@server]# nano /usr/share/tomcat/conf/tomcat-users.xml
Файл содержит подсказки по его настройке. Чтобы создать, например, пользователя manager, который сможет управлять веб-приложениями через графическую оболочку (предопределенная роль manager-gui), нужно добавить в этот файл запись вида:
<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="manager" password="somepassword" roles="manager-gui"/>
</tomcat-users>
Сохраните и закройте файл tomcat-users.xml
Обратите внимание, что в Tomcat 7 нет единой роли «manager», а существуют отдельные роли для администрирования:
* manager-gui - позволяет администрировать через веб-интерфейс;
* manager-script - позволяет администрировать через скрипты;
* manager-jmx - позволяет администрировать через JMX прокси;
* manager-status - дает доступ только к странице статуса сервера.
 
Например, для развертывания web-приложений через Maven необходимо присвоить пользователю роль «manager-script». В файле tomcat-users.xml описание этой роли будет выглядеть следующим образом:
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="admin" password="adminadmin" roles="manager-script"/>
==== Настройка переменных среды исполнения ====
Переменные среды окружения не используются Java-приложением Tomcat – вся настройка переменных происходит в стартовых скриптах. Но в некоторых случаях все же может понадобиться настройка некоторых переменных. Обратите внимание на то, что если у вас установлено несколько JVM, по умолчанию Tomcat попробует использовать OpenJDK, затем пробует JVM от Oracle, а затем иные JVM.
Если у вас будут проблемы, связанные с переменными среды исполнения, выполните следующие шаги:
   
   
СОДЕРЖАНИЕ:
# Установите переменную среды CATALINA_HOME и CATALINA_BASE
# Установить переменную среды JRE_HOME или JAVA_HOME. Переменная среды используется для указания расположения JRE или JDK. Если определены обе переменные, то используется JRE_HOME.
# Остальные переменные среды опциональны: CATALINA_OPTS, JAVA_OPTS, CATALINA_PID, JSVC
# Использование скрипта setenv для установки переменных среды (рекомендуется)


ОБЩИЕ СВЕДЕНИЯ
==== Настройка сервера-разработки ====
УСТАНОВКА
Если вы используете Tomcat на сервере разработки и/или тестирования, вам могут быть полезны следующие опции:
УСТАНОВКА JAVA
УСТАНОВКА TOMCAT
НАСТРОЙКА МЕЖСЕТЕВОГО ЭКРАНА
ЗАПУСК TOMCAT
УСТАНОВКА ИЗ ФАЙЛА ДИСТРИБУТИВА
БАЗОВАЯ НАСТРОЙКА
УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ И РОЛЯМИ
НАСТРОЙКА ПЕРЕМЕННЫХ СРЕДЫ ИСПОЛНЕНИЯ
КАТАЛОГИ И ФАЙЛЫ
НАСТРОЙКА ПОРТОВ ПОДКЛЮЧЕНИЙ
АВТОМАТИЧЕСКАЯ ПЕРЕЗАГРУЗКА СТРАНИЦ
ВКЛЮЧЕНИЕ ЛИСТИНГА КАТАЛОГОВ
УСТАНОВКА JDBC-ДРАЙВЕРА
ЗАПУСК ПРИЛОЖЕНИЙ
МЕНЕДЖЕР WEB-ПРИЛОЖЕНИЙ
УСТАНОВКА WEB-ПРИЛОЖЕНИЙ
УДАЛЕНИЕ WEB-ПРИЛОЖЕНИЙ
СТРУКТУРА КАТАЛОГОВ WEB-ПРИЛОЖЕНИЙ


=== ОБЩИЕ СВЕДЕНИЯ ===
'''Автоматическая перезагрузка страниц'''
Apache Tomcat – это серверное ПО для исполнения web-приложений, написанных на Java. Apache Tomcat - один из проектов организации Apache Software Foundation и является открытой реализацию таких технологий, как Java Servlet, JavaServer Pages, Java Expression Language и Java WebSocket. Он может быть использован в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache http, а также в качестве контейнера сервлетов в некоторых серверах приложений.


Apache Tomcat сервер состоит из трех основных компонентов: Jasper (механизм JSP), Catalina (контейнер сервлетов) и Coyote (стек HTTP):
Имеется возможность заставить Tomcat выполнять автоматическую перезагрузку после изменения кода. Нужно добавить атрибут reloadable со значением "true" в элемент <Context> файла conf/context.xml. Это весьма полезно в процессе разработки и отладки сервлетов, но не рекомендуется в процессе постоянной работы web-приложения.
* Jasper — механизм JSP Tomcat’а, который является реализацией спецификации JavaServer Pages 2.0 Sun Microsystems. Jasper анализирует JSP-файлы, чтобы компилировать их в Java код, как сервлеты (которые могут быть обработаны с помощью Catalina). Во время выполнения, Jasper может автоматически обнаруживать изменения JSP-файла и перекомпилировать его.
<Context reloadable="true">
* Catalina — контейнер сервлетов Tomcat’а, который реализует спецификацию Servlet API. Servlet API является основой для всех остальных технологий Java, касающихся Web и дает возможность динамически генерировать любой web-контент, используя любые библиотеки, доступные для java.
  ...
* Coyote — компонент стека HTTP Tomcat’а, который поддерживает протокол HTTP для веб-серверов или контейнера приложений. Coyote прослушивает входящие соединения на определённом TCP порту сервера, пересылает запросы в механизм Tomcat для обработки запросов и отправляет ответ назад запрашивающему клиенту.
</Context>
 
'''Включение листинга каталогов'''
 
Для установки отображения списка файлов в каталогах (листинга), нужно поменять значение атрибута listings с ложного (false) на истинное (true) в блоке настроек сервлета по умолчанию ("default"-servlet) в файле conf/web.xml. Это бывает полезным при разработке и отладке веб-приложений, но не рекомендуется использовать на production-сервере по соображениям безопасности.
 
=== Запуск ===
==== Запуск и остановка Tomcat ====
 
[[Файл:Tomcat-01.png|frame|right]]
 
Если вы установили Tomcat с помощью менеджера пакетов, то для запуска сервиса Tomcat введите следующую команду:
[root@server]# systemctl start tomcat
Для того, чтобы перезапустить сервис (например, после внесения изменений в настройки), используется следующая команда:
[root@server]# systemctl restart tomcat
Чтобы сервис Tomcat автоматически запускался на этапе загрузки сервера:
[root@server]# systemctl enable tomcat
Теперь в адресной строке web-браузера введите «http://IP-адрес_сервера:8080», на экране у вас должна появиться приветственная страница Tomcat:


Сайт Apache Software Foundation: http://www.apache.org/


Сайт проекта Apache Tomcat: http://tomcat.apache.org/
''Рисунок N. Приветственная страница Tomcat.''


===УСТАНОВКА===
'''Запуск при установке без использования менеджера пакетов'''
В этой главе представлена информация о базовой установке Apache Tomcat сервер 7 при помощи менеджера пакетов yum и из файла дистрибутива на сервере CentOS 7.


'''Установка Java'''
Запуск Tomcat может быть осуществлен с использованием следующих команд:
$CATALINA_HOME/bin/startup.sh
или
$CATALINA_HOME/bin/catalina.sh start


Apache Tomcat сервер – это серверное ПО для исполнения web-приложений, написанных на Java. Поэтому, прежде чем приступить к установке Apache Tomcat, необходимо проверить корректность установки и версию java. Для успешного запуска требуется Oracle Java Standard Edition Runtime Environment (JRE) version 7 (1.7) или новее. Также можно использовать Java Development Kit (JDK) вместо JRE. Воспользуйтесь командой  «java -version», чтобы определить версию Java.


Скрипт catalina.sh используется для ручного запуска и остановки сервера Tomcat. Для автоматического запуска можно использовать скрипт:
CATALINA_BASE=$CATALINA_HOME
cd $CATALINA_HOME
./bin/jsvc \
    -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
    -outfile $CATALINA_BASE/logs/catalina.out \
    -errfile $CATALINA_BASE/logs/catalina.err \
    -Dcatalina.home=$CATALINA_HOME \
    -Dcatalina.base=$CATALINA_BASE \
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
    -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
    org.apache.catalina.startup.Bootstrap


В том случае, если Java  не установлена, вы увидите на экране следующее сообщение:
Завершение работы Apache Tomcat:  
  [root@server]# java -version
  $CATALINA_HOME/bin/shutdown.sh
  bash: java: команда не найдена
или
  $CATALINA_HOME/bin/catalina.sh stop
Файлы вашего приложения нужно расположить в каталоге /usr/share/tomcat7/webapps, более подробная информация по развертыванию приложений в главе «Запуск приложений».


Если установлена 8-ая версия Oracle Java:
==== Менеджер Web-приложений ====
[root@server]# java -version
В Apache Tomcat есть встроенное приложение для управления сервером и другими приложениями, т.н. manager application. Доступ к нему можно получить по ссылке http://server_IP_address:8080/manager/html или со стартовой страницы по ссылке «Manager App» (на рисунке ниже выделена красной рамкой). Менеджер приложений является защищенным web-ресурсом, поэтому при первом его вызове появится диалоговое окно для аутентификации.
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
  Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)


И для версии 7 картина будет похожей:
[[Файл:Tomcat-03.png]]
[root@server java]# java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
   
   
Если установлена OpenJDK:
''Рисунок N. Окно авторизации.''
[root@server]# java -version
 
java version "1.7.0_75"
Для входа в менеджер web-приложений необходимо воспользоваться теми именем пользователя и паролем, которые были заданы при настройке пользователей и ролей.
OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13)
Web Application Manager используется для управления приложениями Java; он позволяет запускать, останавливать, перезапускать и удалять приложения. Также Web Application Manager позволяет выполнять диагностику приложений (например, обнаруживать утечки памяти). Кроме того, в самом низу этой страницы находится информация о сервере.
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
 
[[Файл:Tomcat-04.png]]


Для того, чтобы установить Oracle Java, необходимо скачать соответствующий файл (в нашем случае jdk-7u80-linux-x64.rpm jre-8u65-linux-x64.rpm), с сайта http://www.java.com/ru/download/manual.jsp.
''Рисунок N Основное окно менеджера web-приложений.''


http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 
В разделе «Manager» есть ссылка «Server Status», для получения  детального описания состояния сервера.


Создайте каталог, в который вы хотите установить java (в нашем случае /usr/java), переместите туда скаченный файл, и установите, используя команду «rpm -ivh». Например, вам нужно установить 8-ую версию (файл jre-8u65-linux-x64.rpm):
В разделе Applications перечислены веб-приложения, установленные на данном сервере, и есть кнопки для управления ими:
[root@server usr]# mkdir java
* Start — запустить приложение;
[root@server usr]# cd java/
* Stop — остановить приложение, при этом сам сервер и остальные приложения продолжат работу;
[root@server java]# cp /home/user/jre-8u65-linux-x64.rpm  /usr/java
* Reload — перезапустить приложение;
[root@server java]# ls
* Undeploy — удалить приложение;
jre-8u65-linux-x64.rpm
* Expire sessions with idle >= … minutes — считать веб-сессии пользователей истекшими по прошествии стольки-то минут без активности.
[root@server java]# rpm -ivh jre-8u65-linux-x64.rpm
 
Подготовка...             ################################# [100%]
Раздел Deploy предназначен для инсталляции приложения из war-файла.
Обновление / установка...
 
  1:jre1.8.0_65-1.8.0_65-fcs      ################################# [100%]
Diagnostics позволяет найти утечки памяти и принудительно запустить сборку мусора в JVM.
Unpacking JAR files...
 
        plugin.jar...
Web Application Manager сам является web-приложением, которое предварительно установлено в Tomcat. Следовательно, для того, чтобы Tomcat мог его использовать, это приложение должно быть запущено и присутствовать в списке приложений. Кроме менеджера web-приложенй (manager), в числе предустановленных часто бывает приложение для управления хостами (host-manager).
        javaws.jar...
 
        deploy.jar...
==== Установка и удаление web-приложений ====
        rt.jar...
[[Файл:Tomcat-06.png|frame|right]]
        jsse.jar...
'''Установка web-приложений'''
        charsets.jar...
 
        localedata.jar...
Существует два способа развертывания приложений.
        jfxrt.jar...
 
[root@server java]#
''Способ 1.'' Без использования менеджера приложений (Tomcat Web Application Manager):
# Скопировать war-файл в каталог <TOMCAT_HOME>\webapps
Или 7-ую (файл jdk-7u80-linux-x64.rpm):
# Если Tomcat был запущен, то он сам развернет приложение из war-файла через несколько секунд (появится одноименный каталог). Либо самостоятельно перезапустите Tomcat, и он развернёт war.
  [root@server /]# cd /usr
# Проверьте работоспособность приложения, пройдя по соостветствующей ссылке.  
[root@server usr]# ls
 
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp
Способ 2. С использованием менеджера приложений (Tomcat Web Application Manager): 
  [root@server usr]# mkdir java
# Убедитесь, что Tomcat запущен.
  [root@server usr]# cd  java/
# Перейдите на стартовую страницу: http://IP-адрес_сервера:8080
  [root@ java]# mv /root/jdk-7u80-linux-i586.rpm .
# Откройте менеджер web-приложений
[root@server java]# ls
# Введите данные в аутентификации (Описано выше)
jdk-7u80-linux-i586.rpm
# В разделе «Deploy» нажмите кнопку возле «Select WAR file to upload» и выберете файл, которы вы хотите развернуть (выделено красной рамкой на рисунке ниже).
  [root@server java]#
# Нажмите кнопку «Deploy» под этой надписью.
  [root@server java]# mv /root/jdk-7u80-linux-x64.rpm .
 
[root@server java]# rpm -ivh jdk-7u80-linux-x64.rpm
После этого Tomcat самостоятельно скопирует war-файл к себе в каталог \webapps и развернет его. Web-приложение появится в списке Applications и вы сможете перейти к нему, кликнув по ссылке с соответствующим названием.
  Подготовка...              ################################# [100%]
 
Обновление / установка...
'''Удаление web-приложений'''
  1:jdk-2000:1.7.0_80-fcs            ################################# [100%]
Существует два способа развертывания приложений.
  Unpacking JAR files...
 
        rt.jar...
''Способ 1.'' Без использования менеджера приложений (Tomcat Web Application Manager):
        jsse.jar...
# Выключите Apache Tomcat сервер командой «systemctl stop tomcat»
        charsets.jar...
# В каталоге \webapps удалите war-файл и одноименный каталог.
        tools.jar...
# В каталоге \conf\Catalina\localhost удалите одноименный xml.
        localedata.jar...
# В каталоге \work\Catalina\localhost удалите одноименный каталог.  
        jfxrt.jar...
Последний шаг необязателен: удаляются временные файлы которые создал Tomcat.
[root@server java]#
 
''Способ 2.'' С использованием менеджера приложений (Tomcat Web Application Manager):
 
==== Структура каталогов web-приложений ====
[[Файл:Web-app.png|frame|right]]  
Все web-приложения размещаются в каталоге webapps (/usr/share/tomcat/webapps). Каждое приложение размещается в собственном, одноименном, каталоге с определенной вложенной структурой. Например, для приложения ''websample'' структура каталогов должны быть следующей: webapps/websample/WEB-INF/classes. Соответственно, создать эту структуру можно так:
  [root@server]# mkdir -p /usr/share/tomcat/webapps/websample/WEB-INF/classes
 
Назначение созданных каталогов следующее:
{| border="1"
  |-
  |websample
  |Корневой каталог веб-приложения. Здесь размещаются HTML-страницы и прочие ресурсы (таблицы стилей (CSS), изображения, клиентские скрипты (javascript), JSP и т.п.), доступные веб-клиентам.
  |-
  |websample/WEB-INF
|Этот каталог, недоступный веб-пользователям, содержит описание веб-приложения и его параметры в файле web.xml. (WEB-INF - предопределенное и регистрозависимое имя каталога)
|-
  |websample/WEB-INF/classes
  | В этом каталоге размещаются все файлы Java-классов сервлетов.
|}

Текущая версия на 17:36, 25 апреля 2017

Руководство по установке Apache Tomcat

В данном документе представлена информация о базовой установке Apache Tomcat 7 на CentOS 7, первоначальной настройке и запуске приложений.

Общие сведения

Apache Tomcat – это серверное ПО для исполнения web-приложений, написанных на Java. Apache Tomcat - один из проектов организации Apache Software Foundation и является открытой реализацию таких технологий, как Java Servlet, JavaServer Pages, Java Expression Language и Java WebSocket. Он может быть использован в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP, а также в качестве контейнера сервлетов в некоторых серверах приложений.

Архитектура

Apache Tomcat сервер состоит из трех основных компонентов: Jasper (механизм JSP), Catalina (контейнер сервлетов) и Coyote (стек HTTP):

  • Jasper — механизм JSP Tomcat’а, который является реализацией спецификации JavaServer Pages 2.0 Sun Microsystems. Jasper анализирует JSP-файлы, чтобы компилировать их в Java код, как сервлеты (которые могут быть обработаны с помощью Catalina). Во время выполнения, Jasper может автоматически обнаруживать изменения JSP-файла и перекомпилировать его.
  • Catalina — контейнер сервлетов Tomcat’а, который реализует спецификацию Servlet API. Servlet API является основой для всех остальных технологий Java, касающихся Web и дает возможность динамически генерировать любой web-контент, используя любые библиотеки, доступные для java.
  • Coyote — компонент стека HTTP Tomcat’а, который поддерживает протокол HTTP для веб-серверов или контейнера приложений. Coyote прослушивает входящие соединения на определённом TCP порту сервера, пересылает запросы в механизм Tomcat для обработки запросов и отправляет ответ назад запрашивающему клиенту.

Установка

В этой главе описана информация о базовой установке Apache Tomcat сервер 7 при помощи менеджера пакетов yum и из файла дистрибутива (с сайта проекта) на сервер CentOS 7. Apache Tomcat сервер – это серверное ПО для исполнения web-приложений, написанных на Java. Поэтому, предполагается, что у вас уже установлена Java Runtime Environment (JRE).

Установка с помощью менеджера пакетов

Проверить, установлен ли уже Apache Tomcat через менеджер пакетов, можно командой:

[root@server]# yum list tomcat*

Установить Tomcat, используя менеджер пакетов, можно следующей командой:

[root@server]#  yum install tomcat

После выполнения этой команды будет установлен сервер Tomcat 7 и все его зависимости. Кроме того, команда создаст пользователя tomcat.

Данное руководство подразумевает установку нескольких дополнительных пакетов, которые помогут управлять web-приложениями. Чтобы установить стандартную root-страницу (tomcat-webapps), менеджер веб-приложений и виртуальных хостов Tomcat (tomcat-admin-webapps), выполните команду:

[root@server]#  sudo yum install tomcat-webapps tomcat-admin-webapps

После этого в каталоге tomcat/webapps появятся веб-приложения ROOT, examples, sample, manager и host-manager.

Установка из файла дистрибутива

В некоторых случаях установка ПО с помощью пакетного менеджера невозможна. Тогда используется способ установки из файла дистрибутива. Общий подход в работе Apache Tomcat остается таким же, но есть ряд отличий в установке и запуске.

Чтобы установить Apache Tomcat сервер, необходимо c сайта проекта (или дистрибутива ПО) взять файл apache-tomcat-7.0.67.zip и распаковать его в папку /home/user/tomcat, а потом перенести в /usr/share/tomcat7

[root@server]# cp apache-tomcat-7.0.67.zip  /home/user/tomcat
[root@server]# cd /home/user/tomcat
[root@server]# unzip apache-tomcat-7.0.67.zip
[root@server]# mv apache-tomcat-7.0.67 /usr/share/tomcat7
  1. Згрузите дистрибутив Apache Tomcat с сайта проекта http://tomcat.apache.org
  2. Распакуйте файл в нужный каталог (/usr/share/tomcat/).

Компиляция из исходного кода

Установка JDBC-драйвера

Неофициальным стандартом, которому следуют программы на языке Java, осуществляя доступ к реляционным базам данных, является JDBC. JDBC – это стандартный API-¬интерфейс, посредством которого Java-программы могут получать доступ к внешним менеджерам ресурсов, главным образом к реляционным базам данных, независящим от менеджера ресурсов способом. То есть Java-приложение, написанное с применением стандартных классов и интерфейсов JDBC, может переноситься на базы данных других производителей реляционных СУБД, если они поддерживают SQL, удовлетворяющий стандарту ANSI.


Драйвер JDBC для PostgreSQL можно скачать с сайта http://jdbc.postgresql.org/download.html Мы используем версию java 1.7, согласно документации, нам нужен файл с именем «postgresql-9.4-1205.jdbc42.jar» postgresql-9.4.1208.jre7.jar. Этот файл нам нужно разместить в каталоге /usr/shatre/tomcat7/lib. Убедитесь, что в каталоге нет других версий JDBC-драйвера для той же СУБД. Если есть, необходимо переместить их из этого каталога (или удалить), чтобы избежать путаницы и возможных проблемм при загрузке java-классов.

Далее, нужно добавить следующие строки внутри тега «Context» в файл /usr/shatre/tomcat/conf/context.xml:

<Resource name="jdbc/tomcatDB"
           auth="Container"
           type="javax.sql.DataSource"
           username="tomcat"
           password="newuserpassword"
           driverClassName="org.postgresql.Driver"
           url="jdbc:postgresql://localhost:5432/tomcat"
           maxTotal="8"
           maxIdle="4"/>

Теперь JNDI-ресурс настроен.

После того, как вы разместили jar-файл драйвера в нужном каталоге, и внесли необходимые изменения в файл «context.xml» необходимо перезапустить Apache Tomcat

Настройка

Каталоги и файлы

После установки, в системе будут созданы следующие файлы и каталоги:

  • /usr/share/tomcat/bin: содержит управляющие скрипты;
  • /etc/tomcat: конфигурационные файлы (server.xml, web.xml, context.xml, tomcat-users.xml);
  • /usr/share/java/tomcat: jar-файлы, используемые всеми расширениями Tomcat и веб-приложениями;
  • /var/log/tomcat: log-файлы;
  • /srv/tomcat/webapps: каталог, содержащий веб-приложения (сервлеты и JSP);
  • /var/cache/tomcat/work: рабочий каталог Tomcat, который используется, в первую очередь, при преобразовании JSP-страниц в сервлеты;
  • /var/cache/tomcat/temp: временные файлы.

В каталоге /usr/share/tomcat будут, также, размещены симлинки на указанные каталоги. Путь к основному каталогу Tomcat можно записать в переменную окружения $CATALINA_HOME (export CATALINA_HOME='/usr/share/tomcat/').

Для настройки сервера Tomcat используются следующие конфигурационные XML-файлы, размещенные в каталоге /usr/share/tomcat/conf/:

  • server.xml: Общие настройки сервера (порты, виртуальные хосты и проч.).
  • web.xml: Параметры, общие для ВСЕХ веб-приложений на текущем сервере. Настройки отдельных веб-приложений задаются в их собственных файлах /WEB-INF/web.xml (здесь можно провести аналогию с использованием файла .htaccess в Apache).
  • context.xml: Общие настройки управления контентом.
  • tomcat-users.xml: Список пользователей и групп (ролей).

Внимание: Прежде чем вносить какие-либо изменения в эти файлы, стоит сделать их резервные копии. Также следует обращать внимание на комментарии, которыми снабжены эти файлы

Настройка портов подключений и межсетевого экрана

Настройка портов подключений

Изначально Tomcat запускает HTTP-connector (для приема входящих подключений, TCP-порт) на порту 8080 и AJP соединитель на порту 8009. Вы можете захотеть изменить эти порты для исключения конфликтов с другими сервисами и ПО. Кроме того, используется порт 8005, убедиться в этом можно с помощью команды «netstat»:

[root@seкver]# netstat -tuaev --numeric-ports | grep tomcat
tcp6   0     0 localhost:8005    [::]:*     LISTEN      tomcat     33107
tcp6   0     0 [::]:8009         [::]:*     LISTEN      tomcat     29365
tcp6   0     0 [::]:8080         [::]:*     LISTEN      tomcat     29364
[root@server]#

Для того, чтобы сменить порт Apache Tomcat, отредактируйте файл конфигурации server.xml в каталоге /etc/tomcat/server.xml. Найдите строку "<Connector port="8080" protocol="HTTP/1.1"" и замените номер порта. Аналогично с портом 8009:

<Connector port="8080" protocol="HTTP/1.1" 
              connectionTimeout="20000" 
              redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

После этого перезапустите Tomcat для того, чтобы изменение настроек вступило в силу.

Настройка межсетевого экрана (firewall)

После установки Tomcat необходимо убедиться, что в файле конфигурации (/etc/firewalld/zones/public.xml) межсетевого экрана открыты порты, по которым будут обращения к серверу web-приложений из браузера. Чтобы открыть порт 8080 (который используется Tomcat по-умолчанию), выполните команду:

[root@server]# firewall-cmd --permanent --zone=public --add-port=8080/tcp

И перезагрузите сетевой экран

[root@server]# firewall-cmd --reload

В результате вышеописанных действий, файл конфигурации межсетевого экрана будет выглядеть следующим образом (добавилась предпоследняя строка):

[root@server]# cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
 <short>Public</short>
 <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
 <service name="postgresql"/>
 <service name="dhcpv6-client"/>
 <service name="http"/>
 <service name="ssh"/>
 <port protocol="tcp" port="8080"/>
</zone>
[root@server]#

Настройка ролей и прав доступа пользователей

Для управления пользователями и ролями Tomcat используется файл tomcat-users.xml, расположенный в каталоге /usr/share/tomcat/conf. Например, чтобы пользоваться ранее установленным менеджером веб-приложений, необходимо добавить соответствующего пользователя на сервер Tomcat. Для этого нужно отредактировать вышеупомянутый файл, добавив в него данные о пользователе, который получит доступ к manager-gui и admin-gui (ранее установленному интерфейсу). Для этого используйте следующий формат, указав имя и пароль пользователя:

[root@server]# nano /usr/share/tomcat/conf/tomcat-users.xml

Файл содержит подсказки по его настройке. Чтобы создать, например, пользователя manager, который сможет управлять веб-приложениями через графическую оболочку (предопределенная роль manager-gui), нужно добавить в этот файл запись вида:

<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="manager" password="somepassword" roles="manager-gui"/>
</tomcat-users>

Сохраните и закройте файл tomcat-users.xml Обратите внимание, что в Tomcat 7 нет единой роли «manager», а существуют отдельные роли для администрирования:

  • manager-gui - позволяет администрировать через веб-интерфейс;
  • manager-script - позволяет администрировать через скрипты;
  • manager-jmx - позволяет администрировать через JMX прокси;
  • manager-status - дает доступ только к странице статуса сервера.

Например, для развертывания web-приложений через Maven необходимо присвоить пользователю роль «manager-script». В файле tomcat-users.xml описание этой роли будет выглядеть следующим образом:

 <role rolename="manager-gui"/>
 <role rolename="manager-script"/>
 <role rolename="manager-jmx"/>
 <role rolename="manager-status"/>
 <user username="admin" password="adminadmin" roles="manager-script"/>

Настройка переменных среды исполнения

Переменные среды окружения не используются Java-приложением Tomcat – вся настройка переменных происходит в стартовых скриптах. Но в некоторых случаях все же может понадобиться настройка некоторых переменных. Обратите внимание на то, что если у вас установлено несколько JVM, по умолчанию Tomcat попробует использовать OpenJDK, затем пробует JVM от Oracle, а затем иные JVM. Если у вас будут проблемы, связанные с переменными среды исполнения, выполните следующие шаги:

  1. Установите переменную среды CATALINA_HOME и CATALINA_BASE
  2. Установить переменную среды JRE_HOME или JAVA_HOME. Переменная среды используется для указания расположения JRE или JDK. Если определены обе переменные, то используется JRE_HOME.
  3. Остальные переменные среды опциональны: CATALINA_OPTS, JAVA_OPTS, CATALINA_PID, JSVC
  4. Использование скрипта setenv для установки переменных среды (рекомендуется)

Настройка сервера-разработки

Если вы используете Tomcat на сервере разработки и/или тестирования, вам могут быть полезны следующие опции:

Автоматическая перезагрузка страниц

Имеется возможность заставить Tomcat выполнять автоматическую перезагрузку после изменения кода. Нужно добавить атрибут reloadable со значением "true" в элемент <Context> файла conf/context.xml. Это весьма полезно в процессе разработки и отладки сервлетов, но не рекомендуется в процессе постоянной работы web-приложения.

<Context reloadable="true">
  ...
</Context>

Включение листинга каталогов

Для установки отображения списка файлов в каталогах (листинга), нужно поменять значение атрибута listings с ложного (false) на истинное (true) в блоке настроек сервлета по умолчанию ("default"-servlet) в файле conf/web.xml. Это бывает полезным при разработке и отладке веб-приложений, но не рекомендуется использовать на production-сервере по соображениям безопасности.

Запуск

Запуск и остановка Tomcat

Tomcat-01.png

Если вы установили Tomcat с помощью менеджера пакетов, то для запуска сервиса Tomcat введите следующую команду:

[root@server]# systemctl start tomcat

Для того, чтобы перезапустить сервис (например, после внесения изменений в настройки), используется следующая команда:

[root@server]# systemctl restart tomcat

Чтобы сервис Tomcat автоматически запускался на этапе загрузки сервера:

[root@server]# systemctl enable tomcat

Теперь в адресной строке web-браузера введите «http://IP-адрес_сервера:8080», на экране у вас должна появиться приветственная страница Tomcat:


Рисунок N. Приветственная страница Tomcat.

Запуск при установке без использования менеджера пакетов

Запуск Tomcat может быть осуществлен с использованием следующих команд:

$CATALINA_HOME/bin/startup.sh 

или

$CATALINA_HOME/bin/catalina.sh start


Скрипт catalina.sh используется для ручного запуска и остановки сервера Tomcat. Для автоматического запуска можно использовать скрипт:

CATALINA_BASE=$CATALINA_HOME
cd $CATALINA_HOME
./bin/jsvc \
   -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
   -outfile $CATALINA_BASE/logs/catalina.out \
   -errfile $CATALINA_BASE/logs/catalina.err \
   -Dcatalina.home=$CATALINA_HOME \
   -Dcatalina.base=$CATALINA_BASE \
   -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
   -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
   org.apache.catalina.startup.Bootstrap

Завершение работы Apache Tomcat:

$CATALINA_HOME/bin/shutdown.sh 

или

$CATALINA_HOME/bin/catalina.sh stop

Файлы вашего приложения нужно расположить в каталоге /usr/share/tomcat7/webapps, более подробная информация по развертыванию приложений в главе «Запуск приложений».

Менеджер Web-приложений

В Apache Tomcat есть встроенное приложение для управления сервером и другими приложениями, т.н. manager application. Доступ к нему можно получить по ссылке http://server_IP_address:8080/manager/html или со стартовой страницы по ссылке «Manager App» (на рисунке ниже выделена красной рамкой). Менеджер приложений является защищенным web-ресурсом, поэтому при первом его вызове появится диалоговое окно для аутентификации.

Tomcat-03.png

Рисунок N. Окно авторизации.

Для входа в менеджер web-приложений необходимо воспользоваться теми именем пользователя и паролем, которые были заданы при настройке пользователей и ролей. Web Application Manager используется для управления приложениями Java; он позволяет запускать, останавливать, перезапускать и удалять приложения. Также Web Application Manager позволяет выполнять диагностику приложений (например, обнаруживать утечки памяти). Кроме того, в самом низу этой страницы находится информация о сервере.

Tomcat-04.png

Рисунок N Основное окно менеджера web-приложений.

В разделе «Manager» есть ссылка «Server Status», для получения детального описания состояния сервера.

В разделе Applications перечислены веб-приложения, установленные на данном сервере, и есть кнопки для управления ими:

  • Start — запустить приложение;
  • Stop — остановить приложение, при этом сам сервер и остальные приложения продолжат работу;
  • Reload — перезапустить приложение;
  • Undeploy — удалить приложение;
  • Expire sessions with idle >= … minutes — считать веб-сессии пользователей истекшими по прошествии стольки-то минут без активности.

Раздел Deploy предназначен для инсталляции приложения из war-файла.

Diagnostics позволяет найти утечки памяти и принудительно запустить сборку мусора в JVM.

Web Application Manager сам является web-приложением, которое предварительно установлено в Tomcat. Следовательно, для того, чтобы Tomcat мог его использовать, это приложение должно быть запущено и присутствовать в списке приложений. Кроме менеджера web-приложенй (manager), в числе предустановленных часто бывает приложение для управления хостами (host-manager).

Установка и удаление web-приложений

Tomcat-06.png

Установка web-приложений

Существует два способа развертывания приложений.

Способ 1. Без использования менеджера приложений (Tomcat Web Application Manager):

  1. Скопировать war-файл в каталог <TOMCAT_HOME>\webapps
  2. Если Tomcat был запущен, то он сам развернет приложение из war-файла через несколько секунд (появится одноименный каталог). Либо самостоятельно перезапустите Tomcat, и он развернёт war.
  3. Проверьте работоспособность приложения, пройдя по соостветствующей ссылке.

Способ 2. С использованием менеджера приложений (Tomcat Web Application Manager):

  1. Убедитесь, что Tomcat запущен.
  2. Перейдите на стартовую страницу: http://IP-адрес_сервера:8080
  3. Откройте менеджер web-приложений
  4. Введите данные в аутентификации (Описано выше)
  5. В разделе «Deploy» нажмите кнопку возле «Select WAR file to upload» и выберете файл, которы вы хотите развернуть (выделено красной рамкой на рисунке ниже).
  6. Нажмите кнопку «Deploy» под этой надписью.

После этого Tomcat самостоятельно скопирует war-файл к себе в каталог \webapps и развернет его. Web-приложение появится в списке Applications и вы сможете перейти к нему, кликнув по ссылке с соответствующим названием.

Удаление web-приложений Существует два способа развертывания приложений.

Способ 1. Без использования менеджера приложений (Tomcat Web Application Manager):

  1. Выключите Apache Tomcat сервер командой «systemctl stop tomcat»
  2. В каталоге \webapps удалите war-файл и одноименный каталог.
  3. В каталоге \conf\Catalina\localhost удалите одноименный xml.
  4. В каталоге \work\Catalina\localhost удалите одноименный каталог.

Последний шаг необязателен: удаляются временные файлы которые создал Tomcat.

Способ 2. С использованием менеджера приложений (Tomcat Web Application Manager):

Структура каталогов web-приложений

Web-app.png

Все web-приложения размещаются в каталоге webapps (/usr/share/tomcat/webapps). Каждое приложение размещается в собственном, одноименном, каталоге с определенной вложенной структурой. Например, для приложения websample структура каталогов должны быть следующей: webapps/websample/WEB-INF/classes. Соответственно, создать эту структуру можно так:

[root@server]# mkdir -p /usr/share/tomcat/webapps/websample/WEB-INF/classes

Назначение созданных каталогов следующее:

websample Корневой каталог веб-приложения. Здесь размещаются HTML-страницы и прочие ресурсы (таблицы стилей (CSS), изображения, клиентские скрипты (javascript), JSP и т.п.), доступные веб-клиентам.
websample/WEB-INF Этот каталог, недоступный веб-пользователям, содержит описание веб-приложения и его параметры в файле web.xml. (WEB-INF - предопределенное и регистрозависимое имя каталога)
websample/WEB-INF/classes В этом каталоге размещаются все файлы Java-классов сервлетов.