Certbot和nginx版本:
使用certbot.eff.org安装指南安装certbot。
获取ssl证书可以正常工作:
certbot --nginx
但是,在更新cerbot认证
certbot renew --dry-run
nginx无法启动导致:
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
我尝试在/etc/letsencrypt/renewal/*com.conf/
installer=nginx
在/etc/letsencrypt/renewal-hooks/pre/
和/etc/lestencrypt/renewal-hooks/post/
中添加帖子和预挂钩以停止和启动nginx服务。
似乎nginx无法正常启动或无法正常停止。 续订完成后,nginx失败(code = exited,status = 1 / FAILURE)
Nginx错误日志显示:
答案 0 :(得分:3)
我在Ubuntu 16.04上遇到了相同的问题
我刚刚删除了/etc/letsecrypt/renewal/*.conf
中的post和pre挂钩,并将身份验证器更改为nginx
-我有两个条目standalone
。
现在可以正常工作了。
编辑:
Recommended way更新续订配置是使用以下方法重新发布新证书:
certbot -i nginx -d example.com -d www.example.com certonly
答案 1 :(得分:0)
尝试执行:
sudo service nginx restart
然后测试您的nginx配置文件(直到看到“ nginx:配置文件/etc/nginx/nginx.conf测试成功”)
sudo nginx -s reload -t
请注意证书和其他内容的路径
,然后重新加载没有-t
选项的配置:
sudo nginx -s reload
不建议在/etc/letsencrypt/
中修改配置文件,但是创建(如果它不存在)并修改 cli.ini 文件在这里是可行的我。您可以在此文件中一次指定post-hook
,它将对您的所有证书有效,请参阅我的当前文件:
# /etc/letsencrypt/cli.ini
max-log-backups = 0
authenticator = webroot
webroot-path = /var/www/html
post-hook = service nginx reload
text = True
我希望这会对以后的读者有所帮助。解决方案的来源是here (不过该文章是俄语的)
答案 2 :(得分:0)
我有同样的错误...
当我安装 certbot 时,我按照说明输入了一个 cronjob (5 3 15 * *):
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
今天早上nginx死了,日志显示
open() "/run/nginx.pid" failed (2: No such file or directory)
我没有把两者联系起来,但我是否理解 certbot 触发 nginx 失败?