настройка двух сайтов Django под Apache с WSGI - PullRequest
1 голос
/ 21 июня 2011

Я настроил сайт django, как описано в документации django: https://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Теперь я хочу настроить другую версию сайта (другой исходный каталог, другую базу данных) для работы на том же сервере. Есть активные пользователи и гибкие приложения, которые используют приложение № 1, поэтому я хочу сохранить доступ к приложению № 1 без изменений. Я также предпочитаю вообще не изменять urls.py даже для приложения №2.

Я думал о другом порте для приложения # 2

Например
http://192.168.1.1/load_book/123/ загрузит книгу из приложения № 1 http://192.168.1.1:444/load_book/123/ загрузит книгу из приложения # 2

Я полный нуб к Apache и WSGI ... как мне его настроить?

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Что вы имеете в виду, когда они имеют одинаковые URL? Возможно, то же имя хоста?

Допустим, у вас есть 2 приложения:

Оба могут быть приложениями Django, обслуживаемыми WSGI, в одном экземпляре Apache. Используя директивы Directory или Location в вашем apache conf, вы можете указать файл загрузчика .wsgi, как описано в документации django, указанной выше:

<Location /your_app>
    WSGIScriptAlias /your_app /path/to/mysite/apache/your_app/django.wsgi
    ...
</Location>
<Location /my_app>
    WSGIScriptAlias /my_app /path/to/mysite/apache/my_app/django.wsgi
    ...
</Location>

Единственный реальный улов - вам нужно сообщить your_app и my_app, что они больше не находятся в корневом каталоге документов хоста. Для этого добавьте параметр base_url к вашему settings.py и добавьте к этим параметрам все записи в вашем urls.py. Это гарантирует, что когда запрос поступит через Apache, ваше приложение на Python сможет соответствующим образом направить его.

Для простого примера того, как это делается, взгляните на код Bookworm , приложения Django.

2 голосов
/ 21 июня 2011

Вы можете привязать приложение wsgi к разным подпутям в одном домене. Если вы сделаете это, пути к представлениям внутри Django останутся прежними. Вам не нужно изменять urls.py. В следующем примере Django будет рассматривать /site1 как корень project1.

Проверьте http://code.google.com/p/modwsgi/wiki/InstallationInstructions для документации по mod_wsgi.

<VirtualHost *:80>
    ServerName www.example.com

    WSGIDaemonProcess example
    WSGIProcessGroup example
    WSGIScriptAlias /site1 /home/django/project1/deploy/wsgi.py
    <Directory /home/django/project1/deploy>
        Order deny,allow
        Allow from all
    </Directory>

    WSGIScriptAlias /site2 /home/django/project2/deploy/wsgi.py
    <Directory /home/django/project2/deploy>
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

Теперь два сайта будут работать в одном и том же процессе демона, используя разные суб-интерпретаторы Python.

...