В этой статье мы расскажем о том, как создать сервер приложений Tomcat с помощью Apache .
Tomcat — это безопасный, быстрый и полнофункциональный сервер. Он способен надежно обслуживать огромный объем данных. Вот почему он вполне сопоставим по производительности с нативными веб-серверами.
Это поднимает вопрос: зачем нам нужно размещать Tomcat за сервером Apache ? Такое решение широко используется для повышения производительности сред с высокой нагрузкой. Будучи быстрым, безопасным и гибким сервером HTTP и имеющим множество модулей, Apache легко предоставляет некоторые дополнительные функции для различных целей.
Вот лишь несколько причин использовать сервер приложений Tomcat за Apache:
-
Высокая доступность благодаря балансировке нагрузки между несколькими серверами приложений Tomcat.
-
Статический контент может быть обработан и доставлен намного быстрее, используя Apache в качестве внешнего интерфейса.
-
Дополнительные проблемы безопасности могут быть легко настроены в Apache и использованы для защиты вашего приложения, расположенного на сервере Tomcat.
-
Дополнительные функции могут быть добавлены с помощью широкого спектра модулей Apache.
Существуют разные способы соединения Apache и Tomcat. Самый популярный метод — установить это соединение, используя mod_proxy или mod_rewrite, которые довольно просты в настройках. С этими базовыми конфигурациями Apache начинает передавать запросы к вашему внутреннему серверу Tomcat и после этого передает ответы обратно клиенту.
Ниже мы покажем вам три широко используемых случая использования mod_rewrite и mod_proxy для запуска сервера Tomcat за Apache в облаке Jelastic:
Переписывание ссылок
Давайте представим, что вы запускаете два или более приложений Java на отдельных серверах приложений и разных портах.
В качестве примера мы развернули простые приложения, которые показывают IP-адреса серверов, чтобы легко их дифференцировать.
Используя Apache с mod_rewrite, вы можете иметь оба ваших приложения доступными на одном порту только по разным путям. Например:
Это позволяет перезапускать, управлять и отлаживать каждое приложение отдельно. В то же время ваши конечные пользователи будут рассматривать их как одно приложение.
Давайте посмотрим, как установить это в Jelastic :
1. Вам необходимо иметь три (или более) окружения следующего типа:
- две (или более) серверные среды Tomcat с развернутыми приложениями Java
- одна интерфейсная среда Apache
2. Нажмите Config для вашего сервера приложений Apache.
3. Перейдите в папку conf и откройте файл httpd.conf .
Выполните следующие настройки в блоке <VirtualHost> и перезапустите сервер Apache:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/webroot/ROOT ServerName website.jelastic.com ServerAlias * RewriteEngine On RewriteRule ^/application1/(.*) http://env-tomcat.jelastic.com/app1/ [P] ProxyPassReverse /application1/ http://env-tomcat.jelastic.com/app1/ RewriteRule ^/application2/(.*) http://second-tomcat.jelastic.com/app2/ [P] ProxyPassReverse /application2/ http://second-tomcat.jelastic.com/app2/ RewriteLog "/var/log/httpd/rewrite.log" ErrorLog logs/dummy-host.jelastic.com-error_log CustomLog logs/dummy-host.jelastic.com-access_log common </VirtualHost>
-
RewriteEngine On включает возможность перезаписи
-
RewriteRule и ProxyPassReverse определяют условия и результат перезаписи для обоих приложений
-
Опционально добавлен RewriteLog для хранения логов перезаписи в указанном месте
4. Чтобы проверить результат, нажмите Открыть в браузере для своей среды Apache и добавьте путь, который вы указали в RewriteRule, в качестве условия, чтобы открыть правильное приложение.
В нашем случае мы добавляем:
-
/ Application1 /
- / Application2 /
Как видите, два необходимых приложения открываются под одним и тем же портом, но по другому пути.
Такой подход может также использоваться для создания чистых и более описательных ссылок, поскольку пользователи и поисковые системы предпочитают получать полезную информацию о содержимом страницы из URL.
Обслуживание статического контента
Чтобы ваше приложение работало быстрее, вы можете распределять действия между серверами Tomcat и Apache. Позвольте вашему Tomcat выполнять основные функции, обслуживая приложение, и Apache будет отвечать за доставку статического контента. В результате ваше приложение сможет обслуживать больше одновременно работающих пользователей.
Давайте посмотрим, как это можно настроить в Jelastic с помощью mod_proxy :
1. Вам необходимо иметь как минимум две среды:
-
один с сервером Tomcat для вашего приложения работает
-
один с сервером Apache для хранения статического контента
2. Нажмите Config для вашего сервера приложений Apache.
3. Загрузите ваши статические файлы в папку webroot> ROOT .
Вы можете создать отдельную папку для статического содержимого (например, статического ), как показано на рисунке ниже, и загрузить в него свои файлы.
4. Перейдите в папку conf и откройте файл httpd.conf .
Выполните следующие настройки в блоке <VirtualHost> и перезапустите сервер Apache:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/webroot/ROOT ServerName website.jelastic.com ServerAlias * ProxyPass /static ! ProxyPass / http://env-tomcat.jelastic.com/app1/ ProxyPassReverse / http://env-tomcat.jelastic.com/app1/ ErrorLog logs/dummy-host.jelastic.com-error_log CustomLog logs/dummy-host.jelastic.com-access_log common </VirtualHost>
ProxyPass / статический! заявляет, что мы не выполняем прокси-запросы, начиная с ключевого слова / static / .
Остальные запросы будут перенаправлены на наше приложение, развернутое на Tomcat (путь к приложению определяется ProxyPass и ProxyPassReverse ).
5. Чтобы проверить результат, нажмите Открыть в браузере для своей среды Apache, и вы увидите, что ваше приложение проксируется с вашего сервера Tomcat.
6. Укажите путь к статическому контенту в URL, и он также будет доступен.
В результате и приложение, расположенное на Tomcat, и статический контент, хранящийся в Apache, доступны на одном и том же порту.
Балансировки нагрузки
Чтобы справиться с дополнительной нагрузкой или просто получить какое-либо переключение при сбое, вы можете добавить больше серверов приложений Tomcat. Кроме того, сервер Apache можно использовать для распределения нагрузки между этими серверами Tomcat.
Давайте настроим Apache для балансировки нагрузки в ваших Java-приложениях Jelastic с использованием mod_rewrite :
1. Для этой конфигурации мы будем использовать три среды:
-
развернуты две серверные среды Tomcat с приложениями Java
Обратите внимание, что вам нужно использовать один и тот же контекст для развертывания обоих приложений. Еще лучше создать одну среду и затем клонировать ее, чтобы иметь идентичные копии.
-
одна интерфейсная среда Apache
2. Нажмите Config для вашего сервера Apache.
3. Перейдите в папку conf.d и создайте новый файл, например, server_list .
4. В созданный файл добавьте хосты ваших сред с развернутыми приложениями в следующем формате:
servers {env1_name}.{hoster_domain}|{env2_name}.{hoster_domain}
5. Перейдите в папку conf и выполните следующие настройки в файле httpd.conf :
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/webroot/ROOT ServerName website.jelastic.com ServerAlias * RewriteEngine On RewriteMap lb rnd:/etc/httpd/conf.d/servers.list RewriteRule ^/(.*) http://${lb:servers}/app1/$1 [P,L] RewriteLog "/var/log/httpd/rewrite.log" ErrorLog logs/dummy-host.jelastic.com-error_log CustomLog logs/dummy-host.jelastic.com-access_log common </VirtualHost>
-
RewriteEngine On включает возможность перезаписи
-
RewriteMap указывает путь к хостам, указанным в ранее созданном файле.
-
RewriteRule указывает условия балансировки нагрузки
-
Опционально добавлен RewriteLog для хранения логов перезаписи в указанном месте
6. Перезагрузите сервер Apache.
7. Чтобы увидеть результат, нажмите Открыть в браузере для вашего приложения Apache.
Вы увидите, что одно из ваших приложений развернуто на Tomcat.
Обновите страницу (один или несколько раз), и в результате распределения нагрузки откроется ваше второе приложение.
Это лишь некоторые основные случаи использования Apache в качестве внешнего интерфейса вашего сервера Tomcat. Вы можете получить еще больше преимуществ от объединения Apache с Tomcat. Мы надеемся, что эти инструкции помогут вам сделать ваше приложение еще более эффективным, гибким и стабильным. Сообщите нам о своем опыте работы с Tomcat с сервером Apache в комментариях ниже.