Проблемы с запуском Apache Certbot из-за порта, уже используемого для httpd.bin
Моя цель - запустить SSL на моем сервере для работы по HTTPS. Я пытаюсь запустить команду sudo certbot --apache
создать сертификат для моего сервера в рамках этих шагов https://certbot.eff.org/lets-encrypt/ubuntutrusty-apache.
У меня проблемы с этим, так как при запуске команды я получаю сообщение об ошибке
Error while running apache2ctl graceful.
httpd not running, trying to start
Action 'graceful' failed.
Address already in use: AH00072: make_sock: could not bind to address [::]:80
Когда я проверяю, что работает на порте 80, я вижу httpd.bin.
tcp6 0 0 :::80 :::* LISTEN 1372/httpd.bin
Но httpd.bin, как говорят, не работает в сообщении об ошибке выше. Я пытался убить процесс, запущенный на порте 80, но не смог. Я также пытался найти PID родительского процесса Apache ( http://www.informit.com/articles/article.aspx?p=26130&seqNum=3), однако у меня нет каталога / acpache в usr / local,
Как я должен продолжать убивать процесс? - Должен ли я сосредоточиться на убийстве этого процесса, или есть другой способ обойти эту проблему?
Другая сбивающая с толку вещь заключается в том, что когда я запускаю sudo service apache2 status, в результате apache2 не работает, но я не могу запустить этот процесс, так как используется порт 80 (не уверен, требуется ли Apache2 в моем сценарии).
Любая помощь будет принята с благодарностью!
1 ответ
В настоящее время letsencrypt
/certbot
с --apache
опция не работает так, как ожидается. Есть некоторые изменения, которые должны быть применены к механизму CertBot, который взаимодействует с Apache, но они еще не применены. Я не смог найти точную статью, которую прочитал в январе 2018 года, когда обнаружил эту проблему.
Ты можешь использовать letsencrypt
/certbot
с возможностью certonly
, С помощью этой опции инструмент запустит собственный временный веб-сервер для генерации файлов сертификатов. Порты 80
а также 443
должен быть открыт в вашем брандмауэре. И вы должны остановить Apache на некоторое время. К сожалению, вы должны сделать это, когда вы renew
сертификаты.
sudo service apache2 stop # Ubuntu 14.04
sudo systemctl stop apache2.service # Ubuntu 16.04 and above
sudo letsencrypt certonly --rsa-key-size 4096 --email user@example.com -d example.com -d www.example.com -d another.example.com
# Select the option: Automatically use temporary web server (standalone)
sudo service apache2 start # Ubuntu 14.04
sudo systemctl start apache2.service # Ubuntu 16.04 and above
Затем вам нужно вручную отредактировать файл конфигурации вашего виртуального хоста. Вот пример с постоянным перенаправлением с HTTP на HTTPS (замените example.com
с вашим полным доменным именем):
<VirtualHost *:80>
ServerName example.com
# Redirect Requests to HTTPS
Redirect permanent / https://example.com/
ErrorLog ${APACHE_LOG_DIR}/example.com.error.log
CustomLog ${APACHE_LOG_DIR}/example.com.access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName example.com
ServerAdmin admin@example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
DocumentRoot /var/www/html
<Directory /var/www/html>
# Conf directives...
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com.ssl.error.log
CustomLog ${APACHE_LOG_DIR}/example.com.ssl.access.log combined
</VirtualHost>
</IfModule>
Включите модуль SSL для Apache и перезапустите его еще раз.
Рекомендации:
Надеюсь, это поможет!