On my Ubuntu 16.04 server, I have an Apache conf file at /etc/apache2/sites-enabled/000-default.conf
, which looks like this (abbreviated):
WSGIApplicationGroup %{GLOBAL}
<VirtualHost *:80>
ServerName example.com
WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
...
</VirtualHost>
It works fine in HTTP mode, but when I run $ sudo certbot --apache
to set up HTTPS, it fails with the error Syntax error on line 7 of /etc/apache2/sites-enabled/000-default.conf: Name duplicates previous WSGI daemon definition.
Line 7 is the line beginning with WSGIDaemonProcess
.
It turns out that if my Apache conf file 000-default.conf
only declares <VirtualHost *:80>...</VirtualHost>
, then Certbot duplicates it and creates a second Apache conf file called 000-default-le-ssl.conf
to define <VirtualHost *:443>...</VirtualHost>
.
The Name duplicates previous WSGI daemon definition
error appears because both Apache conf files have the same line defining WSGIDaemonProcess myprocess...
. This appears to be a known Certbot bug.
The workaround I've found is to define both VirtualHosts (80 and 443) in the same Apache conf file (so that Certbot doesn't create a second file), and to define WSGIDaemonProcess
outside both VirtualHosts, like this:
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
...
</VirtualHost>