6

Djangoに複数のドメインを追加する方法を知っている人はいますか?運が悪かったので、ここのガイドに従って、単一のDjangoプロジェクトで複数のサイトを試してみました。

私の設定は次のようになります

設定

/opt/django/project/settings.py

/opt/django/project/domain1_settings.py

URL

/opt/django/project/urls.py

/opt/django/project/domain1_urls.py

wsgi

/opt/django/project/domain1/domain1.wsgi

Apache

/etc/httpd/conf.d/django.conf

<VirtualHost * >
  ServerName domain1.co.uk
  ServerAlias www.domain1.co.uk direct.domain1.co.uk
  WSGIDaemonProcess domain1 processes=5 python-path=/usr/bin/python threads=1
  WSGIScriptAlias / /opt/django/project/domain1/domain1.wsgi
  ErrorLog logs/domain1-error.log
  CustomLog logs/domain1-access.log common
</VirtualHost>

Apacheを再起動してもエラーは表示されませんが、サイトにアクセスすると、メインのhttpd.conf内で構成されている(非django)ドメインに移動します。

ありがとう、

4

1 に答える 1

14

この回答は、2つのドメイン名がそれぞれ別々のDjangoプロジェクトを実行しているが、同じApacheサーバーからホストされていることを前提としています。そうでない場合は、質問を絞り込んでください。

まずVirtualHost、apache confに2つのエントリが必要です(サイトdomain1.co.ukを呼び出してdomain2.co.uk

# Virtual hosts setup
NameVirtualHost *
<VirtualHost *>
    ServerName domain1.co.uk

    WSGIDaemonProcess APPLICATION_NAME processes=5 python-path=/opt/django/project/domain1:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6     threads=1
    WSGIScriptAlias / /opt/django/project/domain1/domain1.wsgi
</VirtualHost>

<VirtualHost *>
    ServerName domain2.co.uk

    WSGIDaemonProcess APPLICATION_NAME_www processes=5 python-path=/opt/django/project/domain2:/home/USERNAME/webapps/APPLICATION_NAME/lib/python2.6 threads=1
    WSGIScriptAlias / /opt/django/project/domain2/domain2.wsgi
</VirtualHost>

また、2つのwsgiファイルが必要です(上記のconfで2つ指摘されています)

/opt/django/project/domain1/domain1.wsgi
/opt/django/project/domain1/domain2.wsgi

次のようになります

import os
import sys
from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings' 
# or     project.domain1_settings
application = WSGIHandler()

両方settings.pyの設定ファイルに違いがあることSITE_ID = 1、またはSITE_ID = 2正しいものを指していることを確認してくださいurls.py

ROOT_URLCONF = 'urls'

また

ROOT_URLCONF = 'domain1_urls'

この質問の多くは、個人的な経験とこのブログ投稿から得られたものです。あなたのプロジェクトディレクトリとドメイン名は少し紛らわしいようです。私はそれらをここの正しい場所に合わせるために最善を尽くしましたが、あなたはあなた自身の目的のために調整する必要があります。

追加

同じサーバーから2つのサイトを実行している場合は、プロジェクトディレクトリ、静的ファイルディレクトリ、設定ファイルなどの一貫性を維持するために細心の注意を払う必要があり/opt/django/project/settings.pyます /opt/django/project/domain1_settings.py。プロジェクトディレクトリが1つあること(/opt/django/project)。より強力な分離を強くお勧めします。上で説明したように、プロジェクト(domain1およびdomain2)をディレクトリに設定する可能性があります

/opt/django/project/domain1/
/opt/django/project/domain2/

対応する設定ファイル

/opt/django/project/domain1/settings.py
/opt/django/project/domain2/settings.py

これにより、どこで何が問題になっているのかを簡単に特定できるようになります。

于 2013-02-19T18:23:31.837 に答える