2012-01-14 4 views
0

django/apache에서는 장고 앱의 일부분을 한 방법으로 배포하고 다른 일부는 다른 방법으로 배포 할 수 있습니까? 예를 들어 www.coolsite.com의 일반 사용자 인터페이스를 가지고 있지만 www.coolsite.com : 1234의 관리자보기에 대한 액세스 권한을 부여하고 싶다고 가정 해 보겠습니다. 하나의 앱 내에서 그 행마가 가능합니까?다른 포트에 관리 인터페이스 배포

또한 두 개의 다른 django 응용 프로그램을 다르게 배포 할 수 있습니까? (포트 80에 "웹"응용 프로그램을, 포트 8888에 "api"응용 프로그램을 갖고 싶다고합시다)?

답변

1

종류의 당신의 응답,

는 내가 다른 프로젝트에 응용 프로그램을 이동할 수 있습니다 알고 있지만 내가

감사 (그들이 설정과 모델을 공유)해야하지 않는 한 나는 그들을 분할하지 않을 문제.

대개의 경우 3 서버 설정 - dev, staging, production -을 사용하지만 때로는 으로 제작해야합니다. (실제로는 그렇게하는 것이 싫지만). 내가 그렇게 할 때 종종 Django dev 서버를 8000 (또는 무엇이든)에서 실행하고 연결합니다.

포트가 8000..8002 인 경우에만 인쇄하는 디버그 항목이 있습니다. 기술적으로 나는 완전히 다른 서버를 운영하고 있지만, 프로덕션과 동일한 설정/DB/코드를 사용하고 있습니다. 적절한 포트 범위를 테스트하는 settings.py에 DEBUG_PRINT 값을 설정하기 만하면됩니다.

귀하의 필요를 충족시키는 것처럼 들리니?

업데이트 :

ALLOW_ADMIN = '800' in HOST_PORT 

다음 urls.py에서이 같은 수행 할 수 있습니다 : settings.py에서

는이 같은 것을 할 수 있습니다

if settings.ALLOW_ADMIN: 
    urlpatterns += patterns((r'^admin/', include(admin.site.urls))) 
else: 
    urlpatterns += patterns((r'^admin/.*', 'views.no_admin')) 

을 그리고 당신이 할 수있는 views.no_admin에서 그들에게 소리 치거나 다른 서버에 대한 링크를 제공하십시오.

+0

다른 서버/인스턴스를 다른 서버에서 실행하는 것은 해결책 일 수 있지만, 한 포트에서만 관리 요청을 차단하는 방법을 알아 내야합니다. 나는 디버그에 대해서 말하고있는 것이 아니라, 유지 보수를 계속하고있다.관리자의 고객에게 IT 직원을 배치하고 싶습니다. – Goro

0

내 머리 꼭대기에서 생각할 수있는 쉬운 방법 중 하나는 여러 프로젝트에 대한 생각입니다. 코드가 소스 버전 관리 시스템에 있다면 (그리고 그 이유는 무엇입니까?), 동일한 분기 나 태그를 별도로 생성하여 각각 다른 방식으로 제공 할 수 있습니다. 즉, 포트 80, 포트 1 8000, 완전히 다른 도메인에 하나 등

당신이해야 할 일은 pull-specific urls.py (소스 버전 관리 시스템에서 무시할 수 있음)를 만들거나 사용 방법을 찾을 수 있다는 것입니다 local_urls.py와 같은 것 (결코 직접 시도하지 않았습니다). 각 버전에서 특정 환경에서 수행하거나 원하지 않는 URL 패턴을 설정/해제 할 수 있습니다. 포트 8000에서만 관리자 만 원하십니까? 해당 URL 패턴을 포트 8000에서 제공되는 pull에 넣으십시오.

0

여기에는 다중 프로세스/프로젝트가 필요하지 않은 또 다른 접근 방식이 있습니다.

class ProtectAdminMiddleware(object): 
    def process_request(self, request): 
     if request.path.startswith("/admin") and request.META["SERVER_PORT"] != "1234": 
      raise Http404 
관련 문제