如何更改 systemd 服务的启动顺序

J. *_*oux 5 server nginx dnsmasq systemd


我正在运行的家庭网络上的 Ubuntu 18.04 服务器:

  • 用于 DHCP 和 DNS 的 dnsmasq
  • nginx 作为某些 Web 应用程序的反向代理(在 localhost 和其他主机上运行)

nginx 反向代理配置使用主机名,例如:

location / {
        proxy_pass http://nas.mydomain.com:8080;
Run Code Online (Sandbox Code Playgroud)

但是,在重新启动服务器时,nginx 尝试启动但由于无法解析其配置中的主机名而失败。如果我在启动后手动启动 nginx,它会正常启动。

这让我相信 nginx 在 dnsmasq 可用于解析主机名之前启动。

有没有办法强制 nginx 在 dnsmasq 之后启动?

小智 4

Systemd 尝试并行启动多个服务,除非您告诉它不要这样做。如果您有依赖项,则需要在服务定义文件中使用 After 等指令。

这种情况下,如果需要在dnsmasq服务运行后启动nginx服务,可以添加

After=dnsmasq.service
Run Code Online (Sandbox Code Playgroud)

进入 nginx.service 文件。

希望这可以帮助。