Не запускается tomcat ubuntu

Обновлено: 01.07.2024

Tomcat на Ubuntu не устанавливается из репозитория (в отличие от некоторых других дистрибутивов Linux, например, CentOS). Поэтому в данной инструкции мы выполним ручную установку — развертывание дополнительных компонентов (Java), загрузку и распаковку пакета веб-сервера Tomcat, а также настройку его автоматического запуска в случае сбоя или после перезагрузки системы. На момент обновления инструкции использовался Tomcat версии 10 и Ubuntu 20.04.

Подготовка системы

Обновляем список пакетов в репозиториях:

Задаем имя серверу:

Настраиваем часовой пояс, например:

timedatectl set-timezone Europe/Moscow

* где Europe/Moscow — московское время. Список всех возможных зон смотрим командой timedatectl list-timezones.

Устанавливаем сервис для автоматической синхронизации времени, а также разрешаем его автозапуск:

apt-get install chrony

systemctl enable chrony

Если мы используем брандмауэр, необходимо открыть порт 8080:

iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

* 8080 — порт по умолчанию, на котором работает Tomcat. Если мы заходим поменять данный порт, то нужно будет открыть именно его.

Сохраняем правила — для этого устанавливаем утилиту iptables-persistent:

apt-get install iptables-persistent

Если в процессе установки мы отказались сохранять правила, выполняем команду:

Можно приступать к установке Java.

Подготовка к установке

Для работы веб-сервера нам необходимы Java и пользователь, под которым будет работать Tomcat.

Установка JAVA

Мы установим пакет openjdk. Для этого вводим команду:

apt-get install default-jdk

* будет установлена последняя версия, максимально совместимая с используемой версией операционной системы Ubuntu.

Если в системе окажется несколько версий java, выберем последнюю. Для этого вводим команду:

update-alternatives --config java

. и выбираем в списке соответствующий вариант.

Проверяем используемую версию java:

Мы должны увидеть что-то на подобие:

openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 14.0.2+12-Ubuntu-120.04, mixed mode, sharing)

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

Создаем пользователя командой:

useradd tomcat -U -s /bin/false -d /opt/tomcat -m

* в итоге будет создан пользователь tomcat со следующими опциями:

  • -U — также будет создана группа с таким же именем, что и пользователь.
  • -s /bin/false — запрещает пользователю интерактивный вход в систему.
  • -d /opt/tomcat — указывает путь до домашней директории пользователя.
  • -m — сразу создает домашнюю директорию пользователю.

Можно приступать к установке веб-сервера Apache Tomcat.

Установка Tomcat

Переходим на страницу официального сайта веб-сервера. В меню слева выбираем необходимую версию Tomcat:

Переходим на страницу загрузки последней версии Tomcat

* на момент обновления статьи, последняя версия была 10.

Копируем ссылку на архив tar.gz:

Копируем ссылку на архив tar.gz с веб-сервером

Используя скопированную ссылку, скачиваем архив на наш сервер:

Распаковываем содержимое архива в каталог /opt/tomcat:

tar zxvf apache-tomcat-*.tar.gz -C /opt/tomcat --strip-components 1

Готово. Можно запустить сервер командой:

Стартовая страница Tomcat Server

Наш сервер работает.

Посмотреть версию установленного программного обеспечения можно командой:

java -cp /opt/tomcat/lib/catalina.jar org.apache.catalina.util.ServerInfo

Мы должны увидеть что-то на подобие:

Настройка автозапуска

Для начала, остановим работу Tomcat:

Поменяем владельца для всех файлов в каталоге /opt/tomcat:

chown -R tomcat:tomcat /opt/tomcat

Создадим конфигурационный файл для нового юнита:

[Unit]
Description=Apache Tomcat Server
After=network.target

[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/default-java"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
RestartSec=10

* где обращаем внимание на:

  • User/Group — пользователь и группа пользователя, от чьего имени будет работать сервис.
  • Environment — переменные окружения. В нашем примере задается несколько для нормальной работы Java и Tomcat.
  • ExecStart/ExecStop — пути к скриптам, которые запускают или останавливают работу службы веб-сервера.
  • Restart/RestartSec — задают поведение сервиса при необходимости выполнить перезапуск. В нашем примере выполнять при сбое с интервалом в 10 секунд.

Из данных опций, возможно вам захочется поменять CATALINA_OPTS, например, задать другие значения для выделения памяти или указать определенный порт. Остальные опции можно оставить.

Перечитываем новый конфигурационный файл в systemd:

Стартуем наш сервис:

systemctl start tomcat

Проверяем, что он запустился и работает:

systemctl status tomcat

Мы должны увидеть что-то на подобие:

• tomcat.service - Apache Tomcat Server
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2021-02-09 10:30:25 UTC; 22h ago
Main PID: 14645 (java)

При необходимости перезапуска сервиса, можно будет использовать команду:

systemctl restart tomcat

Теперь открываем нашу страницу по IP-адресу сервера — мы снова должны увидеть стартовую страницу Tomcat.

Доступ к Managing Tomcat

Мы можем использовать веб-интерфейс для управления Tomcat. Для этого используются кнопки на стартовой странице:

  • Server Status
  • Manager App
  • Host Manager

По умолчанию, доступ закрыт в данные разделы. Пошагово, настроим доступ в каждый из них.

Создание служебного пользователя

Создаем пользователя, под которым мы будем авторизовываться в системе.

Внутрь раздела tomcat-users добавим:

* в данном примере мы создадим пользователя admin с паролем password и ролями admin-gui, manager-gui.

systemctl restart tomcat

Server Status и Manager App

Разделы позволяют получить доступ к статистике и управлению веб-приложениями. Они настраиваются вместе.

. и добавляем IP-адрес компьютера, с которого будем подключаться, например:

* в данном примере мы добавили адрес 192.168.1.15, которому разрешаем подключаться к статистике сервера и управлению веб-приложениями.

Пробуем зайти на стартовую страницу и перейти в раздел Server Status:

Server Status на стартовой странице Tomcat Server

Браузер запросит логин и пароль — вводим созданные ранее данные (admin и password). Мы должны увидеть статистику.

Теперь переходим в раздел Manager App:

Manager App на стартовой странице Tomcat Server

Мы должны увидеть раздел «Управление веб-приложениями Tomcat».

Host-Manager

В данном разделе можно управлять виртуальными серверами.

. и добавляем IP-адрес компьютера, с которого будем подключаться, например:

* в данном примере мы добавили адрес 192.168.1.15, которому разрешаем подключаться к управлению виртуальными серверами.

Пробуем зайти на стартовую страницу и перейти в раздел Host Manager:

Host Manager на стартовой странице Tomcat Server

Мы должны увидеть раздел «Управление виртуальными серверами Tomcat».

Поменять порт

По умолчанию, Tomcat запускается на порту 8080. Чтобы сменить номер, открываем файл:

I installed fresh linux Ubuntu 16.04 to setup a test developing environment.

I wanted to install

So i applied this tutorial and know that i dont have any previously java or tomcat installed before.

What is the problem

When i reached the step of starting tomcat , it failed. Failed to start apache tomcat web server tomcat.service: Control process exited, code=exited status=203.

Failed to start apache tomcat web server tomcat.service: Control process exited, code=exited status=203

8,286 12 12 gold badges 55 55 silver badges 82 82 bronze badges

3 Answers 3

How i tried to reproduce:

I followed the tutorial on a fresh virtual box on ubuntu 16.04.

And after i tried lot of the solution like the below:

  1. Playing with chmod and permissions.
  2. Un install and re install
  3. Updating my ubuntu
  4. Restarting my ubuntu
  5. Reloading services
  6. Double Quotation suggestions in .service paths in (/etc/systemd/system/tomcat.service).
  7. Commenting CATALINA_HOME line in .service file in (/etc/systemd/system/tomcat.service).
  8. Other googling solutions.

Solution:

From a very small comments from here ( Thanks for the hint )) ) After i got the fail i ran

You should run ‘ journalctl -xn ’ for more details about why Tomcat failed to start. Thanks.

It gave me the main reason here is screen shot and notice in RED.

Error with journalctl

  • ALL PATHS WAS WRONG ==> So i had to fix about five places for the right path. check Number 2 in Orange check image .

check number 2 orange

  • JAVA_HOMEPATH was wrong ==> so to change and find the correct one do this

how to find java path

Then change in tomcat.service check this image again this time look at 1 in bold yellow it should point to JDK.

number two in orange

Result:

So, apparently i had the path wrong , and it WORKED.

Summary:

When applying some tutorial keep an eye when you extract tomcat or etc.. because it may differ.

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

И я не могу понять это и найти какую-либо информацию об этом в Google, пытаясь с 3 разными версиями tomcat 7.0.8, 8.0.5, 8.0.9, и все это та же ситуация. Когда я увидел это, я подумал, что JDK устарел, потому что у меня было несколько его версий, затем я удалил все JDK и JRE с ПК и установил только последний 8u45, но безуспешно. Может ли кто-нибудь указать мне правильное направление?

2 ответа

Это ошибка, вызванная недопустимым параметром командной строки JVM. Вот один из способов воспроизвести это:

Проверьте параметры Tomcat Java. Запустите %CATALINA_HOME%\bin\tomcat8w.exe от имени администратора, перейдите на вкладку Java и посмотрите параметры Java. Если в значении -agentpath есть пробелы, заключите значение в двойные кавычки.

Если вы не можете найти ни одного такого аргумента при запуске Tomcat, проверьте конфигурацию своего сервера Tomcat в NetBeans. Перейдите в Window> Servers, выберите свой сервер в списке слева и нажмите вкладку Platform. Если поле «Параметры виртуальной машины» содержит значение для параметра -agentpath и в этом значении есть пробелы, убедитесь, что это значение заключено в двойные кавычки.

Параметр -agentpath также используется, если вы запускаете Tomcat в режиме профиля. Вот полная командная строка, которую я видел для запуска Tomcat в режиме профиля в NetBeans 8.0.2, записанная с помощью Sysinternals Process Explorer и отформатированная для удобства чтения:

Возможно, вы используете старую версию NetBeans, которая может генерировать недопустимое значение для параметра -agentpath .

Если все вышеперечисленное не выполнено, вам нужно будет выяснить, какая именно командная строка используется для запуска Java. Для этого отредактируйте catalina.bat ( C:\apache-tomcat-8.0.9\bin\catalina.bat ) в текстовом редакторе. Внизу четыре строки, начинающиеся с %_EXECJAVA% . Сделайте копию каждой строки, вставьте ее непосредственно над и добавьте echo перед ней. Поэтому вместо того, чтобы выглядеть примерно так (для ясности я сократил строки %_EXECJAVA% ):

Это должно выглядеть

Затем, когда вы запустите Tomcat, вы должны увидеть, что для запуска Java выполняется полная командная строка. Это должно появиться в окне журнала NetBeans сразу под строкой, начинающейся с Using CLASSPATH: .

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

Итак, вы используете JRebel.

Я не использую JRebel, и, поскольку у меня нет учетных записей в социальных сетях, я даже не могу зарегистрироваться для ознакомления с ним. Все, что я могу сделать, это установить подключаемый модуль JRebel NetBeans и просмотреть различные варианты.

Если вы используете Tomcat в качестве удаленного сервера, то в инструкциях по установке на вкладке «Запуск» параметров плагина JRebel («Инструменты»> «Параметры»> «JRebel»> «Запуск») есть ошибка. Строка 3 файла catalina-jrebel.bat , который вам предлагается создать, выглядит следующим образом:

Это, конечно, неправильно, если ваша переменная среды REBEL_HOME содержит пробел, как это, кажется, происходит на вашем компьютере. Третья строка вышеуказанного пакетного сценария должна содержать кавычки вокруг значения параметра -javaagent , т. Е .:

Если вы запускаете Tomcat через IDE, предполагается, что JRebel настроит сервер автоматически. Если это то, что вы делаете, и у вас все еще не работает, я бы попросил поддержки у ZeroTurnaround, так как это проблема JRebel.

Между прочим, на вашем компьютере кажется, что переменная среды REBEL_HOME указывает куда-то под D:\Program Files\NetBeans 8.0.1 - я думал, вы сказали, что у вас установлен NetBeans 8.0.2?

Наконец, в крайнем случае попробуйте переустановить NetBeans в папку, в которой нет пробелов.

Вы должны заключить "C: \ Program Files" в кавычки или лучше установить tomcat в папку без пробелов в ее имени.

Значение 127 возвращается /bin/sh , когда данная команда не найдена в вашей системной переменной PATH и не является встроенной командой Shell. Другими словами, система не понимает вашу команду, потому что она не знает, где найти двоичный файл, который вы пытаетесь вызвать.

для получения дополнительной информации ССЫЛКА

  1. Отредактируйте /etc/systemd/system/Tomcat.service и удалите завершающий "jre /" пути Java_HOME.
  2. systemctl daemon-reload
  3. systemctl restart Tomcat

Что-то должно быть повреждено при установке Tomcat. Я не мог сделать apt-get, удалить Tomcat8 или apt-get, очистить Tomcat8. Я удалил папку conf и сохранил свой файл server.xml и папки webapps. Затем я смог выполнить чистку Tomcat с последующей новой установкой и заменой файла server.xml моим, и я снова запустился.

До сих пор не знаю, что повредило установку Tomcat, но я наконец смог двигаться дальше.

Спасибо всем за ваши предложения.

Я получил эту ошибку, потому что я устанавливал Java_HOME в /usr/share/Tomcat8/bin/setenv.sh . Сценарий служб для Tomcat /etc/init.d/Tomcat8 вместо этого требует, чтобы вы настроили среду Tomcat в /etc/default/Tomcat8 . Как только я поместил свои настройки в /etc/default/Tomcat8 , затем удалил /usr/share/Tomcat8/bin/setenv.sh Tomcat запустился просто отлично.

Причина в том, что /etc/init.d/Tomcat8 пытается выяснить, какая JVM используется, но игнорирует /usr/share/Tomcat8/bin/setenv.sh . Он использует информацию JVM для просмотра списка процессов и определения, запущен ли Tomcat. Если вы используете setenv.sh, Tomcat запускается с другой JVM, чем та, которую ожидает init.d. Затем он не видит его в списке процессов и сообщает, что не удалось запустить.

Привет все, у меня есть кое-что, что работает для меня, поэтому, пожалуйста, попробуйте мою процедуру

Первый сервисный файл goto в init.d

превратиться в исполняемый файл, добавив приведенный ниже код на Tomcat8

Иногда Java Home неправильно настроен в среде, поэтому экспортируйте Java home и задайте идентификатор процесса (PID) для Tomcat в файле Catalina.sh.

Добавьте следующие коды в начале файла catalina.sh

Для экспорта Java home используйте соответствующую версию Java, чтобы указать путь, который я фактически установил Java в/usr/Java /

На последнем шаге теперь добавьте pid Tomcat для catalina и добавьте следующий код после установки Java home

Теперь перейдите в терминал, чтобы запустить сервис Tomcat

Нам нужно перезагрузить систему deamon

это сработало для меня, не стесняйтесь задавать вопросы

это происходит в Ubuntu 15.04

Обычно в файлах/etc/default, которые включают/отключают задания enable = 1 | 0, в файлах/etc/default следует избегать настроек типа. Канонический способ включить/отключить службу независимым от системы init способом - update-rc.d enable | disable, который будет транслироваться в специфические для системы init действия, такие как добавление/удаление символических ссылок (SysV и systemd) или создание/удаление переопределения задания. файлы (выскочка). В частности, для systemd администраторы также часто вызывают systemctl enable | disable напрямую. Таким образом, эти настройки являются избыточными в/etc/default

Проблема связана с /etc/init.d/Tomcat8, Java определением папки

Читайте также: