配置 systemd 以在提交新的源 .jar 文件时重新部署我的服务,我有一个与服务一起使用并使用PathChanged
指令的路径文件。我在某处读到安装部分应该位于路径文件中,而不是服务文件中,但我注意到这使得“systemctl启用MYAPP”变得不可能。服务器重新启动时,如果安装仅在 .path 文件中,我的应用程序能否正常启动?我还应该注意其他问题吗?
# myapp.path
[Unit]
Wants=myapp.service
[Path]
PathChanged=/srv/webapps/myapp/myapp.jar
[Install]
WantedBy=multi-user.target
答案1
将[Install]
部分放入myapp.path
.然后systemctl enable myapp.path
。
为什么不应该进去myapp.service
?
如果您将该[Install]
部分放入 中myapp.service
,那么服务将在multi-user.target
启动后立即启动。你可能不想要这个。您希望myapp.service
仅在触发它时才启动myapp.path
。
为什么要进去呢myapp.path
?
myapp.path
触发器myapp.service
。因此,myapp.path
如果你想让它做任何事情,就需要启动它。如果您希望它在系统启动时就开始监视该路径,那么添加安装部分就是解决方案。
为什么不起作用systemctl enable myapp
?
如果您未指定扩展名,.service
则假定为。因此systemctl enable myapp
与 相同systemctl enable myapp.service
。由于[Install]
中没有该节myapp.service
,所以启用失败。 systemctl enable myapp.path
是正确的做法。