1

これはおそらく WSGI/Apache の設定の問題だと思います。

mod_wsgi を使用して Apache を介して提供される Django Web サイトがあります。同じコードベースから別のドメイン、データベース、および settings.py を介して 2 つ目の Web サイトを実行しようとしています。

私の WSGI 構成ファイルは、正しい個別の settings.py ファイルをロードしているようです。ただし、2 番目のドメインが新しいデータベースではなく元のデータベースからデータをロードしているように見えます。これは、Apache がセットアップされている本番環境でのみ発生しています。

私の settings.py ファイルは、common.py というファイルを介して共通情報をロードしてから、データベース名をロードします。

いえ

settings1.py

from common import *
DATABASES['default']['NAME'] = 'database1'
...

settings2.py

from common import *
DATABASES['default']['NAME'] = 'database2'
...

これらの設定は、それぞれの WSGI ファイルから読み込まれます。

www.domain1.com -> index1.wsgi:

import os, sys
sys.path.insert(0,'/location/to/code/')
sys.path.insert(0,'/location/to/code/application')
sys.path.insert(0,'/virtual/env/python2.7/site-packages/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings1'
os.environ['PYTHON_EGG_CACHE'] = '/location/to/.python-eggs'  

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

www.domain2.com -> index2.wsgi:

import os, sys
sys.path.insert(0,'/location/to/code/')
sys.path.insert(0,'/location/to/code/application')
sys.path.insert(0,'/virtual/env/python2.7/site-packages/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'application.settings2'
os.environ['PYTHON_EGG_CACHE'] = '/location/to/.python-eggs'  

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

ご覧のとおり、設定場所を変更しただけです。コードの位置はそのままです。settings1.py と settings2.py のプロパティにより、サーバー上の静的ファイルの保存と読み込みの場所が変わっていることから、この部分が機能していると確信しています。ただし、アプリケーションが呼び出す情報は、www.domain2.com から呼び出された場合でも、database1 から取得されます。そのデータベース名は、common.py ではなく、settings1.py でのみ使用できるため、これがどのように可能になったのかさえわかりません。誰でもこの問題について何か洞察がありますか?

編集:

ドメインをそれぞれの WSGI ファイルに誘導する Apache インクルードを追加しています。NGINXにポート80でリッスンさせ、関連するリクエストをApacheに転送しているため、仮想ホストはローカルホストでリッスンすることに注意してください。

AddHandler wsgi-script .wsgi 

NameVirtualHost 127.0.0.1:80
Listen 127.0.0.1:80

<IfModule mod_wsgi.c>
<VirtualHost 127.0.0.1:80>
    ServerName domain1.com
    ServerAlias www.domain1.com

    ErrorDocument 500 "We are experiencing difficulties.  Please contact webmaster@domain1.com if you feel you are receiving this page in error."

    WSGIScriptAlias / /path/to/index1.wsgi
    Alias /static/ /path/to/static_files/static/
    WSGIDaemonProcess djangodomain1 python-path=/virtual/env/python2.7/site-packages processes=8 threads=4 display-name=%{GROUP}
    WSGIProcessGroup djangodomain1
    WSGIApplicationGroup %{GLOBAL}

    ExpiresActive On
    ExpiresDefault "access plus 10 days"
    ExpiresByType text/css "access plus 1 second"
    ExpiresByType text/js "access plus 1 second"

    ServerAdmin webmaster@domain1.com
    UseCanonicalName Off
    CustomLog /path/to/logs/access_log combined
    CustomLog /path/to/domlogs/domain1.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."

    ErrorLog /path/to/logs/error_log

    ## User group1 # Needed for Cpanel::ApacheConf
    <IfModule mod_suphp.c>
        suPHP_UserGroup group1 group1
    </IfModule>
    <IfModule !mod_disable_suexec.c>
        SuexecUserGroup group1 group1
    </IfModule>

</VirtualHost>

<VirtualHost 127.0.0.1:80>
    ServerName domain2.com
    ServerAlias www.domain2.com

    ErrorDocument 500 "We are experiencing difficulties.  Please contact webmaster@domain1.com if you feel you are receiving this page in error."

    WSGIScriptAlias / /path/to/index2.wsgi
    Alias /static/ /path/to/static/
    WSGIDaemonProcess djangodomain2 python-path=/virtual/env/python2.7/site-packages processes=8 threads=4 display-name=%{GROUP}
    WSGIProcessGroup djangodomain2
    WSGIApplicationGroup %{GLOBAL}

    ExpiresActive On
    ExpiresDefault "access plus 10 days"
    ExpiresByType text/css "access plus 1 second"
    ExpiresByType text/js "access plus 1 second"

    ServerAdmin webmaster@domain1.com
    UseCanonicalName Off
    CustomLog /path/to/logs/domain2/access_log combined
    CustomLog /path/to/domlogs/domain2.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."

    ErrorLog /path/to/logs/domain2/error_log

    ## User group1 # Needed for Cpanel::ApacheConf
    <IfModule mod_suphp.c>
        suPHP_UserGroup group1 group1
    </IfModule>
    <IfModule !mod_disable_suexec.c>
        SuexecUserGroup group1 group1
    </IfModule>

</VirtualHost>
4

2 に答える 2