Недавно столкнулся со следующей задачей: на одном веб-сервере под управлением Windows Server 2003 необходимо было установить несколько экземпляров Apache Tomcat 6 для того, чтобы в каждом из них «крутилось» свое собственное приложение. Установить нужно было таким образом, чтобы каждый из этих сервлет-контейнеров являлся в системе обособленным сервисом со своей конфигурацией, параметрами автозапуска, отдельным пунктом в списке установленных программ системы, ну и, в качестве бонуса, собственной иконкой в трее.
Посмотрев решения подобной задачи в интернете, обнаружил, что, пожалуй, единственным способом ее решения будет самостоятельная правка реестра системы. Это связано с тем, что стандартный инсталлятор Apache Tomcat 6 не поддерживает возможности его установки в виде нескольких сервисов и не позволяет разнести настройки каждого из экземпляров по отдельным веткам реестра.
Здесь я хочу сделать важное предупреждение. Описываемая в статье техника является работоспособной и проверенной мной на собственном опыте и на реальном рабочем сервере. Она даже не является хаком, поскольку, будь инсталлятор немного более грамотным, он бы выполнял ее автоматически. Я не проверял, но скорее всего эта техника будет работать и на Windows Server 2008. Выполняемые процедуры не затрагивают никаких других настроек и веток реестра, кроме тех, которые непосредственно относятся к каждому отдельному сервису Apache Tomcat. Однако я не несу никакой ответственности за возможный ущерб, связанный с непосредственным, а так же с неосторожным или неправильным применением этой техники. Используйте ее на свой страх и риск. И не забудьте сделать резервную копию важных данных перед началом процедуры.
Итак, поехали.
- Установите первый экземпляр Apache Tomcat в отдельную директорию, например, в
C:\Tomcat6_1. На последнем шаге мастера установки нужно убрать галочку Run Tomcat. - Откройте редактор реестра regedit: Start → Run… →
regedit→ нажмите Enter. - Переместитесь к ветке реестра
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tomcat6и переименуйте ее изTomcat6вTomcat6_1. - Здесь же измените значение свойства
DisplayNameсApache TomcatнаApache Tomcat 6 (1). Именно под этим именем теперь будет отображаться сервис в списке локальных служб системы. Чтобы посмотреть список служб вашей системы выполните следующую последовательность действий: кнопка Start → Run… →services.msc→ клавиша Enter. - Теперь измените часть значения свойства
ImagePathс…//RS//Tomcat6на…//RS//Tomcat6_1. Именно с этим именем будет запускаться экземпляр службы. Это значение понадобится нам в шаге 9. - Далее переходим к ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6и переименовываем ее вTomcat6_1. В дальнейшем это позволит нам установить новый экземпляр Apache Tomcat без перезаписи настроек устанавливаемого в настоящий момент экземпляра. - По тем же самым причинам меняем название ветки
HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat\6.0на6.0_1. - Теперь переходим к ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runи меняем имя ключа сApacheTomcatMonitorнаApacheTomcatMonitor_1. Это имя приложения по управлению службой. Его изменение позволяет нам избежать перезаписи этого ключа при установке следующих экземпляров Tomcat и управлять каждым из сервисов при помощи отдельного окна приложения. - Теперь изменим завершающую часть значения этого ключа с
…Tomcat6на…Tomcat6_1. Внимание: это значение должно совпадать с тем, которое мы присвоили ключуImagePathв шаге 5. - Для того, чтобы иметь возможность потом деинсталлировать по отдельности каждый из установленных экземпляров Tomcat, мы должны перейти в ветку реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Apache Tomcat 6.0и изменить ее название наApache Tomcat 6.0_1. Это позволит нам избежать перезаписи данных, необходимых для деинсталляции приложения, во время установки последующих экземпляров Apache Tomcat. Здесь же можно изменить значение ключаDisplayNameнаApache Tomcat 6.0 (1). - Перезагрузите систему, чтобы изменения вступили в силу.
- Для того чтобы распределить установленные экземпляры Tomcat по разным локальным портам, мы должны правильно сконфигурировать каждый из них. Открываем файл C:\Tomcat6_1\conf\server.xml и меняем значения следующих узлов:
<Server port="8005" shutdown="SHUTDOWN">на8001(для каждого из последующих сервлет-контейнеров мы будем использовать порты8002,8003и т.д.).<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" />на8081(далее будем использовать8082,8083и т.д.).
- Выполните инструкции с 1 по 12 для каждого из последующих экземпляров Apache Tomcat, используя для разделения каждого из них увеличенное значение индекса. Допустим, второй экземпляр должен быть установлен в папку
C:\Tomcat6_2, ветка реестра из шага 3 должна быть переименована вTomcat_2, а ключDisplayNameв шаге 4 изменен наApache Tomcat (2)и т.п. - Перезагрузите систему, чтобы удостовериться в том, что разные экземпляры Tomcat нормально запускаются во время старта Windows.
На этом все на сегодня. Буду надеяться, что заметка окажется вам полезной. Удачного вам дня!













