Я запускаю Tomcat 7 на своей машине Centos 7 с systemd
, под пользователем webapp
отличается от значения по умолчанию tomcat
. Думаю, это должно быть легко, но у меня проблемы.
Из того, что я вижу, есть три места, где можно указать пользователя и группу:
/etc/tomcat/tomcat.conf
/etc/sysconfig/tomcat
/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)