私は、いくつかのDjangoアプリケーションをホストしたいEC2 AWSサーバーを持っています。これらのアプリはそれぞれ独自のURLを持っています。例えば、複数のWSGIアプリケーションをApache上の異なる仮想ホストとして提供
example1.com
example2.com
自体、example1.com
作品に。問題は、example2.com
を同時に処理することです。私はexample2.com
を訪問すると
、私はエラーを取得:
DisallowedHost at/
Invalid HTTP_HOST header: 'example2.com'. You may need to add 'example2.com' to ALLOWED_HOSTS.
Request Method: GET
Request URL: http://example2.com
Django Version: 1.9.13
Exception Type: DisallowedHost
Exception Value:
Invalid HTTP_HOST header: 'example2.com'. You may need to add 'example2.com' to ALLOWED_HOSTS.
Exception Location: /var/www/vhosts/example1/example1-env/lib/python3.5/site-packages/django/http/request.py in get_host, line 109
Python Executable: /usr/bin/python3
Python Version: 3.5.1
Python Path:
['/usr/lib64/python3.5',
'/usr/lib64/python3.5/plat-linux',
'/usr/lib64/python3.5/lib-dynload',
'/usr/local/lib64/python3.5/site-packages',
'/usr/local/lib/python3.5/site-packages',
'/usr/lib64/python3.5/dist-packages',
'/usr/lib/python3.5/dist-packages',
'/var/www/vhosts/example1/',
'/var/www/vhosts/example1/example1-env/lib/python3.5/site-packages']
Server time: Wed, 14 Jun 2017 20:31:27 +0000
あなたが見ることができるように、何とかApacheはそれがexample2.com
を提供していたときにexample1.com
の仮想環境を使用しようとしています。どうすればそれを修正できますか?それぞれには独自のvirtualenvを提供する必要があります。
<VirtualHost *:80>
# This is name based virtual hosting. So place an appropriate server name
# here. Example: django.devsrv.local
ServerName example1.com
WSGIDaemonProcess example1 python-home=/var/www/vhosts/example1/example1-env
WSGIProcessGroup %{GLOBAL}
# Insert the full path to the wsgi.py-file here
WSGIScriptAlias//var/www/vhosts/example1/example1/wsgi.py
<Directory /var/www/vhosts/example1/>
Require all granted
</Directory>
Alias /static/ /var/www/vhosts/example1/static/
<Directory /var/www/vhosts/example1/static/>
Order deny,allow
Allow from all
</Directory>
Alias /media/ /var/www/vhosts/example1/media/
<Directory /var/www/vhosts/example1/media/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
# This is name based virtual hosting. So place an appropriate server name
# here. Example: django.devsrv.local
ServerName example2.com
WSGIDaemonProcess example2 python-home=/var/www/vhosts/example2/example2-env
WSGIProcessGroup %{GLOBAL}
# Insert the full path to the wsgi.py-file here
WSGIScriptAlias//var/www/vhosts/example2/example2/wsgi.py
<Directory /var/www/vhosts/example2/>
Require all granted
</Directory>
Alias /static/ /var/www/vhosts/example2/static/
<Directory /var/www/vhosts/example2/static/>
Order deny,allow
Allow from all
</Directory>
Alias /media/ /var/www/vhosts/example2/media/
<Directory /var/www/vhosts/example2/media/>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
編集:
はここでApacheの設定ファイルである はコメントでいくつかの提案を読んでたので、私はこれに来ています。これはまだ動作しません。
ServerName example1.com
WSGIDaemonProcess example1 display-name=%{GROUP} python-path=/var/www/vhosts/example1/ python-home=/var/www/vhosts/example1/example1-env/
WSGIApplicationGroup %{GLOBAL}
WSGIProcessGroup example1
# Insert the full path to the wsgi.py-file here
WSGIScriptAlias//var/www/vhosts/example1/example1/wsgi.py process-group=example1
...
ServerName example2.com
WSGIDaemonProcess example2 display-name=%{GROUP} python-home=/var/www/vhosts/example2/example2-env/ python-path=/var/www/vhosts/example2/
WSGIApplicationGroup %{GLOBAL}
WSGIProcessGroup example2
# Insert the full path to the wsgi.py-file here
WSGIScriptAlias//var/www/vhosts/example2/example2/wsgi.py process-group=example2
このエラーは、仮想環境とは何の関係もありません。あなたはsettings.pyの許可されたホストにexample2.comを追加する必要があります。 – giaco
あなたはポイントがありません。エラーがexample1から来るので解決しませんenv Python – MadPhysicist
あなたは誤って '' WSGIProcessGroup''を設定しています。 ''%{GLOBAL} ''ではなく、仮想ホストのデーモンプロセスグループの名前でなければなりません。おそらく '' WSGIApplicationGroup%{GLOBAL} ''をお勧めしますが、それでも '' WSGIProcessGroup''が必要です。 http://blog.dscpl.com.au/2012/10/requests-running-in-wrong-django.htmlを読んでください。 –