Не запускается 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:
* на момент обновления статьи, последняя версия была 10.
Копируем ссылку на архив tar.gz:
Используя скопированную ссылку, скачиваем архив на наш сервер:
Распаковываем содержимое архива в каталог /opt/tomcat:
tar zxvf apache-tomcat-*.tar.gz -C /opt/tomcat --strip-components 1
Готово. Можно запустить сервер командой:
Наш сервер работает.
Посмотреть версию установленного программного обеспечения можно командой:
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:
Браузер запросит логин и пароль — вводим созданные ранее данные (admin и password). Мы должны увидеть статистику.
Теперь переходим в раздел Manager App:
Мы должны увидеть раздел «Управление веб-приложениями Tomcat».
Host-Manager
В данном разделе можно управлять виртуальными серверами.
. и добавляем IP-адрес компьютера, с которого будем подключаться, например:
* в данном примере мы добавили адрес 192.168.1.15, которому разрешаем подключаться к управлению виртуальными серверами.
Пробуем зайти на стартовую страницу и перейти в раздел Host Manager:
Мы должны увидеть раздел «Управление виртуальными серверами 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.
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:
- Playing with chmod and permissions.
- Un install and re install
- Updating my ubuntu
- Restarting my ubuntu
- Reloading services
- Double Quotation suggestions in .service paths in (/etc/systemd/system/tomcat.service).
- Commenting CATALINA_HOME line in .service file in (/etc/systemd/system/tomcat.service).
- 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.
- ALL PATHS WAS WRONG ==> So i had to fix about five places for the right path. check Number 2 in Orange check image .
- JAVA_HOMEPATH was wrong ==> so to change and find the correct one do this
Then change in tomcat.service check this image again this time look at 1 in bold yellow it should point to JDK.
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. Другими словами, система не понимает вашу команду, потому что она не знает, где найти двоичный файл, который вы пытаетесь вызвать.
для получения дополнительной информации ССЫЛКА
- Отредактируйте /etc/systemd/system/Tomcat.service и удалите завершающий "jre /" пути Java_HOME.
- systemctl daemon-reload
- 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 определением папки
Читайте также: