Назад | Перейти на главную страницу

Как правильно запустить Tomcat под другим пользователем (Centos 7)?

Я запускаю Tomcat 7 на своей машине Centos 7 с systemd, под пользователем webapp отличается от значения по умолчанию tomcat. Думаю, это должно быть легко, но у меня проблемы.

Из того, что я вижу, есть три места, где можно указать пользователя и группу:

  1. /etc/tomcat/tomcat.conf
  2. /etc/sysconfig/tomcat
  3. /lib/systemd/system/tomcat.service

Самый последний, tomcat.service, действительно имеет настройки по умолчанию

User=tomcat
Group=tomcat

который я могу изменить. Проблема в том, что tomcat.service файл перезаписывается при каждом обновлении. Этого не происходит с tomcat.conf (здесь tomcat.conf.rpmnew вместо него создается). Однако я не понимаю, как я могу там переопределить пользователя.

Мне такое поведение кажется странным. Означает ли это, что я не должен редактировать tomcat.service? Какой рекомендуемый способ настройки tomcat.service?

Согласно systemd документация вы должны создать каталог /lib/systemd/system/tomcat.service.d и положить туда файл с .conf расширение, затем добавьте в этот файл необходимые изменения для пользователя и группы:

[Service]
User=webapp
Group=webapp

После этого ваши изменения в службе будут постоянными, потому что они будут храниться в отдельном месте, которое не изменится после обновления. Это решение было создано для таких случаев, как вы, когда вы хотите изменить параметры службы в .service файл, но после каждого обновления он перезаписывается новым файлом.

Файл /lib/systemd/system/tomcat.service не следует менять. Если вам нужно их перезаписать, просто скопируйте файл в /etc/systemd/system/tomcat.serviceи отредактируйте /etc/systemd/system/tomcat.service файл.

После изменения файла попросите systemd перезагрузить конфигурацию:

systemctl daemon-reload

Измените разрешения, чтобы у пользователя был доступ к файлам tomcat (chown, chmod, setfacl) Затем перезапустите службу: systemctl restart tomcat

Редактировать: У вас может быть другой $ CATALINA_BASE, указывающий на подпапку в / opt, где находится ваше приложение. $ CATALINA_HOME будет указывать на то, где установлен tomcat при помощи rpm. Таким образом, когда вы обновляете пакет tomcat, все экземпляры tomcat будут обновлены. Найдите "Расширенная конфигурация - несколько экземпляров Tomcat" в https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt Если вы используете эту настройку, $ CATALINA_HOME должен принадлежать пользователю root без разрешения на запись для tomcat или любого другого пользователя, а $ CATALINA_BASE должен принадлежать пользователю вашего приложения (например, tomcat-myapp)