Как запустить несколько веб-приложений на одном сервере Apache Tomcat
Apache Tomcat – это веб-контейнер с открытым исходным кодом, который позволяет развертывать Java-сервлеты, JSP и веб-сокеты для запуска. веб-сервер на базе Java кода. Его также можно идентифицировать как кросс-платформенный контейнер сервлетов или веб-контейнер.
Проще говоря, Tomcat очень популярен среди многих заинтересованных сторон из-за множества преимуществ перед другими веб-контейнерами на рынке. Вы можете создать веб-архивы из своего проекта Java и просто развернуть его в контейнере Tomcat для размещения веб-сервера HTTP, написанного на Java. Промышленные предприятия предпочитают Apache Tomcat другим контейнерам из-за следующих преимуществ.
- Легкий вес.
- Широко используемый.
- Гораздо быстрее, чем другие контейнеры.
- Легко настроить.
- Очень гибкий.
Обычно Apache Tomcat представляет собой удобный для пользователя продукт, который дает инженерам возможность развертывать свои артефакты WAR (Веб-архивы) с минимальными изменениями конфигурации.
Этот пост предназначен для аудитории, которая уже использует Tomcat и знает, как запустить и использовать движок Apache Tomcat.
В apache tomcat WAR следует помещать в каталог webapps
, в котором контейнер развертывает их по умолчанию. Проще говоря, каталог webapps действует как основной контейнер Java-кода, который Tomcat может развернуть в качестве веб-сервера.
В сценарии, когда нам нужно разместить более одного веб-сервера из одного контейнера Tomcat, вы можете использовать этот пост в качестве руководства для этого. В этой статье я собираюсь показать вам, как развернуть несколько веб-приложений или два веб-сервера в одном Tomcat.
Предварительные требования: на сервере должна быть установлена Java. Предпочтительно 1.7.x или выше. В этом уроке у меня установлена Java 1.7, поскольку я использую tomcat версии 8.0.37.
Вы можете установить Java с помощью менеджера пакетов, например yum или apt, как показано:
yum install java [On CentOS based Systems]
apt-get install default-jre [On Debian based Systems]
Шаг 1. Установите сервер Apache Tomcat
1. Сначала создайте отдельного пользователя tomcat
, используя учетную запись root.
useradd tomcat
passwd tomcat
Теперь войдите в систему как пользователь tomcat и загрузите последний пакет apache tomcat с официального сайта здесь: https://tomcat.apache.org/ или, альтернативно, вы можете использовать следующую команду wget для загрузки непосредственно в терминале. .
В данном случае я загружаю Apache Tomcat, 8.5.5, одну из последних стабильных версий, выпущенных на данный момент.
wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz
2. После загрузки файла распакуйте его содержимое с помощью команды tar и просмотрите структуру каталогов, как показано:
tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat 4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat 4096 Sep 1 01:23 conf
drwxr-x---. 2 tomcat tomcat 4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep 1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat 4096 Sep 1 01:21 logs
-rw-r-----. 1 tomcat tomcat 1723 Sep 1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat 7063 Sep 1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep 1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat 4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat 4096 Sep 1 01:22 webapps
drwxr-x---. 2 tomcat tomcat 4096 Sep 1 01:21 work
Шаг 2. Настройка сервера Apache Tomcat
3. Изменение конфигурации, которое мы ищем, находится в каталоге conf и используется для размещения всех файлов конфигурации, которые помогают запустить Tomcat.
Содержимое каталога conf выглядит следующим образом.
cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat 12502 Sep 1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat 7203 Sep 1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat 1338 Sep 1 01:23 context.xml
-rw-------. 1 tomcat tomcat 1149 Sep 1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat 2358 Sep 1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat 3622 Sep 1 01:23 logging.properties
-rw-------. 1 tomcat tomcat 7283 Sep 1 01:23 server.xml
-rw-------. 1 tomcat tomcat 2164 Sep 1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat 2633 Sep 1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep 1 01:23 web.xml
4. В данном случае для меня важен файл server.xml
. Поэтому я не буду подробно объяснять другие файлы и каталоги.
server.xml — это файл конфигурации, который сообщает tomcat, какой порт запускать, содержимое какого каталога развертывать, а также многие другие основные и базовые конфигурации.
После открытия файла это выглядит примерно так, как показано ниже.
vim server.xml
Шаг 3. Развертывание веб-приложений в Apache Tomcat
5. Теперь мы развернем новое веб-приложение в Apache Tomcat. Сначала найдите место, где закрыт тег службы , и вставьте строки ниже после первого закрытия. Метка.
<Service name="webapps2">
<Connector port="7070" maxHttpHeaderSize="7192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="7443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Connector port="7072"
enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />
<Engine name="webapps2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
Как видите, я изменил порт соединителя на 7070 во вновь вставленной записи, поскольку tomcat по умолчанию начинается с порта 8080. После полной настройки под портами 8080 и 7070 будут работать два веб-сервера.
6. После сохранения изменений, внесенных в server.xml
, создайте каталог в Apache с именем webapps2
в главном файле Apache.
cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2
Если вы обратите внимание на новую запись server.xml
, которую я предоставил, вы увидите, что имя службы, база приложения и механизм называются webapps2. Именно поэтому я создал каталог с именем webapps2. Вы можете создать его по своему усмотрению, но обязательно вносите изменения в запись по мере необходимости.
7. Чтобы убедиться, что второй веб-сервер запущен и работает, я скопировал содержимое каталога webapps в каталог webapps2.
cp -r webapps/* webapps2/
8. Теперь самое интересное. Мы собираемся запустить сервер и посмотреть, работает ли он. Перейдите в каталог bin
и выполните скрипт startup.sh
. Вы можете просмотреть журналы в файле catalina.out
, который находится в каталоге журналов.
cd bin/
./startup.sh
Using CATALINA_BASE: /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME: /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME: /usr
Using CLASSPATH: /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.
9. Если вы обратитесь к журналам, вы сможете увидеть, что и webapps
, и webapps2
развернуты и приложение запускается без каких-либо проблем. .
cd logs/
tail -25f catalina.out
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...
10. В этом сценарии IP-адрес используемого мной сервера — 172.16.1.39, и вы можете видеть, что я могу запустить два веб-сервера в одном контейнере Tomcat.
http://172.16.1.39:8080 [1st Web App]
http://172.16.1.39:7070 [2nd Web App]
Надеюсь, вы найдете эту статью полезной и приятной. Оставайтесь на связи с TecMint и обращайтесь ко мне по любым вопросам, касающимся этой статьи.