Как развернуть файл WAR в Tomcat

Как развернуть файл WAR в Tomcat

1. обзор

Apache Tomcat - один из самых популярных веб-серверов в сообществе Java. Он поставляется какservlet container, способный обслуживать веб-архивы с расширением WAR.

It provides a management dashboard, из которого вы можете развернуть новое веб-приложение или отменить развертывание существующего без перезапуска контейнера. Это особенно полезно в производственных условиях.

В этой статье мы сделаем краткий обзор Tomcat, а затем рассмотрим различные подходы к развертыванию файла WAR.

Дальнейшее чтение:

Введение в Apache Tomcat

Краткое практическое руководство по установке и настройке Apache Tomcat.

Read more

Разверните WAR-файл Spring Boot на сервере Tomcat

Узнайте, как настроить приложение Spring Boot для развертывания на сервере Tomcat.

Read more

Изменение порта Tomcat HTTP на 80

Узнайте, как настроить HTTP-сервер Apache Tomcat для работы на порте 80.

Read more

2. Структура Tomcat

Прежде чем мы начнем, мы должны ознакомиться с некоторой терминологией и переменными среды.

2.1. Переменные среды

Если вы работали с Tomcat раньше, они будут вам очень знакомы:

$CATALINA_HOME

Эта переменная указывает на каталог, где установлен наш сервер.

$CATALINA_BASE

Эта переменная указывает на каталог конкретного экземпляра Tomcat, у вас может быть установлено несколько экземпляров. Если эта переменная не задана явно, ей будет присвоено то же значение, что и$CATALINA_HOME.

Веб-приложения развертываются в каталоге$CATALINA_HOME\webapps.

2.2. терминология

Document root. Относится к каталогу верхнего уровня веб-приложения, где все ресурсы приложения расположены в виде файлов JSP, страниц HTML, классов Java и изображений.

Context path. Относится к расположению, которое относится к адресу сервера и представляет имя веб-приложения.

Например, если наше веб-приложение помещено в каталог$CATALINA_HOME\webapps\myapp, к нему будет обращаться URLhttp://localhost/myapp, а его контекстный путь будет/myapp.

WAR. Расширение файла, который упаковывает иерархию каталогов веб-приложения в формате ZIP и является сокращением от Web Archive. Веб-приложения Java обычно упаковываются как файлы WAR для развертывания. Эти файлы могут быть созданы в командной строке или с помощью IDE, например Eclipse.

После развертывания нашего файла WAR Tomcat распаковывает его и сохраняет все файлы проекта в каталогеwebapps в новом каталоге, названном в честь проекта.

3. Настройка Tomcat

Веб-сервер Tomcat Apache - это бесплатное программное обеспечение, которое может бытьdownloaded from their website. Требуется, чтобы на компьютере пользователя был доступен JDK и чтобы переменная средыJAVA_HOME была установлена ​​правильно.

3.1. Запустить Tomcat

Мы можем запустить сервер Tomcat, просто запустив сценарийstartup, расположенный в$CATALINA_HOMEin\startup. В каждой установке есть.bat и.sh.

Выберите соответствующую опцию в зависимости от того, используете ли вы операционную систему Windows или Unix.

3.2. Настроить роли

На этапе развертывания у нас будет несколько вариантов, один из которых - использовать панель управления Tomcat. Чтобы получить доступ к этой панели, у нас должен быть пользователь администратора, настроенный с соответствующими ролями.

Чтобы иметь доступ к панели управления, пользователю с правами администратора требуется рольmanager-gui. Позже нам нужно будет развернуть файл WAR с помощью Maven, для этого нам также понадобится рольmanager-script.

Сделаем эти изменения в$CATALINA_HOME\conf omcat-users:



Более подробную информацию о различных ролях Tomcat можно найти, выполнивthis official link.

3.3. Установить права доступа к каталогу

Наконец, убедитесь, что в каталоге установки Tomcat есть разрешение на чтение / запись.

3.4. Тестовая установка

Чтобы проверить правильность настройки Tomcat, запустите сценарий запуска (startup.bat /startup.sh), если на консоли не отображаются ошибки, мы можем дважды проверить, посетивhttp://localhost:8080.

Если вы видите целевую страницу Tomcat, значит, мы правильно установили сервер.

3.5. Разрешить конфликт портов

По умолчанию Tomcat настроен на прослушивание соединений на порту8080. Если есть другое приложение, которое уже связано с этим портом, консоль запуска сообщит нам.

Чтобы изменить порт, мы можем отредактировать файл конфигурации сервераserver.xml, расположенный в$CATALINA_HOME\conf\server.xml.. По умолчанию конфигурация коннектора выглядит следующим образом:

Например, если мы хотим изменить наш порт на8081, то нам нужно будет изменить атрибут порта коннектора следующим образом:

Иногда выбранный нами порт не открывается по умолчанию, в этом случае нам потребуется открыть этот порт с помощью соответствующих команд в ядре Unix или создать соответствующие правила брандмауэра в Windows, как это сделать выходит за рамки эта статья.

4. Развернуть из Maven

Если мы хотим использовать Maven для развертывания наших веб-архивов, мы должны настроить Tomcat как сервер в файлеsettings.xml Maven.

Есть два места, где можно найти файлsettings.xml:

  • Установка Maven:$\{maven.home}/conf/settings.xml

  • Установка пользователя:$\{user.home}/.m2/settings.xml

Найдя его, добавьте Tomcat следующим образом:


    TomcatServer
    admin
    password

Теперь нам нужно будет создать базовое веб-приложение от Maven для тестирования развертывания. Давайте перейдем туда, где мы хотели бы создать приложение.

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

mvn archetype:generate -DgroupId=com.example -DartifactId=tomcat-war-deployment
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Это создаст полное веб-приложение в каталогеtomcat-war-deployment, которое, если мы развернем сейчас и получим доступ через браузер, напечатаетhello world!.

Но прежде чем сделать это, нам нужно внести одно изменение, чтобы включить развертывание Maven. Так что перейдите кpom.xml и добавьте этот плагин:


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        http://localhost:8080/manager/text
        TomcatServer
        /myapp
    

Обратите внимание, что мы используем плагин Tomcat 7, потому что он работает для версий 7 и 8 без каких-либо особых изменений.

Конфигурацияurl - это URL-адрес, на который мы отправляем наше развертывание, Tomcat будет знать, что с ним делать. Элементserver - это имя экземпляра сервера, который распознает Maven. Наконец, элементpath определяетcontext path нашего развертывания.

Это означает, что в случае успешного развертывания мы получим доступ к веб-приложению, нажавhttp://localhost:8080/myapp.

Теперь мы можем запустить следующие команды из Maven.

Чтобы развернуть веб-приложение:

mvn tomcat7:deploy

Чтобы отменить это:

mvn tomcat7:undeploy

Для повторного развертывания после внесения изменений:

mvn tomcat7:redeploy

5. Развернуть с помощью плагина Cargo

Cargo - это универсальная библиотека, которая позволяет нам управлять различными типами контейнеров приложений стандартным способом.

5.1. Настройка развертывания Cargo

В этом разделе мы рассмотрим, как использовать плагин Cargo Maven для развертывания WAR в Tomcat, в этом случае мы развернем его в экземпляре версии 7.

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

mvn archetype:generate -DgroupId=com.example -DartifactId=cargo-deploy
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Это создаст полное веб-приложение Java в каталогеcargo-deploy. Если мы создадим, развернем и загрузим это приложение как есть, оно напечатаетHello World! в браузере.

В отличие от плагина Tomcat7 Maven, плагин Cargo Maven требует наличия этого файла.

Поскольку наше веб-приложение не содержит сервлетов, наш файлweb.xml будет очень простым. Итак, перейдите в папкуWEB-INF нашего недавно созданного проекта и создайте файлweb.xml со следующим содержимым:




    cargo-deploy
    
        index.jsp
    

Чтобы Maven мог распознавать команды Cargo без ввода полного имени, нам нужно добавить плагин Cargo Maven в группу плагинов в Mavensettings.xml.

Как непосредственный дочерний элемент корневого элемента<settings></settings>, добавьте это:


    org.codehaus.cargo

5.2. Локальное развертывание

В этом подразделе мы отредактируем нашpom.xml в соответствии с нашими новыми требованиями к развертыванию.

Добавьте плагин следующим образом:


    
        
            org.codehaus.cargo
            cargo-maven2-plugin
            1.5.0
            
                
                    tomcat7x
                    installed
                    Insert absolute path to tomcat 7 installation
                
                
                    existing
                    Insert absolute path to tomcat 7 installation
                
            
       
    

Последняя версия на момент написания -1.5.0. Однако последнюю версию всегда можно найтиhere.

Обратите внимание, что мы явно определяем упаковку как WAR, без этого наша сборка не будет выполнена. В разделе плагинов мы добавим плагин cargo maven2. Дополнительноwe add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.

Устанавливая тип контейнера наinstalled, мы сообщаем Maven, что у нас есть экземпляр, установленный на машине, и предоставляем абсолютный URL-адрес для этой установки.

Устанавливая тип конфигурации наexisting, мы сообщаем Tomcat, что у нас есть существующая настройка, которую мы используем, и дальнейшая настройка не требуется.

Альтернативой может быть указание Cargo загрузить и настроить версию, указанную с помощью URL. Однако наше внимание сосредоточено на развертывании WAR.

Стоит отметить, что независимо от того, используем ли мы Maven 2.x или Maven 3.x, плагин Cargo maven2 работает для обоих.

Теперь мы можем установить наше приложение, выполнив:

mvn install

и развернуть его, выполнив:

mvn cargo:deploy

Если все пойдет хорошо, мы сможем запустить наше веб-приложение, загрузивhttp://localhost:8080/cargo-deploy.

5.3. Удаленное развертывание

Чтобы выполнить удаленное развертывание, нам нужно только изменить раздел конфигурации нашегоpom.xml. Удаленное развертывание означает, что у нас нет локальной установки Tomcat, но мы имеем доступ к панели управления менеджера на удаленном сервере.

Итак, давайте изменимpom.xml так, чтобы раздел конфигурации выглядел так:


    
        tomcat8x
        remote
    
    
        runtime
        
            admin
            admin
            http://localhost:8080/manager/text
              
        
    

На этот раз мы меняем тип контейнера сinstalled наremote и тип конфигурации сexisting наruntime. Наконец, мы добавляем в конфигурацию свойства аутентификации и удаленного URL.

Убедитесь, что роли и пользователи уже присутствуют в$CATALINA_HOME/conf/tomcat-users.xml, как и раньше.

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

mvn cargo:undeploy

очистить проект:

mvn clean

установить его:

mvn install

наконец, разверните его:

mvn cargo:deploy

Это оно.

6. Развернуть из Eclipse

Eclipse позволяет нам встраивать серверы, чтобы добавить развертывание веб-проекта в обычный рабочий процесс, не отходя от IDE.

6.1. Вставить Tomcat в Eclipse

Мы можем встроить установку в eclipse, выбрав пункт менюwindow на панели задач, а затемpreferences из раскрывающегося списка.

На левой панели появившегося окна мы найдем древовидную сетку элементов предпочтений. Затем мы можем перейти кeclipse → servers или просто ввестиservers в строке поиска.

Затем мы выбираем установочный каталог, если он еще не открыт для нас, и выбираем загруженную нами версию Tomcat.

На правой стороне панели появится страница конфигурации, где мы выбираем опцию Включить, чтобы активировать эту версию сервера и перейти к папке установки.

image

Мы применяем изменения, и в следующий раз, когда мы откроем представление серверов из подменю Eclipsewindows → show view, будет присутствовать только что настроенный сервер, и мы сможем запускать, останавливать и развертывать на нем приложения.

6.2. Развертывание веб-приложения во встроенном Tomcat

Чтобы развернуть веб-приложение в Tomcat, оно должно существовать в нашей рабочей области.

Откройте представлениеservers изwindow → show view и найдите серверы. В открытом состоянии мы можем просто щелкнуть правой кнопкой мыши по настроенному нами серверу и выбратьadd deployment в появившемся контекстном меню.

 

image

В появившемся диалоговом окнеNew Deployment откройте раскрывающийся списокproject и выберите веб-проект.

Под полем со спискомProject есть разделDeploy Type, когда мы выбираемExploded Archive(development mode),our changes in the application will be synced live without having to redeploy, это лучший вариант во время разработки, поскольку он очень эффективен.

image

 

ВыборPackaged Archive(production mode) потребует от нас повторного развертывания каждый раз, когда мы вносим изменения и видим их в браузере. Это лучше всего для производства, но, тем не менее, Eclipse делает это одинаково легко.

6.3. Развертывание веб-приложения во внешнем расположении

Обычно мы выбираем развертывание WAR через Eclipse, чтобы облегчить отладку. Может наступить время, когда мы захотим развернуть его не в том месте, которое используется встроенными серверами Eclipse. Наиболее распространенный случай, когда наш производственный сервер подключен к сети, и мы хотим обновить веб-приложение.

Мы можем обойти эту процедуру, развернув в производственном режиме, отметивDeploy Location в диалоговом окнеNew Deployment и выбрав оттуда WAR.

Во время развертывания вместо выбора встроенного сервера мы можем выбрать параметр<Externally Launched> в представленииservers рядом со списком встроенных серверов. Мы переходим в каталогwebapps внешней установки Tomcat.

7. Развернуть из IntelliJ IDEA

Чтобы развернуть веб-приложение в Tomcat, оно должно существовать и уже было загружено и установлено.

7.1. Локальная конфигурация

Откройте менюRun и щелкните параметрыEdit Configurations.

 

image

На панели слева найдитеTomcat Server, если его там нет, щелкните значок + в меню, найдитеTomcat и выберитеLocal. В поле имени введитеTomcat 7/8 (в зависимости от вашей версии).

image

 

Нажмите кнопкуConfigure… и в полеTomcat Home перейдите к домашнему местоположению вашей установки и выберите его.

 

image

При желании установите для страницыStartup значениеhttp://localhost:8080/ иHTTP port: 8080, измените порт соответствующим образом.

Перейдите на вкладкуDeployment и нажмите на символ +, выберите артефакт, который вы хотите добавить на сервер, и нажмите OK.

 

image

 

7.2. Удаленная настройка

Следуйте тем же инструкциям, что и для локальных конфигураций Tomcat, но на вкладке сервера необходимо указать удаленное местоположение установки.

8. Развернуть путем копирования архива

Мы видели, как экспортировать WAR из Eclipse. Одна из вещей, которую мы можем сделать, - это развернуть его, просто поместив его в каталог$CATALINA_HOME\webapps любого экземпляра Tomcat. Если экземпляр запущен, развертывание начнется немедленно, когда Tomcat распакует архив и настроит его контекстный путь.

Если экземпляр не запущен, сервер развернет проект при следующем запуске.

9. Развернуть из Tomcat Manager

Предполагая, что у нас уже есть файл WAR, и мы хотели бы развернуть его с помощью панели управления. Вы можете получить доступ к панели управления менеджером, посетив:http://localhost:8080/manager.

На панели управления есть пять различных разделов:Manager,Applications,Deploy,Diagnostics иServer Information.. Если вы перейдете в разделDeploy, вы найдет два подраздела.

9.1. Развернуть каталог или файл WAR, расположенный на сервере

Если файл WAR находится на сервере, на котором запущен экземпляр Tomcat, то мы можем заполнить обязательное полеContext Path, которому предшествует косая черта «/».

Допустим, мы хотим, чтобы к нашему веб-приложению можно было обращаться из браузера с URL-адресомhttp://localhost:8080/myapp, тогда в нашем поле пути контекста будет/myapp.

Мы пропускаем полеXML Configuration file URL и переходим к полюWAR or Directory URL. Здесь мы вводим абсолютный URL к файлу Web ARchive, как он появляется на нашем сервере. Допустим, наш файл находится вC:/apps/myapp.war, затем мы вводим это местоположение. Не забывайте расширение WAR.

После этого мы можем нажать кнопкуdeploy. Страница перезагрузится, и мы должны увидеть сообщение:

OK - Deployed application at context path /myapp

в верхней части страницы.

Кроме того, наше приложение также должно появиться в разделеApplications страницы.

9.2. Файл WAR для развертывания

Просто нажмите кнопкуchoose file, перейдите к месту расположения файла WAR и выберите его, затем нажмите кнопкуdeploy.

В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно, с сообщением, подобным следующему:

INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

10. Заключение

В этой статье мы сосредоточились на развертывании WAR на сервере Tomcat.