2009-07-16 5 views
3

한 서버에 두 장의 Django 앱을 구성하려고했습니다. 다른 URL에서 액세스 할 수 있습니다 ... 아래 설정을 사용하면 첫 번째 앱에 액세스 할 수 있지만 나는 두 번째 응용 프로그램에 대한 설정을 포함시키는 방법을 놓치고 있습니다. 관리자 미디어는 ServerAlias에이 의 DocumentRoot를 로컬 호스트의 모든하나의 서버에 여러 개의 장고 앱 설정하기

NameVirtualHost *:8032 

서버 이름 localhost를 의 ServerAdmin [email protected]

DocumentRoot "/usr/local/www/djcode/test" 
<Directory "/usr/local/www/djcode/test"> 
    Options +ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 
Alias /site_media "/usr/local/www/djcode/test/site_media/" 

Alias /media "/usr/local/www/djcode/test/site_media/media/" 
WSGIDaemonProcess test user=www group=www processes=2 threads=5 
WSGIProcessGroup test 
AddHandler wsgi-script .wsgi 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /test.wsgi/$1 [QSA,L] 

서버 이름의 로컬 호스트에로드되지 않는 "/ usr/지방/www가/apache22/data "

답변

2

/etc/apache2/sites-available 폴더에 두 개의 구성 파일을 만듭니다. 사이트에 따라 적절한 논리 이름을 지정하십시오 (예 : example1.com, example12.com 등). a2ensite 명령을 사용하여 두 가지를 모두 활성화하고 Apache 서버를 다시 시작하십시오.

설정 파일의 각은 다음과 비슷한 모습이 될 것

<Virtualhost *:8032> 
ServerName localhost 
ServerAdmin [email protected] 
DocumentRoot "/usr/local/www/djcode/test" 
<Directory "/usr/local/www/djcode/test"> 
    Options +ExecCGI 
    Order allow,deny 
    Allow from all 
</Directory> 
Alias /site_media "/usr/local/www/djcode/test/site_media/" 

Alias /media "/usr/local/www/djcode/test/site_media/media/" 
WSGIDaemonProcess test user=www group=www processes=2 threads=5 
WSGIProcessGroup test 
AddHandler wsgi-script .wsgi 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /test.wsgi/$1 [QSA,L] 
</Virtualhost *:8032> 

당신은 정적 콘텐츠를 제공하기 위해 몇 가지 지침을 추가해야합니다. Apache에서 정적 컨텐츠를 서비스하는 것은 오버 헤드가 있으므로 Lighttpd 또는 Nginx와 같은 경량 웹 서버를 사용하여 서버를 서버에 연결하고 django 기반 컨텐츠를 제공하기 위해 역방향 프록시를 사용하여 Apache에 연결하는 것이 더 좋습니다. Here's a tutorial on using NginX

mod_wsgi를 사용하고 있으므로 두 사이트가 서로의 데이터에 액세스하지 못하도록 각 사이트를 다른 사용자로 실행할 수 있습니다. 두 사이트가 다른 이해 관계자에 속하는 경우 유용합니다.

1

가상 호스트를 여러 개 만들 수 있습니다 아파치에서, 각 응용 프로그램에 대해 다음을 수정

<VirtualHost *:80> 
    DocumentRoot /var/www 
    ServerName www.site.com 

     <location "/<name>"> 
      SetHandler python-program 
      PythonHandler django.core.handlers.modpython 
      SetEnv DJANGO_SETTINGS_MODULE <app name>.settings 
      PythonPath "['/path/to/app'] + sys.path" 
     </location> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /var/www/site2 
    ServerName www.site2.com 

     <location "/<name2>"> 
      SetHandler python-program 
      PythonHandler django.core.handlers.modpython 
      SetEnv DJANGO_SETTINGS_MODULE <app2 name>.settings 
      PythonPath "['/path/to/app2'] + sys.path" 
     </location> 
</VirtualHost> 

편집 : 또한 추가 각각의 가상 호스트는 모두 가상 호스트에 같은 별칭을 넣을 수 있습니다 관리자 미디어

<location "/media"> 
    SetHandler None 
</location> 

<location "/admin_media"> 
    SetHandler None 
</location> 

<locationmatch ".(jpg|gif|png)$"> 
    SetHandler None 
</locationmatch> 
+0

thnx ... 나는 이것을 시도 할 것입니다 ... 관리자 미디어는 어떻습니까? –

+0

이 구성은 mod_python 용이며 mod_wsgi를 사용하고 있습니다. –

0

에 다음, 또는 다른 설정이 필요하고 2 개의 다른 별칭이 필요한 경우

2

둘 다 동일한 VirtualHost에서 호스팅되기를 원하는지 확실하지 않습니다. 다른 사람들은 가상 호스트 (VirtualHost)를 별도로 사용하라고 말했지만 필요하지는 않으며 동일한 VirtualHost에서 수행 할 수 있습니다. 일부는 실제로 mod_wsgi를 사용할 때 mod_python을 사용하여 구성을 제공합니다. 정적 미디어에 대한 별칭 지정 문은 기술적으로 필요하지 않습니다. 저장 위치는 액세스에 사용할 수 있어야한다고 생각하는 URL에 따라 변경해야 할 수도 있습니다.

현재 구성에서 AddHandler를 사용하여 이미 여러 응용 프로그램을 호스팅 할 수있는 .wsgi 파일을 매핑했기 때문에 문서 디렉토리에 여러 .wsgi 파일을 만들고 다음과 같은 적절한 URL을 사용해야합니다. 그들을 액세스하십시오. 추가 구성은 URL에 '.wsgi'확장자를 지정하지 않아도 될 수 있습니다. 그들은 같은 가상 호스트에서 할 필요가 있는지

  • 말 :

    나는 다음 작업을 수행 할 경우 적절한 답을 줄 수 있습니다.

  • 가상 호스트 내에서 각 개별 애플리케이션에 액세스 할 수있는 URL을 말하십시오.

  • 각 응용 프로그램마다 어떤 미디어 URL을 사용해야한다고 말하십시오.

  • 각 프로세스가 별도의 프로세스에서 실행되어야하는지 아니면 동일한 프로세스의 다른 하위 해석기에서 실행중인 프로세스가 적절한 지 여부를 말하십시오. 별도의 프로세스로 실행하면 코드를 변경할 때 각각을 독립적으로 다시 시작할 수 있습니다.

관련 문제