У меня была та же проблема, и это был тот же источник ошибки: certbot выключал сервер nginx и не мог запустить его снова после обновления.
ПРОБЛЕМА:
Вы можете проверить, не столкнулись ли вы с той же проблемой, проверив следующие журналы. Первые журналы nginx:
tail -n 100 /var/log/nginx/error.log
Результат:
2019/02/05 12:07:37 [notice] 1629#1629: signal process started
2019/02/05 12:07:37 [error] 1629#1629: open() "/run/nginx.pid" failed (2: No such file or directory)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:80 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:443 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to [::]:443 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to 0.0.0.0:444 failed (98: Address already in use)
2019/02/05 12:07:38 [emerg] 1655#1655: bind() to [::]:444 failed (98: Address already in use)
[...]
2019/02/05 12:07:38 [emerg] 1655#1655: still could not bind()
2019/02/05 12:07:41 [alert] 1631#1631: unlink() "/run/nginx.pid" failed (2: No such file or directory)
Мы видим, что nginx безуспешно пытается перезапуститься.
Вы также можете проверить системный журнал:
tail -n 100 /var/log/syslog
И найдите ту же метку времени:
Feb 5 12:07:30 systemd[1]: Starting Certbot...
Feb 5 12:07:31 systemd[1]: Stopping A high performance web server and a reverse proxy server...
Feb 5 12:07:31 systemd[1]: Stopped A high performance web server and a reverse proxy server.
Feb 5 12:07:38 systemd[1]: Starting A high performance web server and a reverse proxy server...
Мы видим, что проблема связана с certbot.
РЕШЕНИЕ:
В моем случае у меня была старая версия certbot. Вы можете проверить свою версию, используя команду certbot --version
. В моем случае у меня было certbot 0.10.2
...
Итак, прежде всего, обновите приложение certbot и добавьте плагин nginx:
sudo apt-get update
sudo apt-get install certbot python-certbot-nginx
Проверьте вашу новую версию: certbot --version
-> certbot 0.28.0
.
Затем вам нужно будет изменить файлы конфигурации обновления в соответствии с новой версией и с помощью плагина nginx. Файл conf продлен в каталоге /etc/letsencrypt/renewal/*
. Обратите внимание, что документация certbot не рекомендует изменять их вручную ...
Я изменяю все файлы конфигурации обновления с:
# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/yourdomain
cert = /etc/letsencrypt/live/yourdomain/cert.pem
privkey = /etc/letsencrypt/live/yourdomain/privkey.pem
chain = /etc/letsencrypt/live/yourdomain/chain.pem
fullchain = /etc/letsencrypt/live/yourdomain/fullchain.pem
# Options used in the renewal process
[renewalparams]
authenticator = standalone
post_hook = service nginx start
account = yourkey
pre_hook = service nginx stop
installer = nginx
Кому:
# renew_before_expiry = 30 days
version = 0.28.0
archive_dir = /etc/letsencrypt/archive/yourdomain
cert = /etc/letsencrypt/live/yourdomain/cert.pem
privkey = /etc/letsencrypt/live/yourdomain/privkey.pem
chain = /etc/letsencrypt/live/yourdomain/chain.pem
fullchain = /etc/letsencrypt/live/yourdomain/fullchain.pem
# Options used in the renewal process
[renewalparams]
account = yourkey
server = https://acme-v02.api.letsencrypt.org/directory
authenticator = nginx
installer = nginx
(обратите внимание, что были изменены только строки аутентификатора версии и , добавлена строка server и pre_hook и post_hook строк было удалено).
Затем вы можете проверить, будет ли ваше следующее обновление работать гладко, имитируя обновление, используя следующую команду:
certbot renew --dry-run
Для каждого сертификата вы должны получить следующее: без красной ошибки :
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/yourdomain/fullchain.pem