Для размещения приложений, в каталоге отличном от стандартного webapps, необходимо в конфигурационном файле TOMCAT_HOME/conf/server.xml определить и настроить секцию Service.
- Service - связывает описанные коннекторы с Engine;
- Connector - связан с TCP портом, для взаимодействия клиентов с Service;
- Engine - контейнер высшего уровня, содержит один и больше Host, т.е. можно настроить Tomcat для работы с несколькими именами хостов.
... <Service name="Mywebapp"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/css,text/javascript,application/x-javascript" /> <Engine name="Mywebapp" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="localhost" appBase="mywebapps" unpackWARs="true" autoDeploy="true"/> </Engine> </Service> ...Обратите внимание на атрибуты:
- name элементов Service и Engine - логическое имя, используется для логирования и при выводе сообщений об ошибках, должно быть уникально;
- port элемента Connector - порт для взаимодействия с клиентами, используйте отличный от стандартного 8080;
- appBase элемента Host - путь к папке наших приложений.
Элемент Realm определяет стандартную базу данных пользователей и паролей для аутентификации при доступе к данному Engine.
Для подключения стандартного менеджера управления приложениями создадим файл:
TOMCAT_HOME/conf/Mywebapp/localhost/manager.xml
Mywebapp соответствует значению атрибута name элемента Service рассмотренного выше.
Mywebapp соответствует значению атрибута name элемента Service рассмотренного выше.
<?xml version="1.0" encoding="ISO-8859-1"?> <Context privileged="true" antiResourceLocking="false" docBase="/opt/tomcat/webapps/manager"> </Context>
Обратите внимание: атрибут docBase должен соответствовать значению пути к стандартному менеджеру TOMCAT_HOME/webapps/manager в вашей системе.
Для выполнения менеджером скриптовых команд необходимо в TOMCAT_HOME/conf/tomcat-users.xml описать пользователя и его роли, по примеру ниже.
Для выполнения менеджером скриптовых команд необходимо в TOMCAT_HOME/conf/tomcat-users.xml описать пользователя и его роли, по примеру ниже.
<role rolename="admin-script"/> <role rolename="manager-script"/> <user username="admin" password="password" roles="manager-script,admin-script"/>
Теперь мы можем управлять своими приложениями с помощью команд, вида:
Если архив вашего приложения называется не ROOT.war, а к примеру myapp.war, соответственно оно развернулось в папку с названием myapp, то к команде необходимо добавить параметр path=/myapp/. Пример команды, управления приложением:
Пример bash-скрипта для управления контекстом приложений.
http://{host}:{port}/manager/text/{command}?{parameters}Основные команды управления приложением: start, stop, reload, deploy.
Если архив вашего приложения называется не ROOT.war, а к примеру myapp.war, соответственно оно развернулось в папку с названием myapp, то к команде необходимо добавить параметр path=/myapp/. Пример команды, управления приложением:
curl --user admin:password http://192.168.1.10:8081/manager/text/start?path=/myapp/Более подробно об использовании стандартного менеджера см.оф.документацию.
Пример bash-скрипта для управления контекстом приложений.
#! /bin/sh # Usage [app_name] [command] if [ "$#" -ne 2 ]; then echo "Arguments not found. Usage: [serviceName] [action]" exit fi SERVER_URL="http://192.168.1.10" TOMCAT_LOGIN="admin" TOMCAT_PASSWORD="password" PORT="" case "$1" in myapp) PORT="8081" ;; otherapp) PORT="8082" ;; *) echo "Invalid application name" exit ;; esac if [[ $2 =~ ^(start|stop|reload)$ ]]; then echo "Invalid action, usage {start, stop, reload}" exit fi curl --user $TOMCAT_LOGIN:$TOMCAT_PASSWORD $SERVER_URL:$PORT/manager/text/$2?path=/ exit 0
Для удобства, скрипт можно зарегистрировать в системе как сервис, тогда управлять приложением из консоли будет еще удобнее, например:
service scriptname myapp reload
Спасибо, пригодилось :)
ОтветитьУдалить