Pau*_*ul 5 ubuntu nginx systemd ubuntu-15.10 ubuntu-15.04
nginx 不会在启动时启动,但手动启动正常。日志说的是
nginx: [emerg] host not found in upstream "{some hostname}" in /etc/nginx/conf.d/some_site.conf
nginx: configuration file /etc/nginx/nginx.conf test failed
Failed to start A high performance web server and a reverse proxy server.
nginx.service: Unit entered failed state.
nginx.service: Failed with result 'exit-code'.
Run Code Online (Sandbox Code Playgroud)
似乎在启动时 dns 还没有准备好,nginx 正在尝试查找我作为反向代理使用的主机名。
Pau*_*ul 9
经过一番研究,发现 systemd 使用下面的文件来启动 nginx
/lib/systemd/system/nginx.service
Run Code Online (Sandbox Code Playgroud)
Ubuntu 15.04、Ubuntu 15.10 甚至 nginx 站点上的文件都说要使用如下所示的 After 行
After=network.target
Run Code Online (Sandbox Code Playgroud)
这使人认为网络应该启动并准备就绪。但是,我发现链接http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/说
network.target 在启动时没有什么意义。它仅表示网络管理堆栈在到达后已启动。
链接继续说
network-online.target 是一个主动等待网络“up”的目标,其中“up”的定义由网管软件定义。
所以我改变了 After use that 而不是
After=network-online.target
Run Code Online (Sandbox Code Playgroud)
现在 nginx 在启动时可以正常启动。我并不是说这是完全正确的解决方案,因为可能应该使用不同的 After 目标,这在其他方面会更正确,但这似乎适用于最后几次重新启动。
归档时间: |
|
查看次数: |
1921 次 |
最近记录: |