Tomcat 9 не выполняет setenv.sh при запуске

Вопрос или проблема

Я создал файл setenv.sh в папке CATALINA_BASE, которая находится по адресу /usr/share/tomcat9/, но сам setenv.sh находится в /usr/share/tomcat9/bin

Содержимое setenv.sh:

echo "HELLO IT'S WORKING"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+HeapDumpOnOutOfMemoryError"

Я сделал скрипт исполняемым с помощью chmod +x, но когда я перезапускаю Tomcat и проверяю логи, там нет упоминания об этих “флагах” или о выводе echo, который есть в скрипте. Вот что говорят логи:

options used: -Dcatalina.base=/usr/share/tomcat9 -Dcatalina.home=/usr/share/tomcat9 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat9/temp -Djava.util.logging.config.file=/usr/share/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

Также у меня нет других скриптов для запуска, таких как catalina.sh и т.д. У меня есть только setenv.sh

Нужно ли мне устанавливать catalina.sh тоже?
Неправильна ли моя папка CATALINA_BASE?
Или, может быть, setenv.sh нужны разрешения для выполнения?

Вероятно, setenv.sh должен находиться в $CATALINA_BASE/bin. Директория bin должна уже существовать.

Ответ или решение

Проблема с выполнением setenv.sh при старте Tomcat 9

Вы столкнулись с ситуацией, когда ваш скрипт setenv.sh, расположенный в папке /usr/share/tomcat9/bin, не выполняется при запуске Tomcat. Давайте рассмотрим, как правильно настроить этот скрипт и почему он может не срабатывать.

1. Структура каталогов Tomcat

Прежде всего, убедитесь, что структура вашего Tomcat правильная и соответствует рекомендуемым настройкам. Скрипт setenv.sh должен находиться в каталоге bin, который, как вы указали, уже присутствует в вашем CATALINA_BASE.

Проверьте расположение файлов:

  • CATALINA_BASE должен указывать на /usr/share/tomcat9.
  • Папка bin должна находиться по пути /usr/share/tomcat9/bin.

2. Содержимое и разрешения файла setenv.sh

Содержимое вашего файла setenv.sh выглядит верно, однако стоит проверить несколько моментов:

  • Убедитесь, что вы правильно отредактировали файл. Логика скрипта выглядит корректной:

    echo "HELLO ITS WORKING"
    export CATALINA_OPTS="$CATALINA_OPTS -XX:+HeapDumpOnOutOfMemoryError"
  • Убедитесь, что файл имеет права на выполнение. Чтобы проверить это, выполните команду:

    ls -l /usr/share/tomcat9/bin/setenv.sh

    Файл должен иметь права -rwxr-xr-x. Если это не так, выполните команду:

    chmod +x /usr/share/tomcat9/bin/setenv.sh

3. Логи при старте

Если после выполнения вышеуказанных шагов вы все равно не видите вывод от echo и не замечаете изменений в CATALINA_OPTS, это может быть связано с тем, что скрипты окружения, используемые для запуска Tomcat, не ссылаются на ваш setenv.sh.

Программа catalina.sh, которая инициализирует Tomcat, должна автоматически загружать setenv.sh из каталога bin. Однако, убедитесь, что вы запускаете Tomcat с помощью catalina.sh, например:

/usr/share/tomcat9/bin/catalina.sh start

4. Дополнительные рассуждения

  • Запуск Tomcat: Убедитесь, что вы запускаете Tomcat из правильного контекста. Если вы используете какие-либо специальные системы управления (например, systemd), убедитесь, что они настроены правильно. Иногда службы могут не использовать обычные скрипты запуска.

  • Проверка переменных окружения: После запуска Tomcat, проверьте, установлены ли переменные окружения, добавленные в setenv.sh, с помощью команды:

    echo $CATALINA_OPTS

    Это поможет определить, загрузился ли скрипт.

Заключение

Итак, следует проверить следующее:

  • Правильное размещение setenv.sh в каталоге bin.
  • Исполнительные права файла.
  • Правильный запуск Tomcat через catalina.sh.
    Если все вышеуказанное выполнено, ваш скрипт должен сработать без проблем. Если возникнут дополнительные трудности, рассмотрите возможность проверки системных логов для поиска ошибок, связанных с самим Tomcat или его инициализацией.
Оцените материал
Добавить комментарий

Капча загружается...