3

2 つのmod_wsgidjango サイトと 4 つのドメイン名があります。2 つのドメインが各サイトを指しています。Chrome で 4 つのドメインすべてを使用して 2 つのサイトにアクセスすると、すべて正常に動作します。しかし、ほとんどの場合だけです。ドメインを指定すると、間違ったサイトが突然表示されることがあります。完全に思いがけず。

動作が完全に予測できないため、これは非常に混乱しています。サイト A のいくつかの内部リンクをたどると、突然、404 errorサイト B からの URL が表示されます (当然、サイト A からの URL であるため、サイト B の URL で URL を解決できませんでした)。URL を変更せずにページを更新すると、突然サイト A が表示され404ます。

プロキシ (hidemyass.com など) で試してみましたが、同じ予測できない結果が発生します。

それについての唯一の予測可能性はapachectl -k graceful、その後しばらくの間サイトの切り替えがないことですが、その後は2ページごとに発生するだけです. これが偏見ではなかったことを保証します。

これが私のhttpdです:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.siteA.tk
    ServerAlias siteA.tk
    WSGIScriptAlias / /home/me/siteA/siteA/wsgi.py
    Alias /static/ /var/www/siteA/static/

</VirtualHost>

<VirtualHost *:80>
    ServerName www.siteA.com
    ServerAlias siteA.com
    WSGIScriptAlias / /home/me/siteA/siteA/wsgi.py

    Alias /static/ /var/www/siteA/static/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.siteB.tk
    ServerAlias siteB.tk

    WSGIScriptAlias / /home/me/siteB/siteB/wsgi.py

</VirtualHost>

<VirtualHost *:80>
    ServerName www.siteB.com
    ServerAlias siteB.com

    WSGIScriptAlias / /home/me/siteB/siteB/wsgi.py
</VirtualHost>


<Directory /var/www/siteA/static>
    Order deny,allow
    Allow from all
</Directory>



WSGIPythonPath /home/me/siteA:/home/me/siteB

助けてください。とても怖いです。私のコンピューターが Apache の悪魔に取り憑かれているようです。

4

3 に答える 3

0

まず、次のように同一のサイトを結合します。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.siteA.tk
    ServerAlias siteA.tk siteA.com www.siteA.com
    WSGIScriptAlias / /home/me/siteA/siteA/wsgi.py
    Alias /static/ /var/www/siteA/static/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.siteB.tk
    ServerAlias siteB.tk siteB.com www.siteB.com

    WSGIScriptAlias / /home/me/siteB/siteB/wsgi.py
</VirtualHost>

WSGIPythonPathまた、 Apache 構成で使用する代わりに、wsgi.pyファイルの先頭に次の行を追加します (この例は siteA 用で、siteB 用に適切に変更します)。

import sys
sys.path.append('/home/me/siteA')
于 2013-10-26T09:24:42.767 に答える
0

自己実現。

解決策は、django によって生成された wsgi.py ファイルを変更することでした。実際、コメントには具体的に次のように書かれています。

# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "siteA.settings"

私はすぐに単純なオプションを使用し、コメントの下の特定の行を次のように置き換えました

os.environ["DJANGO_SETTINGS_MODULE"] = "yoursite.settings"

Apacheを再起動します

$ apachectl -k graceful

問題が解決しました。

于 2013-10-26T20:35:16.523 に答える