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'.
看来,在启动DNS还没有准备好,Nginx正在尝试查找我作为反向代理的主机名。
经过一番研究,事实certificatesystemd使用下面的文件来启动nginx
/lib/systemd/system/nginx.service
Ubuntu 15.04,Ubuntu 15.10,甚至nginx网站本身的文件都会使用下面的After行
After=network.target
这使得一个人认为networking应该已经准备好了。 但是,我find了链接http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ ,说
network.target在启动过程中意义不大。 它只是表示networkingpipe理堆栈已经达到了。
链接继续说
network-online.target是一个活动等待直到nework处于“up”的目标,其中“up”的定义是由networkingpipe理软件定义的。
所以我改变了使用后,而不是像
After=network-online.target
现在nginx在启动时启动正常。 我没有声称这是完全正确的解决scheme,因为有可能应该使用不同的After目标,在其他方面更正确,但是这似乎适用于最后几次重新启动。