2010-07-29 4 views
1

현재 3 개의 사이트가 있는데, 예를 들어 site1, site2 및 site3이 있습니다. 각 사이트에는 인증이 필요합니다. site1과 site2는 모두 동일한 데이터베이스를 사용하여 "포트폴리오"데이터베이스가되고 site3은 다른 데이터베이스를 사용하여 "site3specific"데이터베이스가됩니다.다른 데이터베이스의 django에있는 여러 사이트간에 데이터 액세스 및 공유

모든 다른 사이트를 사용할 수있는 사용자의 로그인 자격 증명을 유지하기위한 공통 계정 데이터베이스를 사용할 계획입니다. 따라서 각 사이트 (예 : site1, site2 및 site3)는 사용자 로그인을 인증하기 위해 공통 계정 데이터베이스를 사용합니다. 개발, 테스트 및 라이브 환경의 세 사이트 모두 중복성없이 동일한 사용자 자격 증명을 공유 할 수 있으므로 별도의 데이터베이스에 사용자 정보를 보관할 계획입니다. 또한 각 사이트에는 개발, 준비 및 실제 환경에서 다르게 입력하거나 입력 할 수있는 자체 데이터가있을 수 있습니다.

또한 사이트간에 데이터를 공유 할 가능성이 있습니다.

누구든지 장고 + 아파치 + mod_wsgi에서 어떻게 이러한 작업을 수행 할 수 있는지 말해 주시겠습니까?

글로벌 공유 설정 파일, 모델 파일 및 URL 파일이 필요한지 여부를 알려주십시오. 그렇다면 내 전역 공유 설정 파일을 어떻게 수정해야하는지. 제발 조언.

+0

어떤 장고 버전입니까? –

+0

Python2.6 + django 1.2.1 + Apache 2.2 + mod_wsgi – Joseph

+0

사용자 인증/세부 정보에 LDAP 백엔드를 사용하는 옵션이 있습니까? Django로 끝내지는 못했지만 가능합니다. –

답변

0

이것은 현재 작동하는 방식입니다.

각 사이트는 httpd.conf 자체 VirtualHost 항목이, 각 응용 프로그램은 다음과 같이 보입니다 자체 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() 

가상 호스트

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> 

거기에서 데이터베이스 설정은 사용중인 데이터베이스 엔진에 따라 다릅니다.

희망이 도움이됩니다.

0

귀하의 요구 사항을 살펴보고 모든 사이트에 필요할 수도 있고, 그렇다면 싱글 사인온 (SSO) 서비스를 존중해야하는지 확인해야합니다. 이 경우 세션이 SITE_ID와 관련이 있으므로 사이트간에 세션이 전송되는 방식을 살펴볼 필요가 있습니다. 그래서, 그냥 좋은 일이 될 수 있습니다,하지만 큰 그림을보고 전에 너무 잘 거래를 파고 좋은 생각이 될 수도 있습니다.

0

이 사이트 (a.xx.com/b.xx.com/c.xx.com -> sesssion name = xx.com)에서 동일한 세션 이름을 설정했습니다. Django 프로젝트에서 각 사이트에 세 개의 설정 파일을 사용하고 manager.py를 사용하여 이러한 사이트를 구분했습니다. 마지막 단계는 별도로 시작하십시오.

관련 문제