Доступ и обмен данными между несколькими сайтами в Django из разных баз данных - PullRequest
0 голосов
/ 29 июля 2010

В настоящее время у меня есть три сайта, например, пусть это будут site1, site2 и site3.Каждый сайт требует аутентификации.И site1, и site2 используют одну и ту же базу данных, пусть это будет база данных «Портфолио», а site3 имеет разные базы данных, пусть это будет база данных «site3specific».

Я планирую создать базу данных Common Account для хранения учетных данных для входа.пользователей для всех различных сайтов.Таким образом, каждый сайт (то есть site1, site2 и site3) будет использовать базу данных Common Account для аутентификации имени пользователя.Я планирую хранить данные о пользователях в отдельной базе данных, поскольку все три сайта в среде разработки, тестирования и работы могут совместно использовать одни и те же учетные данные пользователя без избыточности.Кроме того, каждый сайт может иметь свои собственные конкретные данные, которые мы можем иметь или вводить по-разному в средах разработки, промежуточных и живых сред.

Также существует возможность обмена некоторыми данными между сайтами.

МожетКто-нибудь, пожалуйста, скажите мне, как я могу решить эту задачу в django + Apache + mod_wsgi.

Пожалуйста, посоветуйте, нужен ли мне глобально общий файл настроек, файл модели и файл URL-адресов.ЕСЛИ тогда, как мои файлы настроек общего доступа должны быть изменены.Пожалуйста, совет.

Ответы [ 3 ]

0 голосов
/ 15 июля 2011

Вы должны посмотреть на свои требования и посмотреть, все ли сайты, возможно, будут требовать, и если это так, уважать услугу единого входа (sso). Если это так, то вам может потребоваться посмотреть, как сеансы передаются между сайтами, так как сеансы зависят от SITE_ID. Так что, просто заставить его работать, это может быть хорошим началом, но хорошей идеей может быть рассмотрение общей картины, прежде чем вы начнете слишком углубляться.

0 голосов
/ 24 февраля 2012

Я установил одно и то же имя сеанса на этих сайтах (a.xx.com/b.xx.com/c.xx.com -> sesssion name = xx.com). В моем проекте Django я использовал три файла настроек для каждого сайта и использовал manager.py для разделения этих сайтов. Последний шаг, запустите их отдельно.

0 голосов
/ 30 июля 2010

Вот как мы сейчас работаем.

Каждый сайт имеет свою собственную запись VirtualHost в httpd.conf, и каждое приложение имеет свой собственный файл конфигурации django.wsgi, который выглядит примерно так (вы можетевероятно, используйте более простой):

import os, sys, site, glob

prev_sys_path = list(sys.path) 

root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
site.addsitedir(glob.glob(os.path.join(root_dir, 'venv/lib/python*/site-packages'))[0])
sys.path.append('/usr/local/django-apps')
sys.path.append('/usr/local/django-apps/AppName')

new_sys_path = [] 
for item in list(sys.path): 
    if item not in prev_sys_path: 
        new_sys_path.append(item) 
        sys.path.remove(item) 
sys.path[:0] = new_sys_path

os.environ['DJANGO_SETTINGS_MODULE'] = 'AppName.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

VirtualHost должен содержать такие записи:

    SetEnv DJANGO_ENV ${environment
    WSGIDaemonProcess appname user=apache group=apache processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup appname
    WSGIScriptAlias / /usr/local/django-apps/AppName/apache/django.wsgi
    <Directory /usr/local/django-apps/AppName/apache>
            Order deny,allow
    </Directory>

Оттуда настройка базы данных зависит от того, какой механизм базы данных вы используете.используя.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...