与仅使用 systemd 相比,我从 JSVC 获得什么好处?
Tomcat 文档描述了编译和安装 JSVC 的过程,JSVC 可用于将 Tomcat 作为守护程序运行。根据我的理解,JSVC有两个好处:
- 它以 root 身份启动,允许使用特权端口(如 80 或 443)。
- 它创建一个“控制器进程”,该进程将监视“受控进程”(主Java线程)并在失败时重新启动该进程。
我一直在学习系统化,包括服务单元配置。基于我有限的理解,如果我设置(使用所需的用户名)并在我的配置文件中设置,systemd能够执行与JSVC相同的任务。User=tomcat
Restart=on-failure
tomcat.service
使用JSVC,我希望看起来像这样:tomcat.service
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Environment=CATALINA_PID=/var/run/tomcat.pid
Environment=JAVA_HOME=/path/to/java
Environment=CATALINA_HOME=/opt/tomcat
...
ExecStart=/opt/tomcat/bin/jsvc \
-Dcatalina.home=${CATALINA_HOME} \
-user tomcat \
-java-home ${JAVA_HOME} \
-pidfile ${CATALINA_PID} \
...
org.apache.catalina.startup.Bootstrap
ExecStop=/opt/tomcat/bin/jsvc \
-pidfile ${CATALINA_PID} \
...
-stop \
org.apache.catalina.startup.Bootstrap
[Install]
WantedBy=multi-user.target
使用systemd,我希望看起来像这样:tomcat.service
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
PIDFile=/var/run/tomcat.pid
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/path/to/java
Environment=CATALINA_HOME=/opt/tomcat
...
Restart=on-failure
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
我的偏好是只使用systemd,因为它已经存在,无论如何我都必须(应该)使用它。然而,我不确定我是否会错过使用JSVC的任何好处,而我忽略了这一点。
如果我想将 Tomcat 作为守护进程运行,JSVC 可以实现哪些是 systemd 无法实现的?
另外,如果 systemd 能够执行与 JSVC 和 JSVC 相同的任务,我还想询问您可能提供的任何配置技巧,以便仅使用 systemd 最好地实现 JSVC 的好处。