
Для размещения приложений, в каталоге отличном от стандартного 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
Спасибо, пригодилось :)
ОтветитьУдалить