作者:Turkey小白 | 来源:互联网 | 2023-01-05 10:45
在我的Ubuntu 16.04服务器上,我有一个Apache conf文件/etc/apache2/sites-enabled/000-default.conf
,看起来像这样(缩写):
WSGIApplicationGroup %{GLOBAL}
ServerName example.com
WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
...
它在HTTP模式下工作正常,但是当我运行$ sudo certbot --apache
设置HTTPS时,它会失败并显示错误Syntax error on line 7 of /etc/apache2/sites-enabled/000-default.conf: Name duplicates previous WSGI daemon definition.
第7行是以行开头的行WSGIDaemonProcess
.
1> Josh..:
事实证明,如果我的Apache conf文件000-default.conf
只声明...
,那么Certbot会复制它并创建一个名为define 的第二个 Apache conf文件.000-default-le-ssl.conf
...
在Name duplicates previous WSGI daemon definition
出现错误,因为这两个 Apache的conf文件具有相同的线定义WSGIDaemonProcess myprocess...
.这似乎是一个已知的Certbot错误.
我找到的解决方法是在同一个 Apache conf文件中定义VirtualHosts(80和443)(以便Certbot不创建第二个文件),并WSGIDaemonProcess
在两个VirtualHosts之外定义,如下所示:
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
ServerName example.com
...
ServerName example.com
...
certbot实际上获取证书,但由于您提到的原因而导致配置失败。我在httpd-le-ssl.conf中手动添加了配置,然后再次运行certbot(以防万一),并且工作正常。
2> Graham Dumpl..:
如错误所示,您不能WSGIDaemonProcess
多次使用相同的名称作为定义.它们必须对整个Apache实例都是唯一的.
如果你同时拥有80个443实例VirtualHost
用于相同ServerName
,你不应该创建一个单独WSGIDaemonProcess
的443实例.在80实例中定义它,并从443实例中按名称引用.这样,你分享80个443实例之间的相同的守护进程组VirtualHost
为同一ServerName
.
WSGIApplicationGroup %{GLOBAL}
WSGIRestrictEmbedded On
ServerName example.com
WSGIDaemonProcess myprocess threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
...
ServerName example.com
WSGIProcessGroup myprocess
...