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

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
Строка 179: Строка 179:


После того, как вы разместили jar-файл драйвера в нужном каталоге, и внесли необходимые изменения в файл «context.xml» необходимо перезапустить Apache Tomcat
После того, как вы разместили jar-файл драйвера в нужном каталоге, и внесли необходимые изменения в файл «context.xml» необходимо перезапустить Apache Tomcat
=== Запуск ===
Запуск Tomcat
Для запуска сервиса Tomcat введите следующую команду:
# systemctl start tomcat
Для того, чтобы перезапустить сервис (например, после внесения изменений в настройки), используется следующая команда:
[root@dev-om]# systemctl restart tomcat
Чтобы сервис Tomcat автоматически запускался на этапе загрузки сервера:
[root@dev-om]# systemctl enable tomcat
Теперь в адресной строке web-браузера введите «http://IP-адрес_сервера:8080», на экране у вас должна появиться приветственная страница Tomcat:
=== Настройка ===
=== Настройка ===



Версия 11:30, 11 апреля 2017

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

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

ЗАПУСК TOMCAT КАТАЛОГИ И ФАЙЛЫ НАСТРОЙКА ПОРТОВ ПОДКЛЮЧЕНИЙ АВТОМАТИЧЕСКАЯ ПЕРЕЗАГРУЗКА СТРАНИЦ ВКЛЮЧЕНИЕ ЛИСТИНГА КАТАЛОГОВ ЗАПУСК ПРИЛОЖЕНИЙ МЕНЕДЖЕР 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):

  • 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 Software Foundation: http://www.apache.org/

Сайт проекта Apache Tomcat: http://tomcat.apache.org/

Установка

В этой главе описана информация о базовой установке Apache Tomcat сервер 7 при помощи менеджера пакетов yum и из файла дистрибутива (с сайта проекта) на сервер CentOS 7.

Установка Java

Apache Tomcat сервер – это серверное ПО для исполнения web-приложений, написанных на Java. Поэтому, прежде чем приступить к установке Apache Tomcat, необходимо проверить корректность установки и версию java. Возможна работа с различными версиями Java, проверено функционирование со следующими:

  • Oracle Java Standard Edition Runtime Environment (JRE) version 7 (1.7)
  • Oracle Java Standard Edition Runtime Environment (JRE) version 8 (1.8)
  • OpenJDK Runtime Environment (JRE) version 7 (1.7)

Также можно использовать Java Development Kit (JDK) вместо JRE.

Воспользуйтесь командой «java -version», чтобы определить версию Java.

Если установлена 8-ая версия Oracle Java:

[root@server]# java -version
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-ая версия Oracle Java:

[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)

Если установлена 7-ая версия OpenJDK:

[root@server]# java -version
java version "1.7.0_75"
OpenJDK Runtime Environment (rhel-2.5.4.2.el7_0-x86_64 u75-b13)
OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

В том случае, если Java не установлена, вы увидите на экране следующее сообщение:

[root@server]# java -version
bash: java: команда не найдена

Для того, чтобы установить Oracle Java, необходимо скачать соответствующий файл (для Oracle JDK: jdk-7u80-linux-x64.rpm или jre-8u65-linux-x64.rpm для 8-ой или 7-ой версии соответственно), с сайта http://www.java.com/ru/download/manual.jsp или http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Создайте каталог, в который вы хотите установить java (в нашем случае /usr/java), переместите туда скаченный файл, и установите, используя команду «rpm -ivh». Например, вам нужно установить 8-ую версию (файл jre-8u65-linux-x64.rpm):

[root@server /]# cd /usr
[root@server usr]# mkdir java
[root@server usr]# cd java/
[root@server java]# cp /home/user/jre-8u65-linux-x64.rpm   /usr/java
[root@server java]# ls
jre-8u65-linux-x64.rpm
[root@server java]# rpm -ivh jre-8u65-linux-x64.rpm
Подготовка...		            ################################# [100%]
Обновление / установка...
  1:jre1.8.0_65-1.8.0_65-fcs       ################################# [100%]
Unpacking JAR files...
       plugin.jar...
       javaws.jar...
       deploy.jar...
       rt.jar...
       jsse.jar...
       charsets.jar...
       localedata.jar...
       jfxrt.jar...
[root@server java]#

Или 7-ую (файл jdk-7u80-linux-x64.rpm):

[root@server /]# cd /usr
[root@server usr]# mkdir java
[root@server usr]# cd  java/
[root@server java]# cp /home/user/jdk-7u80-linux-i586.rpm    /usr/java
[root@server java]# ls
jdk-7u80-linux-i586.rpm
[root@server java]# mv /root/jdk-7u80-linux-x64.rpm .
[root@server java]# rpm -ivh jdk-7u80-linux-x64.rpm
Подготовка...               ################################# [100%]
Обновление / установка...
  1:jdk-2000:1.7.0_80-fcs            ################################# [100%]
Unpacking JAR files...
       rt.jar...
       jsse.jar...
       charsets.jar...
       tools.jar...
       localedata.jar...
       jfxrt.jar...
[root@server java]#

Установка Tomcat

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

Проверить, установлен ли уже 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/).

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

a. $CATALINA_HOME/bin/startup.sh или

b. $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: a. $CATALINA_HOME/bin/shutdown.sh или b. $CATALINA_HOME/bin/catalina.sh stop


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

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

[root@dev-om]# 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@dev-om]#

Для того, чтобы сменить порт 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@dev-om]# firewall-cmd --permanent --zone=public --add-port=8080/tcp

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

[root@dev-om]# firewall-cmd --reload

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

[root@dev-om]# 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@dev-om data-integration]#

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

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

[root@dev-om]# 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 выполнять автоматическую перезагрузку после изменения кода. Нужно добавить атрибут reloadable со значением "true" в элемент <Context> файла conf/context.xml. Это весьма полезно в процессе разработки и отладки сервлетов, но не рекомендуется в процессе постоянной работы web-приложения.

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

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

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