Certbot续订:nginx:[error] open()" /run/nginx.pid"失败(2:没有这样的文件或目录)

时间:2018-03-30 08:34:23

标签: nginx certbot renewal

Certbot和nginx版本:

使用certbot.eff.org安装指南安装certbot。

  • Certbot版本:0.22.2
  • Nginx版本:1.10.3

获取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
  • 将身份验证器更改为nginx和独立

/etc/letsencrypt/renewal-hooks/pre//etc/lestencrypt/renewal-hooks/post/中添加帖子和预挂钩以停止和启动nginx服务。

似乎nginx无法正常启动或无法正常停止。 续订完成后,nginx失败(code = exited,status = 1 / FAILURE)

Nginx错误日志显示:

nginx log image

certbot续订时出错: Certbot error log in renewal

3 个答案:

答案 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 失败?