Sur mon serveur Ubuntu 16.04, j'ai un fichier de configuration Apache à /etc/Apache2/sites-enabled/000-default.conf
, qui ressemble à ceci (en abrégé):
WSGIApplicationGroup %{GLOBAL}
<VirtualHost *:80>
ServerName example.com
WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
...
</VirtualHost>
Cela fonctionne bien en mode HTTP, mais lorsque j'exécute $ Sudo certbot --Apache
pour configurer HTTPS, il échoue avec l'erreur Syntax error on line 7 of /etc/Apache2/sites-enabled/000-default.conf: Name duplicates previous WSGI daemon definition.
La ligne 7 est la ligne commençant par WSGIDaemonProcess
.
Il s'avère que si mon fichier de configuration Apache 000-default.conf
seulement déclare <VirtualHost *:80>...</VirtualHost>
, puis Certbot le duplique et crée un seconde fichier de config Apache appelé 000-default-le-ssl.conf
définir <VirtualHost *:443>...</VirtualHost>
.
Le Name duplicates previous WSGI daemon definition
une erreur apparaît car les deux Les fichiers de configuration Apache ont la même ligne définissant WSGIDaemonProcess myprocess...
. Cela semble être un bogue Certbot conn .
La solution de contournement que j'ai trouvée consiste à définir les deux VirtualHosts (80 et 443) dans le fichier de configuration Apache même ( afin que Certbot ne crée pas de second fichier), et pour définir WSGIDaemonProcess
en dehors des deux VirtualHosts, comme ceci:
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>
Comme le dit l'erreur, vous ne pouvez pas utiliser le même nom pour une définition WSGIDaemonProcess
plus d'une fois. Ils doivent être uniques pour l'ensemble de l'instance Apache.
Si vous avez à la fois 80 et 443 instances de VirtualHost
pour la même ServerName
, vous ne devez pas créer de WSGIDaemonProcess
distinct dans l'instance 443. Définissez-le dans l'instance 80 et référence par nom à partir de l'instance 443. De cette façon, vous partagez le même groupe de processus démon entre 80 et 443 instances de VirtualHost
pour le même ServerName
.
WSGIApplicationGroup %{GLOBAL}
WSGIRestrictEmbedded On
<VirtualHost *:80>
ServerName example.com
WSGIDaemonProcess myprocess threads=10 home=/home/ubuntu/myapp
WSGIProcessGroup myprocess
...
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
WSGIProcessGroup myprocess
...
</VirtualHost>
Le moyen de faire en sorte que cerbot le fasse pour vous et d'éviter l'erreur sans changer votre structure de configuration est de simplement commenter la ligne incriminée. Donc, dans ce cas, vous devez: