Rob*_*ert 1 debian init-script systemd services nginx
使用 Debian 9 stable,我想在启动 NGINX 进程和 shorewall 防火墙之前启动自定义 shell 脚本:
\n\n/etcNGINX 配置、shorewall 配置和/etc/hostssync,不确定这是否是个好主意\n\n\nsystemctl 列表依赖项
\n
\n default.target
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80display-manager.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\ x94\x80systemd-update-utmp-runlevel.service
\n\xe2\x97\x8f\xe2\x94\x94\xe2\x94\x80multi-user.target
\n\xe2\x97\x8f\xe2\x94\x9c\ xe2\x94\x80console-setup.service
\n\xe2\x97\x8f\xe2\x94\x9c\xe2\x94\x80cron.service
\n\xe2\x97\x8f\xe2\x94\x9c\xe2\x94\ x80dbus.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80dropbear.service
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80myservice.service\xe2\ x80\x82\xe2\x80\x82\xe2\x80\x82<-- 我的服务(使用 systemctl 启用创建的链接)
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80networking.service
\ n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80nginx.service\xe2\x80\x82\xe2\x80\x82\xe2\x80\x82\xe2\x80\x82\xe2\x80\ x82\xe2\x80\x82\xe2\x80\x82<-- 在 myservice 之后执行
\n [...]
\n \xe2\x97\x8f \xe2\x94\x9c\xe2\x94\x80basic.target
\n \xe2\x97\x8f \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80-.mount
\n \xe2\x97\x8f \xe2\x94\x82 \xe2\x94\x9c\ xe2\x94\x80myservice.service\xe2\x80\x82<-- 我的服务(使用 systemctl 启用创建的链接)
\n \xe2\x97\x8f \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\ x80shorewall.service\xe2\x80\x82 <-- 在 myservice 之后执行
\n\n\n[单位]
\n
\n 描述=我的启动服务
\n 需要=shorewall.service nginx.service
\n Before=shorewall.service nginx.service
\n
\n [服务]
\n RemainAfterExit=yes
\n ExecStart=/usr/local /bin/myservice start
\n ExecStop=/usr/local/bin/myservice stop
\n
\n [安装]
\n WantedBy=多用户.target
\n WantedBy=basic.target
日志:
\n\n\n\n\nJournalctl\n [...]
\n
\n 10 月 12 日 11:31:43 server-dev nginx[448]: nginx: 在 /etc/nginx/sites- 的上游“server-dev.com”中找不到 [emerg] 主机启用/默认:33
\n 10 月 12 日 11:31:43 server-dev nginx[448]: nginx: 配置文件 /etc/nginx/nginx.conf 测试失败 <== NGINX: BAD
\n 10 月 12 日 11:31: 43 server-dev systemd[1]: nginx.service: 控制进程已退出,code=exited status=1
\n Oct 12 11:31:43 server-dev systemd[1]: 无法启动高性能 Web 服务器和反向代理服务器。
\n 10 月 12 日 11:31:43 server-dev systemd[1]: nginx.service: 单元进入失败状态。
\n 10 月 12 日 11:31:43 server-dev systemd[1]: nginx.service: 失败,结果为“退出代码”。
\n 10 月 12 日 11:31:43 server-dev systemd[1]:已达到目标多用户系统。
\n 10 月 12 日 11:31:43 server-dev systemd[1]:已达到目标图形界面。
\n 10 月 12 日 11:31:43 server-dev systemd[1]:开始更新有关系统运行级别更改的 UTMP...
\n 10 月 12 日 11:31:43 server-dev systemd[1]:开始更新有关系统运行级别的 UTMP变化。
\n 10 月 12 日 11:31:43 server-dev server[423]: DO: server start DONE <== END OF SCRIPT myservice
\n 10 月 12 日 11:31:43 server-dev shorewall[449]: 使用 Shorewall 5.0 编译.15.6... <== SHOREWALL:好
\n 10 月 12 日 11:31:44 服务器开发 shorewall[449]:正在处理 /etc/shorewall/shorewall.conf...\n
10 月 12 日 11:31:44 服务器-dev shorewall[449]:正在加载模块...
Shorewall在myservice执行后系统地正确启动。\nNginx大部分时间在myservice执行期间启动,\nbefore/etc正确覆盖(覆盖?),\n因此无法正确初始化。
我也尝试过改变
\n\n\n\n\n[安装]
\n
\n WantedBy=default.target
并改变
\n\n\n\n\n[单位]
\n
\n 之前=多用户.目标
它也不起作用。
\n\n如何确保 nginx 和 shorewall 在 myservice 执行后启动?
\n如果您不指定 systemd 服务的类型,则默认为Type=simple. 这意味着服务在其主服务进程被分叉时被视为启动(此时它甚至还没有执行命令ExecStart)。您可能想改用Type=oneshot它,它会等待ExecStart命令退出,然后再考虑服务已启动。请参阅man systemd.service了解更多详情。
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |