web-dev-qa-db-fra.com

Erreur Certbot Apache "Le nom duplique la précédente définition du démon WSGI."

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.

19
Josh

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>
20
Josh

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>
6
Graham Dumpleton

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:

  1. Mettez un # devant la ligne 7.
  2. Exécutez à nouveau cerbot et demandez-lui de réinstaller le certificat existant pour vous. Il réussira cette fois.
  3. Modifiez le nouveau fichier de configuration que certbot a créé pour vous et décommentez la ligne (certbot aura copié pour vous l'intégralité du fichier de configuration d'origine, y compris les commentaires).
  4. Redémarrez Apache.
0
lxmmxl56