- linux-notes.org
- Установка Tomcat в Unix/Linux
- Установка Tomcat в Debian/Ubuntu/CentOS/Fedora/RedHat/Gentoo/Arch
- Установка Tomcat в Mac OS X
- Установка Tomcat на другие Unix/Linux ОС
- Настройка Tomcat в Unix/Linux
- Запуск TOMCAT с SysV init
- Запуск TOMCAT с systemd
- Изменить порт в tomcat
- Создание виртуального хоста для tomcat
- Настройка SSL для Tomcat
- Безопасность Tomcat в Linux
- Добавить комментарий Отменить ответ
- tomcat — переменные CATALINA_BASE и CATALINA_HOME
- CATALINA_HOME против CATALINA_BASE
- Несколько экземпляров Tomcat
- Как проверить
- coreer
- Разница между CATALINA_HOME и CATALINA_BASE.
- Установка и настройка Apache Tomcat под Linux
- Подготовка
- Установка
- Настройка
linux-notes.org
Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования.
Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.
Установка Tomcat в Unix/Linux
Я стараюсь писать статьи со всем необходимым и чтобы снизить поиски траблошутов в интернете. Я расскажу как установить, настроить и работать с Apache Tomcat в различных Unix/Linux ОС.
Но перед тем как приступим к самой установке, проверяем, установлена ли JAVA на сервере и какая версия:
Если java не установлена в системе, то приступим к установке:
Для других Unix/Linux ОС мне не приходилось устанавливать. По мере возможности, я буду дополнять данный материал новой информацией.
PS: На момент написания статьи, самая актуальная версия — java8 ( 1.8).
Создание пользователя
В идеале, необходимо создать нового пользователя для запуска Tomcat. В этом примере я создам non-login пользователя «tomcat:
Установка Tomcat в Debian/Ubuntu/CentOS/Fedora/RedHat/Gentoo/Arch
Я описывал в своей статье, процесс установки tomcat для Ubuntu:
Установка для любого Unix/Linux примитивная — идем на официальный сайт и качаем новую версию томката. Я заюзаю самую последнюю ( но учитывайте дату написания статьи):
Старый архив удаляем:
Для удобства, переименуем данный томкат:
Меняем права на папку, для того чтобы новый пользователь (tomcat, которого создали в самом начале статьи) мог запустить Tomcat:
Для остановки, нужно убить процесс. Но для начала смотри что есть:
Я например, делал вот так:
Но это не удобно, немного ниже я расскажу как можно оптимизировать.
Установка Tomcat в Mac OS X
Для начала подключаем brew:
Выполним поиск пакета:
У меня имеется следующие версии:
Для установки используйте:
PS: Настройку я не выполнял, по этому — я пока-что упущу данную тему.
Установка Tomcat на другие Unix/Linux ОС
Для других Unix/Linux ОС, можно заюзать docker. Я мало где юзаю его, по этому — пока что нет данной инфы по установке. Но я надеюсь что я выложу.
Настройка Tomcat в Unix/Linux
И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:
PS: Вот довольно полезное чтиво:
Запуск TOMCAT с SysV init
Создадим init скрипт для запуска:
И приводим к виду:
Даем права на запуск ( на исполнение):
Добавляем службу в автозагрузку:
Открываем браузер и смотрим что вышло!
PS: По дефолту, нужно открыть URL-у на 8080-м порту. Я внизу статьи, расскажу как можно будет настроить томкат.
Вот полезное чтиво о том, как создавать SysV init файлы в Unix/Linux:
БУДЕТ, немного позже!
Запуск TOMCAT с systemd
И приводим к подобному виду:
Чтобы созданный файл применился, перезагрузим службу:
Чтобы добавить томкат в автозагрузку ОС, выполните:
Чтобы проверить статус, выполняем:
Как видим, все четко работает.
Вот полезное чтиво о том, как создавать SystemD unit файлы в Unix/Linux:
Изменить порт в tomcat
и меняем его, после чего — выполняем рестарт томката.
Создание виртуального хоста для tomcat
Виртуальный хостинг предоставляет нам возможность размещать несколько доменов (веб-сайтов) на одном сервере.
Я для примера, создал домен и повесил его на 192.168.1.100. Веб-апликейшены работают на tomcat 9 и исползуют 80-й порт. Я добавил 2 java-приложения через панель — Tomcat Admin. Теперь оба приложения работают по следующим URL-м:
Теперь мы хотим запускать оба веб-приложения на основных доменах (tomcat1.linux-notes.org и tomcat2.linux-notes.org). Таким образом, конечные пользователи могут получить доступ к веб-приложению, используя доменное имя.
И так, открываем файл:
И приводим к виду:
Суть надеюсь понятна и проста.
После чего, стоит выполнить перезагрузку томката. Я не буду повторятся как это делать, я описывал это в верху.
Настройка SSL для Tomcat
Знаю как, но пока-что не делал.
PS: Вот еще чтиво:
Безопасность Tomcat в Linux
Нужно упомянуть про несколько очень важных моментов по безопасности при работе с Tomcat. Рассмотренные выше «ручные» варианты подразумевают обычно запуск из-под root-пользователя. В результате, если вы ещё и стандартно в файле, задающем пользователей (/usr/local/tomcat9/conf/tomcat-users.xml) раскомментируете блок оных:
…или воспользуетесь распространёнными в интернете примерами получения админских прав типа:
Как-то так, статья «Установка Tomcat в Unix/Linux » завершена.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
tomcat — переменные CATALINA_BASE и CATALINA_HOME
У меня есть несколько экземпляров tomcat 6, работающих на одном сервере (Linux), и он работает, как ожидалось. Я пытаюсь выяснить , что стандартная практика в отношении устанавливая CATALINA_HOME и CATALINA_BASE переменные.
В моей установке tomcat у меня есть настройка, CATALINA_HOME чтобы указать на «общую» папку (скажем /tomcat6 ), и CATALINA_BASE переменная варьируется в зависимости от имени экземпляра (скажем /tomcat_instance1 , /tomcat_instance2 )
У меня такой вопрос:
- Мне действительно нужны две переменные?
- Или можно просто взять одну CATALINA_HOME и покончить с ней CATALINA_BASE (или наоборот)?
Если вы запускаете несколько экземпляров Tomcat на одном хосте, вы должны установить CATALINA_BASE равным каталогу . /tomcat_instance1 или . /tomcat_instance2 для каждого экземпляра, а CATALINA_HOME переменную среды — для общей установки Tomcat, файлы которой будут совместно использоваться двумя экземплярами.
CATALINA_BASE Среда не является обязательной , если вы используете один экземпляр Tomcat на хосте и по умолчанию CATALINA_HOME в этом случае. Если вы используете несколько экземпляров, они должны быть предоставлены.
Хорошее описание этой настройки содержится в RUNNING.txt файле в корне дистрибутива Apache Tomcat под заголовком Расширенная конфигурация — несколько экземпляров Tomcat.
CATALINA_HOME против CATALINA_BASE
Если вы запускаете несколько экземпляров, вам нужны только обе переменные CATALINA_HOME .
Другими словами: CATALINA_HOME является обязательным и CATALINA_BASE необязательным.
CATALINA_HOME представляет собой корень вашей установки Tomcat.
При желании Tomcat можно настроить для нескольких экземпляров, определив $CATALINA_BASE для каждого экземпляра. Если несколько экземпляров не настроены, $CATALINA_BASE то же самое, что и $CATALINA_HOME .
Запуск с отдельным CATALINA_HOME и CATALINA_BASE задокументирован в RUNNING.txt, в котором говорится:
В CATALINA_HOME и CATALINA_BASE переменных средах используются для определения местоположения Apache Tomcat и расположения его активной конфигурации, соответственно.
Вы не можете настроить CATALINA_HOME и CATALINA_BASE переменные в setenv скрипте, так как они используются , чтобы найти этот файл.
(4.1) Tomcat можно запустить, выполнив одну из следующих команд:
Несколько экземпляров Tomcat
Во многих случаях желательно иметь одну копию двоичного дистрибутива Tomcat, совместно используемую несколькими пользователями на одном сервере. Чтобы сделать это возможным, вы можете установить CATALINA_BASE переменную среды в каталог, содержащий файлы для вашего «личного» экземпляра Tomcat.
При работе с отдельным CATALINA_HOME и CATALINA_BASE файлы и каталоги разделяются следующим образом:
- bin — Только: setenv.sh (* nix) или setenv.bat (Windows), tomcat-juli.jar
- conf — Файлы конфигурации сервера (включая server.xml)
- lib — Библиотеки и классы, как описано ниже.
- logs — Файлы журнала и вывода
- webapps — Автоматически загружаемые веб-приложения
- work — Временные рабочие каталоги для веб-приложений
- temp — Каталог, используемый JVM для временных файлов>
- bin — Скрипты запуска и выключения
- lib — Библиотеки и классы, как описано ниже.
- endorsed — Библиотеки, которые отменяют стандартные «одобренные стандарты». По умолчанию его нет.
Как проверить
Самый простой способ проверить, что у вас CATALINA_BASE и CATALINA_HOME есть, запустив startup.sh , например:
Вы также можете проверить, где установлены файлы Tomcat, с помощью dpkg инструмента, как показано ниже (Debian / Ubuntu):
Источник
coreer
Just another WordPress.com site
Разница между CATALINA_HOME и CATALINA_BASE.
Тоесть у нас есть установленный томкат это CATALINA_HOME.
И есть к примеру две инстанции, которые храняться каждая в своем каталоге и являются каждая для себя ссылкой на свой каталог в переменной CATALINA_BASE.
Структура каталого каждой инстанции должна соответсвовать каталогу CATALINA_HOME:
setenv.sh в этом файле определяется сколько памяти выделить под данную инстанцию, настройки для нее сборщика мусора и т.д. catalina.sh проверяет есть ли этот файл в CATALINA_BASE/bin/setenv.sh и если есть вызывает его для настройки среды.
В CATALINA_BASE/conf/server.xml настраивается данная инстанция сервера, в первую очередь определяется порт, на котором будет работать данный сервер.
Дальше для каждой инстанции необходимо создать свой сервис в /etc/init.d/, в каждом файле запуска мы определем один и тот же CATALINA_HOME и каждый свой CATALINA_BASE.
Пару слов про обновеление томката, лучше всего в CATALINA_HOME хранить путь не на физическую место на диске, а на симлинку, которая будет меняться по мере обновления томката.
Например:
Есть инсталяция Томката в /usr/local/apache-tomcat-6.0.26.
Мы делаем не нее симлинку /usr/local/tomcat6. И во всех инстанциях Томаката ссылаемся на эту симлинку. Потом когда мы например обновим Томкат в новый каталог /usr/local/apache-tomcat-6.0.27, то мы просто изменим симлинку /usr/local/tomcat6 и на не нужно править каждый файл разных инстанций Томката.
Источник
Установка и настройка Apache Tomcat под Linux
Замысел написать эту статью про установку и настройку, наверное, одного и самых популярных веб-серверов на 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-репозиторий. Я так не делаю. Возможно это лично моя паранойя, но я стараюсь так не делать и делаю установку руками. Особенно если учесть, что установка заключается в том, чтобы скачать и распаковать архив.
Для этого заходим на сайт загрузки Oracle.
Выбираем jdk-XYZ-linux-x64.tar.gz файл. Правой кнопкой — сохранить ссылку.
Далее скачиваем архив:
$wget —header «Cookie: oraclelicense=accept-securebackup-cookie» [ссылка]
$wget —header «Cookie: oraclelicense=accept-securebackup-cookie» http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.tar.gz
Специально для параноиков, нужно проверить SHA-1 сумму (поскольку выкачиваем-то по голому http).
Смотрим что показалось на экране и сверяем значение, с тем что опубликовано на официальном сайте.
Для этого заходим на сайт на сайт загрузки и ищем строчку Checksum.
Например для jdk-8u73-linux-x64.tar.gz
она должна быть f4f1f7ab1b5986aa2ee2a2f035a2d7a8ab57a673bdee4fc51d8127dd84f423ae
Если в картинках, то так:
Загрузка Oracle JDK
$tar -xzf jdk-8u73-linux-x64.tar.gz -C /opt
По старой привычке я складываю всё в «/opt». После этого делаю симлинк.
$link -s /opt/jdk1.8.0_74 /opt/jdk
Установка
1. Загружаем Apache Tomcat с официального сайта.
Выбираем нужную версию, копируем ссылку на 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
Тоже самое в картинках:
Загрузка Apache Tomcat
2. Сервер можно распаковать туда же в /opt.
$tar -xzf apache-tomcat-8.0.33.tar.gz -C /opt $link -s /opt/apache-tomcat-8.0.33 /opt/tomcat
Также для удобства делаю симлинк, например tomcat, tomcat-dev, tomcat-8, tomcat-not-working и т.д. В зависимости от целей сервера.
Настройка
Переходим в папку /opt/tomcat/bin
Создаем файлик setenv.sh
Записываем в него:
Про этот файл можно почитать в документации: 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.
$apt-get install haveged
В принципе это опционально, можно просто подождать и проверить, как всё запустилось на 8080 порту.
Если все хорошо, двигаемся дальше.
Далее создаем специального пользователя для запуска сервера.
$groupadd tomcat $useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat $chown -R tomcat:tomcat /opt/tomcat
После этого проверяем, что всё запускается. Например так:
$sudo -u tomcat /opt/tomcat/bin/startup.sh $tail -f /opt/tomcat/catalina.log
Ждем пока не появится надпись, что сервер успешно запустился.
Дальше попробуем запустить на 80-ом порту. Поскольку для запуска на 80-ом порту нужен рут, а запускать из под рута это нарушение «техники безопасности», то это можно сделать быстрым хаком, перенаправив порты.
$iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-ports 8080
Естественно нужно убедиться, что у вас не установлен уже какой-нить веб-сервер (например apache или nginx), который работает на 80-ом порту.
Проверяем, что все нормально и если всё хорошо — сохраняем правило переброса портов.
$invoke-rc.d iptables-persistent save
Если сохранялка iptables не установлена — устанавливаем:
$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-ый порт).
— Закрывать доступ к служебным портам.
— Не оставлять дефолтных паролей.
— Не запускать непонятных и непроверенных программ.
Источник