Сайт о телевидении

Сайт о телевидении

» » Установка Apache Tomcat в ОС Windows. Устанавливаем Tomcat под Windows

Установка Apache Tomcat в ОС Windows. Устанавливаем Tomcat под Windows

Замысел написать эту статью про установку и настройку, наверное, одного и самых популярных веб-серверов на 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. Если нужно пробросить порт.

■ |

Apache Tomcat – это сервер приложений, который используется для обслуживания приложений Java. Tomcat – это открытая реализация технологий Java Servlet и JavaServer Pages, выпущенная Apache Software Foundation. Данное руководство описывает базовую установку и настойку Tomcat 8 на сервере Ubuntu 16.04.

Требования

  • Предварительно настроенный сервер Ubuntu 16.04 (инструкции по начальной настройке – ).
  • Не-root пользователь с доступом к sudo.

1: Установка Java

Для работы Tomcat необходимо установить Java, иначе код Java не будет выполняться. Установите OpenJDK при помощи стандартного пакетного менеджера apt-get.

Сначала нужно обновить индекс пакетов.

sudo apt-get update

Чтобы установить JDK, введите:

sudo apt-get install default-jdk

После установки Java создайте пользователя tomcat для запуска сервиса Tomcat.

2: Создание пользователя Tomcat

В целях безопасности сервер Tomcat следует запускать с правами обычного пользователя (т.е. не-рутового). Для этого создайте нового пользователя и группу.

Чтобы создать группу tomcat, введите:

sudo groupadd tomcat

После этого нужно создать пользователя tomcat, который должен состоять в одноименной группе. Домашний каталог пользователя – /opt/tomcat (в него будет установлен Tomcat); оболочка – /bin/false (чтобы никто не мог открыть учётную запись):

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

После этого приступайте к установке Tomcat.

3: Установка Tomcat

На данный момент Tomcat 8 проще всего установить вручную из бинарного релиза.

На странице загрузки найдите последнюю версию Tomcat. На данный момент такой версией является 8.0.33. В разделе Binary Distributions найдите список Core и скопируйте ссылку на tar.gz.

Перейдите в каталог /tmp на сервере. Этот каталог предназначен для временных пакетов.

Чтобы загрузить архив Tomcat, используйте следующую команду (приведенная ниже ссылка может отличаться):

curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz

Установите Tomcat в каталог /opt/tomcat. Создайте этот каталог и извлеките в него архив:

sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

После этого нужно установить соответствующие права на каталог.

4: Права

Пользователь tomcat должен иметь доступ к установке Tomcat.

Откройте каталог Tomcat:

Дайте пользователю tomcat право на изменение каталога conf и право на чтение файлов в нём:

sudo chgrp -R tomcat conf
sudo chmod g+rwx conf
sudo chmod g+r conf/*

Затем сделайте пользователя tomcat владельцем каталогов work, temp и logs.

sudo chown -R tomcat webapps/ work/ temp/ logs/

5: Создание файла systemd

Чтобы запустить Tomcat как сервис, нужно создать service-файл systemd.

Серверу Tomcat нужно знать, где находится установка Java. Этот путь называется JAVA_HOME. Чтобы узнать местонахождение установки, используйте команду:

sudo update-java-alternatives -l
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64

Примечание : В данном примере JAVA_HOME выделен красным.

Теперь добавьте к полученному значению секцию /jre и установите в качестве значения JAVA_HOME:

JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre

Примечание : Переменная JAVA_HOME может отличаться.

Теперь можно создать service-файл. Откройте tomcat.service в каталоге /etc/systemd/system:

sudo nano /etc/systemd/system/tomcat.service

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


Description=Apache Tomcat Web Application Container
After=network.target
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
WantedBy=multi-user.target

Сохраните и закройте файл.

После этого нужно перезапустить демон systemd:

sudo systemctl daemon-reload

Теперь сервис Tomcat готов к запуску. Для этого используйте:

sudo systemctl start tomcat

Убедитесь, что при запуске не произошло ошибок:

sudo systemctl status tomcat

6: Настройка брандмауэра и тестирование сервера Tomcat

После запуска сервиса Tomcat нужно убедиться, что стандартная страница доступна.

Но сначала нужно откорректировать настройки брандмауэра и разблокировать порт Tomcat. Если вы следовали , на данный момент сервер защищён брандмауэром ufw.

Для обработки запросов Tomcat использует порт 8080. Чтобы разблокировать трафик этого порта, введите:

sudo ufw allow 8080

Теперь брандмауэр пропускает трафик Tomcat. Чтобы получить доступ к стандартной странице сервиса, откройте ссылку:

http://server_domain_or_IP:8080

На экране появится приветственная страница Tomcat, которая содержит некоторую информацию о программе. Однако доступа к ссылкам (например, Manager App) у вас на данный момент нет.

Если всё работает должным образом, включите service-файл, чтобы сервис Tomcat автоматически запускался вместе с сервером.

sudo systemctl enable tomcat

7: Настройка веб-интерфейса управления Tomcat

Чтобы использовать поставляемый с Tomcat интерфейс, добавьте логин на сервер Tomcat. Для этого отредактируйте файл tomcat-users.xml:

sudo nano /opt/tomcat/conf/tomcat-users.xml

Теперь нужно добавить пользователя, который будет иметь доступ к поставляемым с Tomcat интерфейсам: manager-gui и admin-gui. Для этого можно использовать приведённый ниже код (но укажите более надёжное имя и пароль пользователя):



Сохраните и закройте файл tomcat-users.xml. Чтобы обновить настойки, перезапустите сервис Tomcat.

sudo systemctl restart tomcat

8: Доступ к веб-интерфейсу

Теперь сервер Tomcat запущен. Откройте в браузере веб-интерфейс управления. http://server_IP_address:8080

На экране появится страница с сообщением:

If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!

Теперь откройте Manager App, доступный по ссылке:

http://server_IP_address:8080/manager/html

Этот менеджер нужен для управления приложениями Java. Он позволяет запускать, перезапускать, останавливать и сворачивать их. Кроме того, он может выполнять диагностику приложений (к примеру, обнаруживать утечки памяти). В конце этой страницы содержится информация о сервере.

Теперь откройте Host Manager:

http://server_IP_address:8080/host-manager/html/:

Страница Virtual Host Manager нужна для управления виртуальными хостами; она позволяет добавлять виртуальные хосты для развёртывания приложений.

Заключение

Готово! Теперь сервер Tomcat полностью готов к обслуживанию приложений Java.

Tags: ,

Нельзя сказать, чтобы среда разработки Java была сильно популярна на платформе Windows. В большинстве случаем на рынке хостинга присутствуют именно Unix решения с поддержкой Java. Но, тем не менее, разрабатываясь как мультиплатформенный язык программирования, Java ни чуть не хуже работает и на Windows платформе, что безусловно может использоваться как для отладки, так и для хостинга приложений на этой платформа. Дополнительную популярность на платформе Windows язык Java, как это ни странно, приобрел после выхода конкурирующего продукта непосредственно от разработчика Windows. Агрессивная политика Microsoft заставила задуматься многих специалистов о разработке более переносимого кода, который "в случае чего" можно будет портировать на Unix платформу с меньшими потерями.

Я не буду здесь касаться проблем выбора языка разработки, равно как и преимуществ одной платформы над другой. Будем считать, что вам просто понадобилась именно такая конфигурация: Windows+Tomcat.

Подготовительный этап

Разумеется любая настройка сервера начинается с подбора необходимых программных компонент. В нашем случае, все компоненты, кроме собственно ОС являются бесплатными или условно-бесплатными и могут быть успешно скачены из Интерента.

И так нам очевидно потребуется:

Компьютер с Windows

Компьютер с установленной Windows. Здесь и далее я буду рассказывать про Windows 2000 Server, но при этом я не вижу принципиальных сложностей, если вы захотите установить рассматриваемую конфигурацию на любую другую версию Windows. В частности, я по тексту буду упоминать о возможных отличиях в настройке ПО под другие версии ОС.

Если у вас система из NT-семейства, то начните с установки на нее последнего Service Pack (SP). Для NT очевидно потребуется SP6a, а для Windows 2000 как минимум SP2, без установки которого у вас элементарно не заработает Java 1.4.1. Инсталятор Java SDK вас предупредит о необходимости установки SP2 и будет прав, ибо без SP2 он действительно не работает.

Очевидно также, что на вашем компьютере должна стоять подключенная к сети сетевая карта с установленным и настроенным протоколом TCP / IP . В случае ее отсутствия, рекомендую установить и настроить виртуальную сетевую карту, т.н. "Microsoft loopback adapter", драйвер которого входит в дистрибутив Windows 2000.

Java JDK

Java JDK очевидно берется с сайта java.sun.com . На момент написания статьи последней была версия 1.4.1_02. Вам потребуется Java 2 JDK Standard Edition (J2SE).

Разумеется соблазнительно скачать сразу Enterprise Edition (J2EE), но как таковой отдельно этой версии не существует. Реализации классов J2EE есть часть соответствующих серверов приложений. Таким образом с сайта можно скачать лишь спецификацию на J2EE и другие подобные документы.

Далее - не стоит скачивать JRE. Во первых, JRE не включает в себя компилятор javac, то не позволяет разрабатывать приложения (что в общем то логично), а, во-вторых, установке Tomcat требует именно JDK. Это также очевидно, т.к. при работе с файлами JSP именно на Tomcat ложится задача по компиляции JSP в байт-код Java. Другое отличие JRE для Windows состоит в отсутствии в его составе серверной версии библиотек JIT-компилятора (подробнее о JIT – см. ниже). Также отмечу, что JDK самодостаточный комплект библиотек и отдельно JRE не нужен.

Tomcat

Начинаем установку

Надеюсь вы уже установили свежий Service Pack и необходимое число раз перезагрузили компьютер.

Установка Java SDK

При установке Java SDK ни в коем случае не ставьте ее в каталог предлагаемый по умолчанию. Введите каталог, путь которого как можно более короткий, без пробелов и других экзотических символов, например:

C:\j2sdk1.4.1_02

Tomcat

Если вы скачали ZIP-версию дистрибутива, то все что вам нужно, это распаковать ее в созданный для этого каталог, например:

C:\Tomcat

Если вы предпочли exe-версию дистрибутива, также обращаю ваше внимание на необходимость исключить из пути к каталогу пробелы, дабы избежать потом проблем с прописыванием переменных окружения.

Архив может иметь сложную структуру, соответственно вам нужно распаковать его так, чтобы при входе в каталог C:\Tomcat у вас отображались были каталоги bin, common, conf, logs и т.д.

Настраиваем Tomcat

Установка PATH

В принципе, установка PATH для работы Tomcat не обязательна и вы можете пропустить этот шаг, но в случае, если у вас установлено несколько Java JRE, установка PATH даст дополнительную подсказку различным программам, где искать библиотеки Java. В частности, без указания PATH может возникнуть конфликт с родной JVM от Microsoft, которая входит в некоторые версии Windows. Кроме этого, установка PATH потребуется для запуска из командной строки компилятора javac, который вам может потребоваться при дальнейшем тестировании сервера.

Таким образом, убедитесь, что у вас на компьютере работает только одна версия Java-машины и эта именно та версия, которую мы поставили. Для этого введите команду

SET PATH

и убедитесь, что в переменной PATH присутствует ссылка только на один каталог java\bin . В нашем случае это будет C:\j2sdk1.4.1_02\bin . Здесь будьте внимательны, т.к. java может входить в комплект к огромному числу разных программ, в частности, компания IBM и Oracle. Для верности, отредактируйте переменную PATH таким образом, чтобы ссылка на нашу Java была первой с списке. Напомню, что настройка переменных окружения в NT-семействе производится на вкладке Advanced свойств "Моего компьютера".

Проверить правильность настройки PATH можно так: зайдите в каталог C:\j2sdk1.4.1_02\bin и запустите команды java –version и javac из каталога C:\j2sdk1.4.1_02\bin . Затем перейдите куда-нибудь в другой каталог и повторите эти команды. Результат должен быть один и тот же.

Установка переменных окружения Tomcat

Теперь перейдем непосредственно к настройке Tomcat. Для своей работы он требует установки нескольких переменных окружения:

  • CATALINA_HOME должна указывать на каталог с установленным Tomcat. В нашем случае это C:\Tomcat .
  • JAVA_HOME должна указывать на каталог с SDK. В нашем случае, это: C:\j2sdk1.4.1_02 . Обратите внимания, что, в отличии от переменной PATH , данная переменная указывает не на каталог bin .

Пожалуйста проверьте правильность установки этих переменных окружения. При неверной установке, tomcat выводит совершенно невразумительное сообщение об ошибке, типа "The system cannot find the file -Djava.endorsed.dirs=.".

Для настройки Tomcat есть еще несколько переменных, но пока они нам не потребуются. Краткое описание этих и других переменных можно посмотреть в файле %CATALINA_HOME%\bin\catalina.bat

Хотелось бы напомнить, если в дальнейшем планируется запускать Tomcat как сервис (службу) Windows NT, нужно создавать и устанавливать системные переменные окружения (System variables), а не пользовательские (User variables). Также стоит напомнить, что для того чтобы установленные переменные вступили в силу, требуется перезапустить приложение, которое планирует их использовать. В нашем случае следует перезапустить sell (или FAR) из которого планируется тестовый запуск Tomcat.

Настройка порта

По умолчанию Tomcat "садиться" на порт 8080. Если этот порт у вас по каким-то причинам занят – найдите соответствующий параметр в файле %CATALINA_HOME%\conf\server.xml и исправьте по вкусу. Этот параметр выглядит приблизительно так:

В частности, если вы не планируете использовать IIS для доступа к Tomcat"у, то можете повесить Tomcat на порт 80 (только не забудьте отключить в этом случае IIS).

Отмечу, что, если порт на который вы устанавливаете Tomcat, занят, то Tomcat не запуститься и даже не оставит ни единого сообщения в log-файле. При этом окошко Tomcat"а закроется сразу после открытия. Аналогичная картина будет также в случае, если одна копия сервера уже запущена и случает указанный порт.

Запуск Tomcat

После того, как все указанные действия проделаны, запустите скрипт %CATALINA_HOME%\bin\startup.bat . У вас должно открыться новое текстовое окно и запуститься Tomcat. Указанный скрипт лучше запускать из командной строки, чтобы у вас была возможность прочитать выводимые сообщения об ошибках.

Для Windows 9x/ME разработчики также рекомендуют в свойствах файлах startup.bat и shutdown.bat установить параметр "Initial environment" на вкладке Memory в значение как минимум 4096. Т.к. в противном случае возможно аварийное завершение сервиса с сообщением "out of environment space". Это видимо связано с обилием переменных окружения, необходимых для работы сервера.

После этого откройте броузер и обратитесь по адресу http://127.0.0.1:8080 . Должен открыться локальный сайт, на котором, кроме прочего, присутствуют тестовые сервлеты и документация к Томкату. Tomcat запускается не сильно быстро, поэтому не торопитесь сразу открывать броузер.

Тюнинг JVM

Компилятор JIT (Just In Time) от Sun предлагает два режима работы – серверный и клиентский. По сути это два различных JIT, вызываемых командой java. В серверном режиме производится более тщательная оптимизация кода. Разумеется за оптимизацию приходится платить большим временем компиляции, но в случае с сервлетами, компиляция производится лишь единожды. Далее класс используется для обслуживания любого количества клиентов безе перекомпиляции. Таким образом для серверных решений Sun рекомендует использовать именно серверный режим JIT.

Из командной строки тот или иной режим запускается посредством указаний ключа -server или -client первым ключом командной строки.

Следующий важный параметр – объем доступной для виртуальной машины памяти (heap size). Секрет состоит в том, что по умолчанию объем максимально выделяемой памяти равняется 64Mb. Разумеется это катастрофически мало для серверного приложения и, запуская систему со значениями по умолчанию, оперирование в памяти с файлами объемом в пару десятков мегабайт будет приводить к останову сервлета с сообщением OutOfMemory.

Для настройки размеров выделяемой памяти служит два ключа: -Xms и -Xmx, которые отвечают за минимальный и максимальный объем соответственно.

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

CATALINA_OPTS = -server –Xms64m –Xmx256m

Что настроит серверный JIT, плюс установит выделяемый объем памяти в диапазоне от 64 до 256Mb

Установка Tomcat как сервиса

Для установки сервера как сервиса Windows NT, сайт Jakarta предлагает нам выполнить следующую "простую" команду (что любопытно, без каких либо комментариев):

%CATALINA_HOME%\bin\tomcat.exe -install Apache-Catalina %JAVA_HOME%\jre\bin\server\jvm.dll -Djava.class.path=%CATALINA_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar -Dcatalina.home=%CATALINA_HOME% %CATALINA_OPTS% -Xrs -start org.apache.catalina.startup.BootstrapService -params start -stop org.apache.catalina.startup.BootstrapService -params stop -out %CATALINA_HOME%\logs\stdout.log -err %CATALINA_HOME%\logs\stderr.log

Если попытаться разобраться в этой команде, и отобразим контекстную помощь команды tomcat.exe, то мы получим приблизительно следующее описание параметров:

Install service_name jvm_library (jvm_option) -start start_class [-method start_method] [-params (start_parameter)+] [-stop start_class [-method stop_method] [-params (stop_parameter)+]] [-out out_log_file] [-err err_log_file] [-current current_dir] [-path extra_path]

Таким образом мы последовательно указываем:

  • Имя сервиса, которое будет отображаться в оснастке Services Windows. Имя сервиса используется также для создания имени ключа реестра, поэтому пробелов там быть не должно.
  • Указание ссылки библиотеки на библиотеку Java-машины с рядом необходимых параметров. Среди которых и параметры указанные нами в переменной CATALINA_OPTS . Собственно эта библиотека и будет загружена как сервис.
  • Указания на методы запуска и останова сервиса, также с необходимыми параметрами
  • Ссылки на файлы журналов и ряд других необязательных параметром.

Замечу что, рекомендованный код также использует параметр –Xrs для запуска библиотеки Java-машины. Данный ключ позволяет пользовательским приложениям корректно завершить работу в случае получения процессом сигнала на аварийное завершение. К сожалению, мне не удалось выяснить особенности реализации данного подхода в Windows, как и необходимости принятия каких либо дополнительных мер со стороны разработчика кода.

Удаление сервиса производится командой:

Tomcat.exe -uninstall service_name

где service_name – указанное нами при установке имя сервиса.

Все введенные нами данные аккуратненько размещаются в реестре по адресу:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\

Таким образом мы можем исправить отдельные параметры, не проводя перерегистрацию сервиса. Аналогичным образом мы можем исправить имя, отображаемое в оснастке и дать нашему сервису описание. Для этого, соответственно, служат значения DisplayName и Description указанного ключа.

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

Конфигурация собственного Web-узла

По умолчанию Tomcat создает лишь один Web-сайт, плюс сваливает все в один каталог. Такое положение вещей редко подходит даже для тестового сервера. Таким образом проделаем несколько шагов для упорядочивания информации.

Итак, нам нужно создать виртуальный сайт, причем разместить его за пределами каталога сервера. В production сервера, каталоги виртуальных сайтов обычно размещаются на отдельном диске. Для нашего примера, я буду использовать каталог

C:\host1

В каталоге conf сервера Tomcat есть файл server.xml . В этом файле следует найти элемент . Внутри этого элемента по умолчанию описаны два коннектора: один для доступа по протоколу HTTP 1.1 и один для доступа по протоколу AJP 1.3. Первый используется для работы Tomcat"а в роли самостоятельного Web-сервера, а второй потребуется для подключения к IIS. Кроме этого, в теге Service , по умолчанию заданы шаблоны (закомментаринные по умолчанию) для коннекторов подключения по SSL и AJP 1.2.

Полученные запросы коннекторы передают так называемому Engine"у, который в свою очередь анализируют заголовок пакета HTTP и передает управления соответствующему виртуальному сайту.

Для создания виртуального сайта, нам потребуется создать новый тег Host внутри тега Engine.

Следует отметить, что у файла server.xml нет DTD , таким образом вы не сможете проверить корректность отредактированного файла. Таким образом правку файла server.xml следует проводить осторожно. При ошибке в файле server.xml , сервер не запустится, а в каталоге %CATALINA_HOME%/logs/stderr.log появится сообщение об этом.

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

www.host1.loc

Этой строкой мы создадим виртуальный сайт окликающийся по адресам http://host1.loc и с внутренним именем host1.loc. Кроме того мы указываем серверу, автоматически подключать скопированные в каталог appBase приложения и автоматически разворачивать скопированные туда WAR файлы.

Теперь мы можем скопировать в наш каталог приложение примеров (которое по умолчанию размещено в каталоге %CATALINA_HOME%\webapps\examples) и убедится, что оно работает по адресу!http://www.host1.loc/examples/servlets. Разумеется, для тестирования в файле HOSTS операционной системы нужно создать записи вида

195.42.130.28 host1.loc 195.42.130.28 www.host1.loc

Указав IP адреса вашей машины.

Замечу, что если мы обратимся просто по адресу http://www.host1.loc, мы получим ошибку, т.к. к этому адресу у нас не привязано ни одного приложения, а функция autoDeploy может привязывать только приложения с адресами http://www.host1.loc/<имя приложения>.

Для привязки нашего тестового приложения приложения к корню сайта, создадим внутри элемента элемент , таким образом наш хост будет выглядеть следующим образом:

www.host1.loc

Новой строкой мы привязали наше приложение к корню сайта, плюс указали серверу отслеживать модификации файлов приложения и перегружать их при необходимости. Учитывая, что перезапуск сервера происходит сравнительно долго, данная функция крайне полезна при разработке.

Заключение

В полученной конфигурации Tomcat может вполне успешно функционировать как на тестовом, так и на production-сервере. Напомню, что в созданной нами конфигурации сервер самостоятельно обрабатывает HTTP запросы. При небольших и средних нагрузках Tomcat вполне справляется с этой ролью, в случае же больших требований, рекомендуется задействовать Tomcat лишь как контейнер сервлетов, а роль Web-сервера передать IIS или Apache.

В сегодняшнем посте рассмотрим весь процесс компиляции tomcat из исходников, а затем его настроим и запустим. Эксперимент будем проводить на linux ubuntu на примере tomcat 7 .
Первый вопрос который может появится, что тут сложного? А второй, зачем вообще его компилировать из исходников, если можно взять уже готовый бинарный дистрибутив? Ну во-первых это вообще интересно как этот tomcat собирать из исходников, а во-вторых все кто когда-либо имел дело с установкой tomcat , вся его установка сводилась к скачиванию бинарного дистрибутива и его запуском, то есть выполнением скрипта ./startup.sh , а в виндовс мире так там вообще все еще проще, там инсталятор создает ярлыки запуск в меню start . Тут же мы пройдем через все шаги от скачивания исходников, до более или менее тонкой настройки tomcat .

Для этого поста на понадобится:

  1. JRE — виртуальная java-машина на которой выполняется tomcat .
  2. Apche ant — инструмент для сборки приложений
  3. Исходники tomcat — это просто непонятный для машины текст, который ничем не отличается от текста этого поста (в смысле тоже состоит из символов), и который надо преобразовать в бинарный код, понятный машине.

Добавление юзера tomcat

Начнем с того, что добавим пользователя tomcat который будет ответственен за веб-сервер tomcat , то есть администратора веб-сервера tomcat . Для чего он нужен? Он нужен для того, чтобы только он мог запускать и останавливать сервер, плюс только он может (вместе с рутом) изменять конфигурацию сервера.

sudo useradd -d /home/tomcat -U tomcat

ключ -d означает домашняя директория, ключ -U имя пользователя.
После того как юзер tomcat создан зададим ему пассворд:

sudo passwd tomcat Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлён

Теперь сделаем юзера tomcat сюдоером:

sudo adduser tomcat sudo Добавляется пользователь «tomcat» в группу «sudo» ... Добавление пользователя tomcat в группу sudo Готово.

Чтобы проверить, что юзер tomcat стал сюдоером можно открыть файл /etc/group и найти в нем строку: sudo:x:27:#####,#####,tomcat
Или переключиться в юзера tomcat и ввести команду (как переключаться в другого юзера, чуть дальше):

sudo whoami

Если команда sudo whoami вернет root значит юзер tomcat стал сюдоером. Поясню почему команда whoami возвращает рута , а не tomcat , потому что когда запускается какая-нибудь команда с sudo , это значит, что она запускается от имени рута , соответственно команда sudo whoami запускается как рут и результат будет пользователь рут .
Теперь создадим домашний каталог для юзера tomcat :

sudo mkdir /home/tomcat

И назначим владельца каталога юзера tomcat :

sudo chown tomcat /home/tomcat

Теперь переключимся в пользователя tomcat и перейдем в его домашний каталог:

su tomcat Пароль: cd

Скачавание исходников tomcat

В предыдущем шаге мы создали юзера tomcat и перешли в его домашний каталог. Теперь создадим в его домашнем каталоге каталог downloads и перейдем в него:

mkdir downloads cd downloads

Теперь переходим на сайт http://tomcat.apache.org/download-70.cgi для скачивания исходников, которые можно найти в самом низу страницы в разделе Source Code Distributions и скачайте их в каталог downloads который мы только что создали.
Измените владельца этого архива на tomcat (если надо):

sudo chown tomcat apache-tomcat-7.0.54-src.tar.gz password for tomcat:

Разпакуйте архив в текущий каталог:

tar xvzf apache-tomcat-7.0.54-src.tar.gz

а архив можно удалить:

rm apache-tomcat-7.0.54-src.tar.gz

Установка apache-ant

Компилировать tomcat будем с помощью сборщика apache-ant . Заходим на сайтapache-ant и скачиваем дистрибутив в каталог downloads . На момент написания поста, последний был 1.9.4 .
Распакуем его в текущий каталог:

tar xvzf apache-ant-1.9.4-bin.tar.gz

Переместим его в общий каталог /usr/bin

sudo cp apache-ant-1.9.4-bin.tar.gz /usr/bin

Теперь добавим этот путь в переменную окружения PATH для того:

PATH=/usr/bin/apache-ant-1.9.4:$PATH

Удаляем архив и распакованный каталог из каталога downloads :

rm -rf apache-ant*

Ключ -r нужен для того, чтобы каталог apache-ant-1.9.4-bin был удален рекурсивно, а ключ -f чтобы linux не выводила предупреждение, что архив apache-ant-1.9.4-bin.tar.gz защищенный.
Теперь проверим, что apache-ant видим:

ant -version Apache Ant(TM) version 1.9.4 compiled on April 29 2014

Если ответ такой, то значит переходим к компиляции tomcat , если нет, то еще раз пройдите через шаг Установка apache-ant .

Компиляция tomcat

И так каталог с исходниками tomcat скачен и распакован, apache ant настроен, теперь заходим в каталог с исходниками tomcat :

cd apache-tomcat-7.0.54-src.tar.gz

открываем на редактирование файл build.properties.default :

build.properties.default

# ----- Default Base Path for Dependent Packages ----- # Please note this path must be absolute, not relative, # as it is referenced with different working directory # contexts by the various build scripts. base.path=/usr/share/java #base.path=C:/path/to/the/repository #base.path=/usr/local

Ищем в нем строчку #base.path=/usr/local , раскомментируем ее и изменим путь на /home/tomcat/downloads/tomcat (строчка 7):

build.properties.default

# ----- Default Base Path for Dependent Packages ----- # Please note this path must be absolute, not relative, # as it is referenced with different working directory # contexts by the various build scripts. base.path=/usr/share/java #base.path=C:/path/to/the/repository base.path=base.path=/home/tomcat/downloads/tomcat

Что мы сейчас сделали? Мы указали каталог, куда билдскрипт будет скачивать необходимые для сборки исходники. Затем переименуем файл в build.properties :

mv build.properties.default build.properties

И теперь мы дошли до компиляции tomcat . Сначала очистим каталог:

ant clean clean-depend

и с компилируем tomcat командой ant -Dno.build.dbcp=true :

ant -Dno.build.dbcp=true

Если в все было сделано правильно, то билд должен вернуть BUILD SUCCESSFUL :

Build: Compiling 31 source files to /home/tomcat/downloads/apache-tomcat-7.0.54-src/output/jdbc-pool/classes warning: bootstrap class path not set in conjunction with -source 1.5 warning: source value 1.5 is obsolete and will be removed in a future release warning: target value 1.5 is obsolete and will be removed in a future release warning: To suppress warnings about obsolete options, use -Xlint:-options. 4 warnings Building jar: /home/tomcat/downloads/apache-tomcat-7.0.54-src/output/jdbc-pool/tomcat-jdbc.jar Copying 1 file to /home/tomcat/downloads/apache-tomcat-7.0.54-src/output/build/lib BUILD SUCCESSFUL Total time: 23 seconds

если это так, то поздравляю, компиляция tomcat прошла успешно, и его билд должен появится в каталоге output/build .

Настройка tomcat

После того как tomcat успешно с компилирован, теперь под настроем его чуть-чуть. Сначала перенесем его в более приемлемый каталог, пусть это будет каталог bin где юзер tomcat будет складывать все свои бинарные приложения.
Создадим каталог bin в домашнем каталоге юзера tomcat :

mkdir bin

Теперь перенесем с компилированный tomcat в каталог bin :

cp -r /home/tomcat/downloads/apache-tomcat-7.0.54-src/output/build /home/tomcat/bin

Напоминаю сам tomcat с компилирован в каталог build .
Далее перейдем в каталог /home/tomcat/bin и переименуем каталог build на что-то по понятней, например на apache-tomcat-7 :

mv build apache-tomcat-7

По умолчанию все веб-приложения помещаются в каталог webapps каталога {$CATALINA_HOME} . Мы создадим отдельный каталог куда будут помещаться веб-приложения, чтобы в сам каталог {$CATALINA_HOME} не заходить без надобности, так как файлы веб-приложения могут меняться относительно часто в отличие от файлов самого контейнера сервлетов.
Перейдем в домашний каталог юзера tomcat и создадим каталоге с таким же именем webapps :

cd mkdir webapps

Теперь самое важное, у нас есть каталог веб-сервера /home/tomcat/bin/apache-tomcat-7 и есть каталог /home/tomcat/webapps куда будут помещаться веб приложения. Ограничим к ним доступ до юзера tomcat :

sudo chmod -R 700 /home/tomcat/bin/apache-tomcat-7 password for tomcat: sudo chmod -R 700 /home/tomcat/webapps

Теперь пропишем путь к каталогу, в который будем помещать все вэб-приложения, в конфигурационном файле сервера server.xml . Перейдем в каталоге bin/apache-tomcat-7/conf , где хранятся все файлы конфигурации сервера, и откроем на редактирование файл server.xml . В теге Host поменяем значение атрибута appBase с webapps на /home/tomcat/webapps (строчка 124):

server.xml

Теперь добавим админку, с помощью которой юзеры смогут деплоить веб приложения, но для них юзер tomcat должен выдать соответствующие права. Но юзер tomcat выдаст себе права. Для этого переходим в каталог conf :

cd /home/tomcat/bin/apache-tomcat-7/conf

и открываем на редактирование файл tomcat-users.xml .
Раскомментируем последние пять тегов, и добавим роли для usrename tomcat :

  • manager
  • manager-gui
  • admin-gui
  • Строчка 31:

    tomcat-users.xml

    Теперь удалим юзера tomcat из группы sudo . Зачем это делать? Затем, что sudo детям не игрушка, нам нужно было назначить юзера tomcat сюдоером, чтобы не переключаться постоянно в сюдоера, если нам надо было установить права на каталог где будут лежать веб-приложения и проч. Но а теперь, когда уже все сделано и мы точно знаем, что юзер tomcat не будет заниматься никакими другими админискими задачами кроме как запускать/останавливать сервер и настройку этого сервера, то и не зачем ему быть сюдоером. Для этого перейдем в другого сюдоера, и выполним от имени того другого сюдоера команду:

    sudo gpasswd -d tomcat sudo Удаление пользователя tomcat из группы sudo

    Здесь у команды gpasswd ключ -d означает удалить юзера tomcat из группы sudo .
    И последнее что осталось нам сделать это скопировать все веб-приложения из каталога /home/tomcat/bin/apache-tomcat-7/webapps в наш созданный каталог /home/tomcat/webapps :

    cp -r /home/tomcat/bin/apache-tomcat-7/webapps/* /home/tomcat/webapps

    Запуск веб-сервера tomcat

    Все готово для запуска веб-сервера tomcat . Перейдем в каталог /home/tomcat/bin/apache-tomcat-7/bin и запустим скрипт ./startup.sh :

    Cd /home/tomcat/bin/apache-tomcat-7/bin ./startup.sh Using CATALINA_BASE: /home/tomcat/bin/apache-tomcat-7 Using CATALINA_HOME: /home/tomcat/bin/apache-tomcat-7 Using CATALINA_TMPDIR: /home/tomcat/bin/apache-tomcat-7/temp Using JRE_HOME: /usr/java Using CLASSPATH: /home/tomcat/bin/apache-tomcat-7/bin/bootstrap.jar:/home/tomcat/bin/apache-tomcat-7/bin/tomcat-juli.jar Tomcat started.

    Проверим, что tomcat запущен, для этого перейдем по линке http://localhpst:8080 и должна появится стартовая страница tomcat :

    Теперь зайдем в админку, жмем на батон

    В статье рассказывается о том, как поднять на своем компьютере локальный java сервер и прописать простейшее web-приложение.

    Tomcat нужен для работы Java сервера с применением сервлетов . Если грубо говоря, то сервелеты это аналог тех же php скриптов. На сервер Tomcat от клиентов приходят запросы. В зависимости от них сервер запустит те или иные сервелеты, которые сформируют ответы в виде текстовых файлов. Чаще всего это html страницы.

    Установка JDK

    Для работы современных версий Android Studio или IntelliJ IDEA не нужно производить дополнительные действия, чтобы программы могли найти JDK и запускать java приложения. Но мы будем на данный момент компилировать сервлеты вручную, так что для удобства мы пропишем путь к папке JDK в системную переменную Path в Windows. Ниже приведена инструкция для Windows 10.

    У меня JDK находится в папке C:\Program Files\Java\jdk1.8.0_121\bin .

    Кликните правой кнопкой по иконке Этот компьютер и перейдите в Свойства .

    Внимание! Не вздумайте удалять всё содержимое переменной Path . Иначе у операционной системы возникнут очень большие проблемы. Вы должны дописать в эту переменную нужный путь.

    Установка Apache Tomcat

    Скачиваем установочный файл.

    Устанавливаем Tomcat.

    Эти компоненты должны быть выбраны.

    Для учебных целей можно параметры оставить по умолчанию.

    После этого в трее должен появится значок запущенного сервиса.

    В папке webapps создадим папку с названием web-приложения. Допустим, testingapp .