web-dev-qa-db-ja.com

Certbot Apacheエラー「名前が以前のWSGIデーモン定義と重複しています。」

私のUbuntu 16.04サーバーでは、/etc/Apache2/sites-enabled/000-default.confにApache confファイルがあり、次のようになっています(省略形)。

WSGIApplicationGroup %{GLOBAL}

<VirtualHost *:80>
    ServerName example.com
    WSGIDaemonProcess myprocess user=ubuntu group=ubuntu threads=10 home=/home/ubuntu/myapp
    WSGIProcessGroup myprocess
    ...
</VirtualHost>

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で始まる行です。

19
Josh

私のApache confファイル000-default.confonly<VirtualHost *:80>...</VirtualHost>を宣言すると、Certbotはそれを複製してsecond000-default-le-ssl.confを定義する<VirtualHost *:443>...</VirtualHost>と呼ばれるApache confファイル。

bothApache confファイルにはName duplicates previous WSGI daemon definitionを定義する同じ行があるため、WSGIDaemonProcess myprocess...エラーが表示されます。これは Certbotの既知のバグ のようです。

私が見つけた回避策は、両方の仮想ホスト(80と443)をsameApache confファイル(Certbotが2番目のファイルを作成しないようにするため)、および次のように、両方のVirtualHostsの外側にWSGIDaemonProcessを定義します。

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

エラーが示すように、WSGIDaemonProcess定義に同じ名前を複数回使用することはできません。それらは、Apacheインスタンス全体で一意である必要があります。

同じVirtualHostに対してServerNameの80と443の両方のインスタンスがある場合、443のインスタンスに別個のWSGIDaemonProcessを作成しないでください。 80インスタンスで定義し、443インスタンスから名前で参照します。これにより、同じVirtualHostServerNameの80〜443個のインスタンス間で同じデーモンプロセスグループを共有できます。

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

Cerbotにこれを実行させ、構成構造を変更せずにエラーを回避する方法は、問題の行をコメント化することです。したがって、この場合は次のようにする必要があります。

  1. 行7の前に#を付けます。
  2. Cerbotを再度実行し、既存の証明書を再インストールするように依頼します。今回は成功します。
  3. Certbotが作成した新しい構成ファイルを編集して、行のコメントを外します(certbotは、コメントを含め、元の構成ファイル全体をコピーします)。
  4. Apacheを再起動します。
0
lxmmxl56