Certbot renew: nginx: [error] open() “/run/nginx.pid” failed (2: No such file or directory)

ⅰ亾dé卋堺 提交于 2019-12-08 19:19:02

问题


Certbot and nginx versions:

certbot installed using certbot.eff.org install guide.

  • Certbot version: 0.22.2
  • Nginx version: 1.10.3

Getting ssl certificates works fine:

certbot --nginx

But, in renewal of cerbot certificated

certbot renew --dry-run

nginx fails to start causing:

nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)

I have tried changing post-hook and pre-hook in /etc/letsencrypt/renewal/*com.conf/

  • commenting installer=nginx
  • changing authenticator to nginx and standalone

Adding post and pre hooks in /etc/letsencrypt/renewal-hooks/pre/ and /etc/lestencrypt/renewal-hooks/post/ to stop and start nginx service.

Seems nginx is not starting properly or isn't stop properly. after renewal completes nginx fails with (code=exited, status=1/FAILURE)

Nginx error log show:

Error while certbot renew:


回答1:


I had the same issue on Ubuntu 16.04

I've just removed post and pre hooks in /etc/letsencrypt/renewal/*.conf and changed authenticator to nginx - I had in two entries standalone.

And it is working now fine.

Edit:

Recommended way to update renewal config is to reissue new certificate using:

certbot -i nginx -d example.com -d www.example.com certonly




回答2:


Try to execute:

sudo service nginx restart

Then test your nginx configuration file(s) (until you see "nginx: configuration file /etc/nginx/nginx.conf test is successful")

sudo nginx -s reload -t

Pay attention on paths to certificates, and other stuff

and then reload configuration without -t option:

sudo nginx -s reload

It's not recommended to modify configuration files in /etc/letsencrypt/ but creating (if it doesn't exist) and modifying cli.ini file here is working for me. You can specify post-hook in this file once and it will work for all your certificates, see my current file:

# /etc/letsencrypt/cli.ini
max-log-backups = 0
authenticator = webroot
webroot-path = /var/www/html
post-hook = service nginx reload
text = True

I hope this will help future readers. Solution source is here (however the article is in Russian)



来源:https://stackoverflow.com/questions/49571099/certbot-renew-nginx-error-open-run-nginx-pid-failed-2-no-such-file-or

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!