Установка и настройка Apache Tomcat. Установка Apache Tomcat в ОС Windows

Молодые программисты часто задают вопрос: а зачем нужны зачастую довольно тяжелые и дорогие промышленные сервера приложений (такие как JBoss AS , Oracle WebLogic , IBM WebSphere AS ), если у нас есть замечательный легковесный фреймворк Spring и контейнер сервлетов Apache TomCat . Попробуем на него ответить. Сразу замечу, речь сейчас не идет об архитектуре приложения! Не важно, используете вы EJB или нет. Предположим, у вас приложение на Spring Framework и стоит вопрос, на чем его запускать. Итак, какие дополнительные сервисы предлагает нам сервер приложений.

  • Пулы соединений с БД . Да, у TomCat тоже есть пул соединений, но каковы его возможности? Может ли он периодически тестировать доступность СУБД и обновлять соединения в случае восстановления после сбоев? Умеет ли он делать замену прав доступа? Грубо говоря, подключаемся к БД под пользователем в зависимости от того, кто аутентифицировался в нашем приложении, если часть логики вынесена на уровень СУБД, то это бывает полезно. Может ли пул соединений Tomcat балансировать нагрузку между несколькими базами данных (например, в случае Oracle RAC ), а так же определять, что вот эти узлы RAC умерли и теперь к ним не нужно пытаться подключаться, а затем понять, что они снова доступны и теперь их тоже можно использовать? В конце концов, может ли ваш пул соединений защитить от некорректного кода в приложении, которое по недосмотру не возвращает соединения, просто отбирая его после какого-то таймаута?
  • JMS . Если вы хотите использовать очереди в вашем приложении, развернутом на TomCat , то придется отдельно еще поднимать сервера очередей сообщений. В случае сервера приложений, очереди как правило доступны их коробки. Вместе с очередями доступны так же следующие вещи: кластеризация - вы можете строить распределенные очереди, расположенные сразу на нескольких серверах, что существенно увеличивает масштабируемость и доступность вашего приложения, миграция - в случае падения одного из серверов, его очереди автоматически перемещаются на другой, сохраняя необработанные сообщения. В некоторых серверах приложений поддерживается Unit-of-Order - гарантированный порядок обработки сообщений, удовлетворяющих некоторым критериям, очень часто при интеграции бывает полезен.
  • JTA . Те самые распределенные транзакции. Кто-то их понимает и использует, кто-то считает слишком тяжелыми. Как правило это так, они слишком тяжелые, но если вам нужно обеспечить согласованность данных в СУБД, разнесенных по разным углам нашей необъятной, или в СУБД и очереди, то без таких транзакций будет трудно. Суть распределенных транзакций в том, что мы не коммитим ни в одну из БД, пока не убедимся, что все БД, участвующие в транзакции, смогут принять наши данные. Тем самым мы избегаем проблемы “с одного счета в одном банке деньги списали, а на другой - в другом банке - не зачислили - сработало ограничение целостности”.
  • Безопасность . Современные сервера приложений предоставляют множество различных провайдеров безопасности. Доступны различные провайдеры аутентификации, вы можете хранить ваших пользователей во множестве мест: во встроенном LDAP -сервере, в базе данных, во внешнем LDAP -сервере, в различных Internet-directory - специализированных приложениях для управления правами доступа. Возможны следующие сценарии: на работу наняли человека, добавили его в , там запустился процесс раздачи прав, который выдал человеку права на все ресурсы вашего предприятия и теперь каждый сервер приложений в вашей компании (а их может быть очень много) видит эти права, так как подключен к этой Internet-directory/Access-manager . Доступно разделение пользовательской сессии между приложениями: мы аутентифицировались в одном приложении - нам уже не нужно аутентифицироваться в другом. Так же доступна реализация Single-Sign-On : вы делаете один из серверов базой для хранения пользователей, все другие сервера при аутентификации пользователя обращаются к этой базе. Реализуется SSO посредством Security Assertion Markup Language (SAML) 1/2 или посредством Simple and Protected Negotiate (SPNEGO) и Kerberos для Windows -клиентов. Возможна авторизация посредством протокола eXtensible Access Control Markup Language (XACML) , позволяющего описывать довольно сложные политики (например, приложение доступно пользователю только в рабочее время). Опять же все данные возможности работают в кластерном окружении. Впрочем, стоит отметить, что с помощью Spring Security и Apache Shiro можно реализовать большинство из них, но вам придется “тянуть” эти реализации за каждой вашей программой, в то время как в сервере приложений они доступны из коробки.
  • Масштабируемость и высокая доступность . Да, для TomCat мы можем настроить кластеризацию, но она будет довольно примитивной. Мы не сможем сделать передачу пользовательской сессии из одного центра обработки данных (ЦоД) в другой через Интернет, мы не сможем эффективно настроить репликацию сессий на большом кластере, состоящем из 40-50 экземпляров сервера приложений. В случае сбоев, мы не сможем обеспечить миграцию экземпляров сервера на другую машину и т.д. Так же в TomCat нет механизмов автоматического мониторинга и реакции на ошибки: мы не можем автоматически перезапустить экземпляр сервера, если на нем зависло 10 потоков, мы не можем автоматически отправить письмо администратору при переполнении пула соединений и т.д.
  • Управляемость . В случае большого кластера TomCat у нас нет единого центра управления, т.н. AdminServer и аналога NodeManager’ а. Мы не сможем одновременно запустить на старт 50 экземпляров сервера. Мы не можем посмотреть состояние экземпляров, посмотреть сколько у нас обработчиков на той или иной очереди, на том или ином сервере, сколько создано соединений с той или иной БД, какие из них можно убить, какие в данный момент выполняются транзакции, какие ресурсы в них задействованы и т.д. Конечно, можно все сделать “за три минуты на скриптах, ну как в Линуксе принято”, но результат будет плачевный.
  • Скриптовый язык . Кстати о скриптах, большинство промышленных серверов приложений содержат утилиты для выполнения скриптов как правило на языке Python , Пользоваться данными утилитами одно удовольствие. Администратор может описать в виде скрипта все шаги для подготовке к развертыванию сколь угодно большого приложения, таким образом запуск в продуктив или обновление займет сравнительно немного времени. С помощью таких скриптов можно создавать источники данных (представьте себе сервисную шину, подключенную к 120 экземплярам БД), JMS -очереди, менеджеры потоков, создавать новые экземпляры серверов и добавлять их в кластер, выполнять остановку и запуск серверов, их миграцию.
  • Административный канал и развертывание в промышленном режиме . Некоторые сервера приложений позволяют включить так называемый административный канал - отдельный порт, защищенный SSL , запросы по которому имеют приоритет. Таким образом, даже если ваш сервер завис, вы сможете на него зайти и посмотреть, какие транзакции выполняются и какие потоки висят. Но у данного канала есть и другое применение. При обновлении приложения вам не нужно выключать старую версию! Вы можете добавить на сервер новую версию приложения в административном режиме - пользователи продолжают работать со старой, а по административному каналу доступна новая, соответственно мы можем выполнить последнее тестирование перед запуском, проверить все ли у нас правильно развернулось. Затем мы окончательно публикуем приложение, при этом пользователи, уже имеющие сессию, продолжают работать со старой версией, чтобы не потерять данные. Новые пользователи аутентифицируются на новой версии. Тем самым мы обновляем приложение без его простоя, что очень важно для критических систем.

Как мы видим, сервисов, предоставляемых промышленными серверами приложений, довольно много. Возникает вполне закономерный вопрос, а почему сервлет-контейнер TomCat такой популярный? Здесь есть несколько соображений:

  • В первую очередь, цена. За все хорошее нужно платить, за отличное платить еще больше, особенно, если мы хотим доступ к технической поддержке и патчам. К примеру, сервер приложений Oracle WebLogic в базовой комплектации стоит $10 000/processor (под processor здесь понимается одно ядро, умноженное на т.н. core factor ). Не каждый заказчик может себе позволить такое решение.
  • Не всем приложениям нужны вышеперечисленные сервисы, а иногда разработчики не умеют ими пользоваться. Например, если у нас простая учетная система, работающая с одной БД, то нам не нужны распределенные транзакции. С другой стороны, масштабирование. Приложение может следовать всем Java EE спецификациям, но при этом не быть масштабируемым. Простой пример: приложение читает из БД измененные записи (которые пишутся с помощью триггеров в отдельную табличку) и передает их в другую БД. При этом авторы как-то забыли про блокировки. Если мы запустим данную программу на кластере, то у нас каждая запись будет обрабатываться N -раз, по числу экземпляров TomCat в кластере. Такая масштабируемость нам не нужна. Аналогичные соображения можно привести и для других сервисов.
  • Простота и легкость освоения. Вообще администратор сервера приложений это отдельная профессия, такая же как и администратор баз данных. Это не просто линукс-админ. Посмотрим еще раз на список сервисов и задумаемся как долго нужно изучать возможности выбранного сервера приложений по их реализации и настройке. Курсы по администрированию IBM WebSphere или Oracle WebLogic могут стоить десятки тысяч рублей.
  • Сварим кашу из топора сами. Бывают ситуации, когда это необходимо. Не всегда есть смысл ждать патча, исправляющего какие-то критические для нашего приложения ошибки. Гораздо быстрее просто подменить версию библиотеки. Правда зачастую это можно сделать и на сервере приложений, добавив библиотеку к нашему приложению и настроив загрузчик классов. Причем современные сервера содержат в себе утилиты для поиска ошибок в иерархии загрузчиков.

Отдельно отметим причины популярности Spring Framework как на TomCat’ е, так и на промышленных серверах приложений и немного их прокомментируем:

  • Исторические причины. Почему Spring Framework , а не EJB ? Ну потому что я в 88-м году программировал на С++ , фигня этот ваш С++ . Да, действительно EJB 1.1 и EJB 2.x были очень тяжелы для освоения и для использования, но времена меняются. Опять же, начиная с Java EE 6 , появился легковесный IoC -контейнер - CDI . Зачем тянуть в свое приложение сотни мегабайт библиотек, которые будут существенно замедлять процесс развертывания, если можно использовать готовые и довольно качественные реализации, предоставленные производителем сервера приложений? На самом деле иногда есть зачем.
  • Баланс между завязкой на конкретном производителе и переносимостью. Да, EJB это часть спецификации Java EE , причем наиболее сложная, сложнее только J2CA и по хорошему приложения, написанные для одного сервера, должны работать на другом. На практике это не всегда так. Зачастую для эффективного использования всех возможностей сервера приложений приходится в коде вызывать его API , а это уже делает приложение непереносимым. Правда, справедливости ради, с каждой новой версией Java EE таких завязок становится все меньше. С другой стороны, даже без явных завязок на API части стандарта могут быть реализованы разными серверами по своему, например, один сервер будет закрывать EntityManagerFactory при остановке приложения, другой - нет. Реализации иерархии загрузчиков классов так же могут отличаться.
  • При этом, явная завязка на Spring Framework тоже имеет свои минусы. Это такая же завязка на производителе, как и решение использовать только WebLogic . Но если с WebLogic хоть и со скрипом мы сможем уйти, то со Spring Framework скорее всего нет. Что будет, если завтра ведущие разработчики решат оставить свое детище и все дружно перейти в Oracle ? Впрочем, думаю, что вероятность такого сценария не высока.
  • Отдельно стоит отметить поддержку Spring Framework со стороны разработчиков серверов приложений. Например, в Oracle WebLogic можно включить отдельную страницу в консоли администрирования для каждого построенного на данном фреймворке приложения. На странице будет отображено дерево бинов и показаны их свойства. Так же доступны бины самого сервера и упрощена разработка MBean ’ов. Помимо этого, Spring Framework прозрачно интегрируется в кластерное окружение, а Spring Security может использовать подсистему безопасности сервера приложений.

В заключение хочется отметить, что выбор платформы для приложения это довольно нетривиальная инженерная задача, в которой должна учитываться масса факторов. Это и соотношение стоимости разработки к стоимости поддержки (при этом нужно учитывать, что разработка может идти год, а использоваться ПО может десяток лет), стоимость самих серверов приложений, ваши отношения с вендором, т.к. несмотря на высокую номинальную стоимость зачастую предоставляются скидки под 80%. Учитывайте вашу и вашей команды квалификацию в конце концов. Ну и не нужно быть ретроградом, если вы в 2001-м писали на EJB и с тех пор смотреть на них не можете, то это еще не повод отказываться от этой замечательной технологии и реализующих ее серверов приложений, но даже если вы гуру Spring Framework , подумайте, может быть для него на промышленном сервере тоже найдется место?

Замысел написать эту статью про установку и настройку, наверное, одного и самых популярных веб-серверов на Java возник уже давно. Одной из причин было желание сделать небольшую заметку "для себя" с подробной инструкцией. Возможно эта статья также пригодится другим java программистам. Пользы для кого-нибудь ещё, например для системных администраторов в ней будет не так много. Скорее всего они просто сделают так: apt-get install tomcat8 и затем потребуют у программиста war-ик для развертывания. Программист же часто хочет чуть большего — например, возможности работать с различными версиями серверов (которых может даже ещё нет в официальном репозитории) или наоборот откатиться к какой-то специфичной версии. Системному администратору такие исследования, как правило, не нужны. По-хорошему, у него должна стоять просто стабильная работающая версия, на которую периодически он будет накатывать обновления и лишний раз на неё не дышать.

В общем, это статья про то, как программисту установить Apache Tomcat под Linux чтобы "поиграться" с ним, но при этом ничего сильно не сломать.
Также эта статья может быть полезна в тех случаях, когда начинающий java программист отладив свое веб-приложение Tomcat запущенным на Windows, сталкивается со жгучим желанием развернуть свой сайт на какой-нибудь недорогой VPS-ке с Ubunt-ой.

Статья может показаться излишне многословной, но мне хотелось рассказать про основные "грабли" и способы их обхода. Могу предположить, что системные администраторы могут быть недовольны тем, что это решение недостаточно системные. Поэтому тем, кто хочет подробно изучить данный вопрос или посвятить свою жизнь профессиональной (т.е. получать за это деньги) настройки линуксовых серверов, тому лучше следует обратиться к соответствующей литературе, обучится этому ремеслу у профессионала и черпать знания у сисадминского сообщества. Здесь же у меня просто блог для java программистов.

Итак, поехали!

Подготовка

Исходные данные.
Linux. Debian 9. 64bit.

1. Устанавливаем JDK.
Почему JDK, а не JRE? По-факту достаточно JRE, но лично мне приятно иметь возможность в случае необходимости по-быстрому скомпилировать программку на java прямо на сервере.
Вы не поверите, но жизнь такая интересная штука, никогда не угадаешь когда тебе может понадобится скомпилировать и запустить что-то на Java. Лично мне запуск javac из консоли на сервере помогал несколько раз.

Далее, я предпочитаю ставить Oracle JDK. Собственно OpenJDK тоже неплох и устанавливается гораздо проще (sudo apt-get install default-jdk). Просто я отдаю предпочтение оригинальной Sun/Oracle. Тем не менее, ставить Oracle JDK, OpenJDK или какую-либо другую версию - личное дело каждого. Лично я отношусь к пользователям Open JDK без предубеждения. Более того, сам часто использую версии Open JDK (например Java 9) для того, чтобы ознакомиться с их новыми возможностями.

Установка Oracle JDK под Windows и Linux сильно отличаются. Под Windows проще установить Oracle JDK проще простого (скачать и запустить), а сборку Open JDK под Windows нужно ещё поискать.
С Linux-ом всё наоборот. Open JDK как я писал ставится очень просто через apt, с Oracle JDK чуть сложнее.

В интернете существует совет, что для установки нужно добавить ещё один apt-репозиторий. Я так не делаю. Возможно это лично моя паранойя, но я стараюсь так не делать и делаю установку руками. Особенно если учесть, что установка заключается в том, чтобы скачать и распаковать архив .

Выбираем jdk-XYZ-linux-x64.tar.gz файл. Правой кнопкой - сохранить ссылку.

$wget --header "Cookie: oraclelicense=accept-securebackup-cookie" [ссылка]

Например так:

$sha256sum jdk-8u73-linux-x64.tar.gz

Смотрим что показалось на экране и сверяем значение, с тем что опубликовано на официальном сайте.
Для этого заходим на сайт на сайт загрузки и ищем строчку Checksum .

Например для jdk-8u73-linux-x64.tar.gz

$tar -xzf jdk-8u73-linux-x64.tar.gz -C /opt

По старой привычке я складываю всё в "/opt". После этого делаю симлинк.

$wget http://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz

Проверяем хэши.

$wget https://www.apache.org/dist/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz.sha1 $sha1sum -c apache-tomcat-8.0.33.tar.gz.sha1

Тоже самое в картинках:

2. Сервер можно распаковать туда же в /opt.

JAVA_HOME=/opt/jdk

Про этот файл можно почитать в документации: RUNNING.txt .
На самом деле, часто некоторые разработчики просто тупо вбивают "JAVA_HOME=...." прямо в catalana.sh.
Дело в том, что проще открыть nano catalana.sh и поправить его, чем создавать setenv.sh (а точнее как-то узнать про его существование), хотя изначально этот файл специально был сделан для того, чтобы менять ключи JVM и различные переменные окружения, и при этом не портить основной запускаемый файл.

Вот выдержка из документации:

Using the "setenv" script (optional, recommended)

Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
be specified in the "setenv" script. The script is placed either into
CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
readable.

By default the setenv script file is absent. ...

Строго говоря, часто переменная окружения JAVA_HOME часто указывает туда, где установлена системная JVM. По-большому счету это правило работает, но часто в работе/отладке приходится запускать какую-то конкретную версию Tomcat-а под какой-то специальной версией JVM. Поэтому удобно иметь возможность гибко менять настройки через setenv.sh.

После того как все пути настроены, запускаем и проверяем, что все хорошо работает.

Кстати заметил интересный момент. При запуске на виртуальном хостинге может быть довольно ощутимая задержка в старте (около минуты).
Не хочется углубляться в детали, но мне помогла установка haveged.

$groupadd tomcat $useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat $chown -R tomcat:tomcat /opt/tomcat

После этого проверяем, что всё запускается. Например так:

$iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

Естественно нужно убедиться, что у вас не установлен уже какой-нить веб-сервер (например apache или nginx), который работает на 80-ом порту.

Проверяем, что все нормально и если всё хорошо - сохраняем правило переброса портов.

$apt-get install iptables-persistent

Собственно говоря всё.

Теперь о том, на что скорее всего обратят внимание профессиональные системные администраторы.

1. Tomcat заводят через mod_jk за Apache HTTPD или за Nginx (через reverse proxy).
Это дает возможность разделить статику, балансировать нагрузку и делать многие другие полезные штуки. Это круто в продакшене, но в девелоперской конфигурации это ещё один слой который не всегда упрощает отладку и разработку.
В принципе в настройке ничего сложного нет, но всё равно нужно будет покурить документацию. Раньше я предпочитал связку через mod_jk, теперь чаще сталкиваюсь с Nginx.

2. Нужно сделать запуск Tomcat-а как службу. Это не паранойя, а здравый смысл. По-крайней мере если не дай Бог сервер перезапустится, не нужно будет в ручную его запускать.

3. Правильные сисадмины разводят файлы томката по правильным папкам (/etc, /var/log и т.д.) и более деликатно относятся к правам доступа к конфигурационным файлам (и не только).
Можно посмотреть, как это делается через apt-get install tomcat8.

4. Не буду отрицать, что у многих /opt - помойка в которой лежит всякое барахло.
Тем не менее, если это мой персональный сервер, то это не помойка, а мой личный склад программ.

5. Хорошие сисадмины настраивают iptables и прикрывают 8080 порт извне. Точнее они прикрывают все порты, к которым не нужен доступ из вне.

Если уж говорить на чистоту, то лично я не люблю заниматься администрированием и настройкой серверов. Каждый должен заниматься своим делом, пусть это делает линуксоид со стажем. Ещё раз повторюсь, здесь речь идет скорее о некой девелоперской конфигурации, т.к. сисадмин делает установку нормальной стабильной версии "на века", настраивает её и потом периодически накатывает обновления. Программисту же, в силу своей профессиональной деятельности, приходится периодически меняет настройки, тестировать, менять версии библиотек, конфиги, что-то накатывать/откатывать и делать другие непотребства с сервером, пока не добьется от сервера нужной работы.

С другой стороны, всегда нужно соблюдать технику безопасности.

Не запускать от рута (даже если нужен 80-ый порт).
- Закрывать доступ к служебным портам.
- Не оставлять дефолтных паролей.
- Не запускать непонятных и непроверенных программ.

В идеале этим нужно заниматься у себя в песочнице, но часто такие вещи нужно уметь делать и в реальном мире.
Да и вот мой реферал на DigitalOcean , для всяких пробных веб-проектов на Java я пользуюсь их хостингом. Раньше пользовался brim.ru, они наверное самый известный java-хостинг в России.

PS: Если совсем не терпится и хочется сделать совсем всё по-быстрому, то можно запустить в два-три шага:
1. Через apt-get поставить tomcat8
2. Загрузить свой ROOT.war
3. Если нужно пробросить порт.

Мне необходимо было настроить и запустить Tomcat на Mac OS X (Mountain Lion) и зарегистрировать данный сервер приложений (контейнер сервлетов) в NetBeans.
Для того чтобы это сделать, я выполнил следующие пункты.

Установка Tomcat
  1. Скачать архив Tomcat отсюда .
  2. Распаковать архив, например, в папку пользователя. ~/apache-tomcat-7.0.42
  3. Открыть программу «Терминал».
  4. Перейти в папку «bin» cd ~/apache-tomcat-7.0.42/bin и установить разрешение на запуск файлов с расширением.sh. sudo chmod +x ./*.sh
  5. Установить переменную окружения CATALINA_HOME. Для того чтобы она сохранилась не на время сессии в терминале, а постоянно, нужно ее прописать в файле «launchd.conf».
    Создать/открыть файл (пример приведен с помощью редактора vi, но можно использовать любой другой, например emacs): sudo vi /etc/launchd.conf
    Перейти в режим вставки: «клавиша s».
    Записать туда текст: setenv CATALINA_HOME /Users/ХХХ/apache-tomcat-7.0.42
    XXX - это имя вашего пользователя, если вы сохранили tomcat в папку пользователя как было указано в п.2, если нет, то укажите путь к папке, куда вы сохранили tomcat.
    Закрыть режим вставки «клавиша Esc».
    Перейти в режим команды «клавиша:».
    Сохранить файл, команда «wq».
  6. По умолчанию сервер настроен на порт 8080. Чтобы его изменить нужно перейти в папку «conf»: cd ~/apache-tomcat-7.0.42/conf
    Открыть там файл «server.xml».
    Найти тэг «Connector» где атрибут port равен «8080» и установить атрибут port в нужное Вам значение:
  7. По умолчанию пользователь, имеющий права публикации (deploy) на сервер через веб GUI или через скрипт, отключен. Его нужно прописать в файле «tomcat-users.xml». Для этого нужно перейти в папку «conf»: cd ~/apache-tomcat-7.0.42/conf
    Открыть там файл «tomcat-users.xml» и добавить следующее (имя пользователя и пароль можно использовать отличающиеся от приведенных):
  8. Перезагрузить компьютер, чтобы установленная переменная окружения CATALINA_HOME установилась.
  9. Открыть программу «Терминал».
  10. Перейти в папку «bin» cd ~/apache-tomcat-7.0.42/bin и запустить скрипт «startup.sh»
    sh startup.sh
    Должно отобразиться в терминале примерно следующее (в зависимости от ваших настроек системы): Using CATALINA_BASE: /Users/ХХХ/apache-tomcat-7.0.42 Using CATALINA_HOME: /Users/ХХХ/apache-tomcat-7.0.42 Using CATALINA_TMPDIR: /Users/ХХХ/apache-tomcat-7.0.42/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home Using CLASSPATH: /Users/ХХХ/apache-tomcat-7.0.42/bin/bootstrap.jar:/Users/XXX/apache-tomcat-7.0.42/bin/tomcat-juli.jar
  11. Запустить браузер и набрать в адресной сроке http://localhost:8080 . Если вы поменяли порт, как было указано в п. 6, то укажите свой порт.
  12. Должна открыться домашняя страница tomcat.
  13. По кнопке «Server status» можно посмотреть статус поднятого сервера. Нужно будет ввести имя пользователя и пароль созданные ранее.
  14. По кнопке «Manager App» можно публиковать (удалять) приложения. Нужно будет ввести имя пользователя и пароль созданные ранее.
  15. Остановка сервера выполняется следующим образом. Перейти в папку «bin» cd ~/apache-tomcat-7.0.42/bin и запустить скрипт «shutdown.sh»
    sh shutdown.sh
Регистрация сервера Tomcat в NetBeans
  1. Если была установлена 8 версия Tomcat, то необходимо сделать символьную ссылку на каталог библиотек.
    ln -s /Users/XXX/apache-tomcat-8.0.0-RC3/lib /Users/XXX/apache-tomcat-8.0.0-RC3/common/lib
  2. Открыть NetBeans
  3. Меню Сервис->Серверы
  4. В открывшемся окне нажать кнопку «Добавить сервер»
  5. В открывшемся окне выбрать «Apache Tomcat» и нажать кнопку «Далее»
  6. В следующей отображенной панели указать домашнюю папку Tomcat, например "/Users/ХХХ/apache-tomcat-7.0.42"
  7. Указать имя пользователя и пароль, созданные ранее. Нажать кнопку «Далее».
  8. Указать порт, если он был изменен ранее. Нажать кнопку «Готово».
  9. Для проверки можно создать Веб приложение и выбрать в качестве сервера приложений Apache Tomcat. После чего запустить его из NetBeans. Данное приложение развернется автоматически в Tomcat-е и запуститься в браузере, например под таким адресом: http://localhost:8090/WebApplication1 (обычно по умолчанию шаблон веб приложения содержит страничку jsp с текстом «Hello World!»).
Примечание
Это не относится к настройке Tomcat или регистрации сервера Tomcat в NetBeans, но некоторые приложения ищут java в папке /bin, а в Mac OS X java устанавливается в другие папки, но при этом есть символьная ссылка на java в папке /usr/bin.
Таким образом нужно сделать еще одну символьную ссылку на java.
sudo ln -s /usr/bin/java /bin/java

Apache Tomcat - это контейнер, который позволяет вам использовать интернет приложения такие, как Java сервлеты и JSP (серверные страницы Java).

Пакеты Tomcat 6.0 в Ubuntu поддерживают два варианта запуска Tomcat. Вы можете установить его как классический одиночный экземпляр на всю систему, который будет запускаться при загрузке системы от имени непривилегированного пользователя tomcat6 . Но вы можете развернуть частные экземпляры, которые будут запускаться с правами вашего собственного пользователя, и вам придется запускать и останавливать их самостоятельно. Второй вариант особенно полезен в контексте сервера разработки, где нескольким пользователям требуется тестировать их собственные частные экземпляры Tomcat.

Масштабная установка на всю систему

Настройка

Изменение портов по умолчанию

Изначально Tomcat 6.0 запускает HTTP соединитель (connector) на порту 8080 и AJP соединитель на порту 8009. Вы можете захотеть изменить эти порты для избежания конфликтов с другими серверами на системе. Это делается изменением следующих строк в /etc/tomcat6/server.xml:

...

Изменение используемой JVM

По умолчанию Tomcat предпочитает использовать OpenJDK-6, затем пробует JVM от Sun (Oracle), а затем иные JVM. Если у вас установлено несколько JVM, вы можете определить какая из них будет использоваться, установив JAVA_HOME в /etc/default/tomcat6:

JAVA_HOME=/usr/lib/jvm/java-6-sun

Определение пользователей и ролей

Пользователи, пароли и роли (группы) могут быть определены централизованно в секции Servlet. Для Tomcat 6.0 это настраивается в файле /etc/tomcat6/tomcat-users.xml:

Использование стандартных приложений Tomcat

Tomcat поставляется с приложениями, которые вы можете установить для документирования, администрирования или демонстрационных целей.

Документация Tomcat

Пакет tomcat6-docs содержит документацию Tomcat 6.0, упакованную в качестве интернет приложения, которое доступно по умолчанию по адресу http://yourserver:8080/docs . Вы можете его установить следующей командой в терминале:

Sudo apt-get install tomcat6-docs

Приложения администрирования Tomcat

Пакет tomcat6-admin содержит два приложения, которые могут быть использованы для администрирования сервера Tomcat через web интерфейс. Для их установки введите следующую команду в терминале:

Sudo apt-get install tomcat6-admin

Первое из них это приложение manager , которое по умолчанию доступно по адресу http://yourserver:8080/manager/html . Оно в первую очередь используется для получения статуса сервера и перезапуска web приложений.

Доступ к приложению manager по умолчанию защищено: вам надо определить пользователя с ролью "manager" в /etc/tomcat6/tomcat-users.xml для получения к нему доступа.

Второе приложение - это host-manager , которое по умолчанию доступно вам по адресу http://yourserver:8080/host-manager/html . Оно может быть использовано для создания виртуальных хостов динамически.

Доступ к приложению host-manager также закрыто по умолчанию: вам надо определить пользователя с ролью "admin" в /etc/tomcat6/tomcat-users.xml для получения к нему доступа.

По соображениям безопасности пользователь tomcat6 по умолчанию не может писать в каталог /etc/tomcat6. Некоторые возможности в этих приложениях администрирования (разработка приложений, создание виртуальных хостов) требуют права записи на этот каталог. Если вы хотите пользоваться этими возможностями, выполните следующее для предоставления группе tomcat6 необходимых прав:

Sudo chgrp -R tomcat6 /etc/tomcat6 sudo chmod -R g+w /etc/tomcat6

Приложения примеров Tomcat

Пакет tomcat6-examples содержит два приложения, которые могут быть использованы для тестирования или демонстрации возможностей сервлетов и JSP, которые по умолчанию вы можете найти по адресу http://yourserver:8080/examples . Вы можете установить их следующей командой в терминале:

Sudo apt-get install tomcat6-examples

Использование пользовательских экземпляров

Tomcat в большей степени используется при разработке и тестировании, когда использование одиночной оболочки на сервере не удовлетворяет требованиям множества пользователей на одной системе. Пакеты Tomcat 6.0 в Ubuntu поставляются с инструментарием, помогающим создать ваши собственные настроенные на пользователя оболочки, позволяя каждому пользователю в системе запускать (без прав суперпользователя) отдельные частные экземпляры, при том, что они будут использовать библиотеки, установленные в системе.

Существует возможность запускать общий и частные экземпляры в параллель, до тех пор пока они не используют одни и те же TCP порты.

Установка поддержки частных оболочек

Вы можете установить все необходимое для запуска частных оболочек вводом следующей команды в терминале:

Sudo apt-get install tomcat6-user

Создание частного экземпляра

Вы можете создать каталог частной оболочки вводом следующей команды в терминале:

Tomcat6-instance-create my-instance

Это создаст новый каталог my-instance со всеми необходимыми подкаталогами и сценариями. Вы можете, например, установить свои общие библиотеки в подкаталог lib/ и развернуть свои приложения в подкаталоге webapps/. По умолчанию никакие приложения не разворачиваются.

Настройка вашего частного экземпляра

Вы обнаружите обычные файлы настроек Tomcat для вашего частного экземпляра в подкаталоге conf/. Вы конечно же можете отредактировать файл conf/server.xml для изменения портов по умолчанию, используемых вашим частным экземпляром Tomcat для предотвращения конфликтов с другими экземплярами, которые также могут быть запущены.

Запуск/остановка вашего частного экземпляра

Вы можете стартовать свой частный экземпляр, набрав следующую команду в терминале (подразумевается, что ваш экземпляр расположен в каталоге my-instance):

My-instance/bin/startup.sh

Вы можете проверить подкаталог logs/ на предмет обнаружения каких-либо ошибок. Если вы получили ошибку java.net.BindException: Address already in use:8080 , это означает, что порт, который вы используете уже занят и вам следует его поменять.

Вы можете остановить свой экземпляр, используя следующую команду в терминале (подразумевается, что ваш экземпляр все еще находится в каталоге my-instance).

На протяжении всего времени изучения и освоения Java, я старался разобраться и научиться программировать/писать Window Application. Но, если честно, поразмыслив на досуге, решил все-таки сменить вектор обучения: решил освоить Servlet -ы и податься в облака Web -программирование. Для работы /изучения сервлетов нам понадобится веб-сервер Apache Tomcat .
Apache Tomcat - программа-контейнер сервлетов, написанная на языке Java и реализующая спецификацию сервлетов и спецификацию JavaServer Pages (JSP), которые являются стандартами для разработки веб-приложений на языке Java.

Tomcat позволяет запускать веб-приложения, содержит ряд программ для самоконфигурирования.

Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в сервере приложений JBoss.

Другими словами без Tomcat при написании сервлетов нам не обойтись.

Когда-то в одном из своих постов на блоге я уже писал про установку и настройку Apache Tomcat, но хотелось бы рассмотреть эту тему более подробно и детально.

В данной статье хотелось бы более подробно рассмотреть настройку и установку Tomcatдля ОС Windows. Настройку Apache Tomcat для ОС Linux вынесу в отельную статью. Материал по данной тематике огромный, поэтому этот пост будет добавляться/обновляться по мере изучения и освоения Tomcat.

Итак, понеслось....
Для начала нам необходимо скачать TomCat с официального сайта разработчиков . Описание доступных версий TomCat можно посмотреть на данной страничке . На момент написания статьи последней стабильной версией была 7.0.14 .
Приведу прямые ссылки для скачивания данной версии:
Рассмотрим вариант установки Tomcat при помощи исполняемого файла, который установит Tomcat в качестве службы Windows и TomCat будет запускаться при старте системы. После скачивания установщика запускаем его и отвечаем на простые вопросы:вначале соглашаемся с лицензионным соглашением, затем выбираем тип установки (полный, выборочный, нормальный, минимальный) - я выбрал полный. Дальше установщик запросит у нас некоторую конфигурацию: порт подключения (по умоланию 8080):

Настройки Apache TomCat
Это означает, что для запуска Tomcat в командной строке броузера нам нужно будет вводить адрес вида: https://localhost:8080 Значение порта подключения можно оставить по умолчанию, но если у нас на компьютере или сервере будет использоваться в качестве Web-сервера только Tomcat , то значение порта можно поставить равное 80 . Следовательно строка ввода адреса в браузере будет выглядеть просто https://localhost (без указания порта). Укажем порт 80. В последствие данное значение можно будет изменить вручную в настройках сервера (файл server.xml ).
Далее указываем свой логин и пароль. Роли оставим указанные по умолчанию: admin-gui, manager-gui . Далее указываем путь к установленной jdk на нашем компьютере. И в завершение указываем путь куда устанавливать TomCat и нажимаем Install.
После завершения установки оставляем галочку "Запустить TomCat ":
Завершение установки TomCat
Нажав кнопку Finish , мы увидим окно запуска TomCat в качестве сервиса ОС Windows:
Теперь наступила пора проверить работоспособность сервера TomCat: для этого в сроке ввода адреса в нашем любимом браузере вводим команду:
https://localhost:8080 В результате, если все прошло гладко, откроется домашняя страница TomCat:
Домашняя страница Apache TomCat на нашем localhost

Часть информации и документации на открывшейся страничке localhost будет дублируется с официального сайта.
Кроме того, установленный сервер TomCat будет доступен пользователям Вашей локальной сети - никаких дополнительных настроек делать не нужно.
На этом данный вид установки TomCat можно считать завершенным.

Теперь коротко рассмотрим другой вариант установки и запуска: из архива. Итак.. после скачивания архива для соответствующей архитектуры Winsows распаковываем его в любое удобное для нас место, например D:/Java/apache-tomcat-7.0.14/ Запускаем командную строку Windows и переходим в папку: D:/Java/apache-tomcat-7.0.14/bin/ - в данной папке находятся исполняемые файлы для TomCat. Для установки TomCat в качестве службы Windows вводим команду:
service.bat install Более подробную информацию по установке можно почитать на данной страничке .
Запускать TomCat можно при помощи команды
startup.bat Остановить сервер можно при помощи команды команды:
shutdown.bat Не забываем предварительно добавить системные переменные: CATALINA_HOME и JAVA_HOME . Выглядеть они будут примерно так:
JAVA_HOME: c:\Program Files\Java\jdk1.6.0_18\
CATALINA_HOME: D:/Java/apache-tomcat-7.0.14

Собственно на этом установка Apache TomCat закончена. Информация о дополнительной настройке и использовании TomCat будет чуть позже.




Top