несколько экземпляров django в одном домене

Я ищу хороший способ установить несколько совершенно разных проектов Django на одном сервере, используя только одно доменное имя. Дело в том, что я хочу перейти к чему-то вроде:

http://192.168.0.1/gallery/ # проект фотогалереи Django
http://192.168.0.1/blog/ # проект ведения блога

Таким образом, я могу разработать и протестировать несколько проектов django на одном сервере, просто ссылаясь на разные URL-адреса. (примечание: я не думаю, что этот модуль Django Sites – это то, что я ищу, потому что проекты должны быть разными). В качестве примера, PHP-тип ведет себя таким образом, так как я могу установить что-то вроде php-gallery и phpmyadmin на том же сервере, только с разными URL-адресами.

Кто-нибудь знает какие-либо хорошие ресурсы о том, как настроить несколько проектов Django под несколькими URL-адресами на одном сервере с помощью Apache (с mod_python или mod_wsgi)? Мне было бы интересно узнать, как настроить apache.conf, возможную настройку virtualenv и внести изменения в urls.py. Большинство примеров развертывания Django, которые я вижу, предназначены для одного приложения на домен или поддомен.
Любые советы очень ценятся.

Благодаря,
Джо

  • Как сделать URL-адреса в Django похожими на stackoverflow?
  • Django обратный поиск внешних ключей
  • Что делает django resolve_variable? (template.Variable)
  • Переход от RabbitMQ к Amazon SQS
  • автомодуль django sphinx - основы
  • Проблема массового загрузчика приложения Google App Engine при использовании автоматической генерации yaml и объектов с числовым идентификатором
  • Данные в режиме реального времени на веб-странице с помощью jQuery
  • django на vps - получение «модели уже зарегистрировано» при перезапуске сервера
  • 6 Solutions collect form web for “несколько экземпляров django в одном домене”

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

    Практически все в вашем файле настроек будет похоже на обычное приложение Django, за исключением того, что эти параметры включают в себя ваш путь к проекту:

    MEDIA_URL = 'http://192.168.0.1/gallery/media/' ADMIN_MEDIA_PREFIX = '/gallery/admin_media/' SESSION_COOKIE_PATH = '/gallery' LOGIN_REDIRECT_URL = '/gallery/' LOGIN_URL = '/gallery/accounts/login/' LOGOUT_URL = '/gallery/accounts/logout/' 

    SESSION_COOKIE_PATH имеет решающее значение, чтобы все ваши приложения в одном домене не переписывали друг другу.

    Вышеуказанные инструкции должны охватывать сторону Django, но на стороне веб-сервера еще больше работы. Например, если вы используете apache + mod_wsgi, вам нужно убедиться, что каждый проект имеет свой собственный скрипт wsgi, который загружается следующим образом:

     WSGIScriptAlias /gallery /path/to/gallery/apache/gallery.wsgi Alias /gallery/media /path/to/gallery/media Alias /gallery/admin_media /path/to/gallery/venv/lib/python2.6/site-packages/django/contrib/admin/media 

    и т.п.

    В вашем вопросе вы, кажется, используете projects и apps взаимозаменяемо. Они означают отдельные вещи в Django. project включает в себя файл установки, конфигурацию базы данных и общий urlconf, и это то, что вы хотите в корне вашего домена. app представляет собой индивидуальный функциональный фрагмент кода, который (как правило) выполняет одну задачу.

    Если вы хотите развернуть несколько приложений, вы хотите создать один проект и скопировать каждое приложение в каталог проекта. Если вы посмотрите на учебник, вы увидите, как включить приложение в urlconf. Просто повторите это для каждого из них, убедившись, что регулярные выражения верны.

    Ключевым моментом здесь является то, что вы получаете apache для вашего общего проекта django, а затем вы используете внутренний urlconf от Django, чтобы настроить, где можно получить доступ к каждому приложению. Не пытайтесь запускать несколько проектов под корнем одного и того же URL-адреса – это почти наверняка признак того, что вы делаете это неправильно.

    Если вы имеете в виду запуск нескольких проектов под одним доменом, мы решаем эту проблему с субдоменами.

    Поскольку проекты Django, которые мы создаем, (как правило) предназначены для того, чтобы жить в корне домена, когда они фактически развернуты, если вы используете app1.example.com и app2 и т. Д., Вы можете протестировать, как вы будете развертывать, в корне каждого домена. Вы можете настроить субдомены точно так же, как вы бы настроили домены верхнего уровня, а затем перейти к окончательному развертыванию легко.

    Если вы пытаетесь на самом деле развернуть такие приложения, создайте единый всеобъемлющий проект Django и используйте urlconfs для включения каждого приложения Django в другой субстрат.

    Другие рассмотрели использование нескольких приложений в рамках одного проекта Django. Если, однако, вы имели в виду проекты и / или имели только одно приложение в каждом проекте, тогда простой ответ заключается в использовании отдельной директивы WSGIScriptAlias ​​для каждого проекта при использовании mod_wsgi. Каждый такой проект может быть необязательно делегирован в группу процессов демона mod_wsgi, чтобы позволить каждому отдельно перезагружаться без перезапуска всего Apache, но режим демона – это дополнительная вещь, которая может быть выполнена, а не само решение.

    Давайте перейдем к терминологии.

    Большинство примеров, которые вы видите в Интернете, предназначены для одного проекта Django для каждого домена. Каждый проект может содержать несколько приложений .

    Отсюда я предположим, что вы имеете в виду развертывание нескольких проектов в одном домене. (В противном случае – ваш вопрос аннулирован).

    Это можно легко решить при правильном развертывании для каждого каталога (это зависит от того, какой метод развертывания вы используете), и убедитесь, что ваши URL-адреса не предполагают, что они существуют в корне домена.

    Создайте несколько проектов django, каждый из которых имеет одно приложение (например, frontend ) и используйте сопоставление URL-адресов django, чтобы сделать что-то вроде этого:

     from django.conf.urls.defaults import patterns, include urlpatterns = patterns('', url(r'^/', include('myproj.frontend.urls') ) 

    Я использую это, и он отключается без сучка и задоринки.

    Если вы просите полноценный учебник / пошаговое руководство по настройке чего-то подобного, я сожалею, что у меня его нет. Я просто пошел по документации Django и придумал это.

    Один из подходов заключается в развертывании приложений в Apache, работающих под управлением mod_wsgi в режиме демона. Документацию можно найти здесь: http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

    Interesting Posts

    таймаут подпроцесса

    Pandas groupby применяют медленные действия

    Как установить значение по умолчанию для всех ключей объекта dict в python?

    как получить полное содержимое узла с помощью xpath & lxml?

    Как использовать Pandas groupby apply () без добавления дополнительного индекса

    Как использовать код Visual Studio для отладки django

    Являются ли списки-функции и функциональные функции быстрее, чем «для циклов»?

    Статические файлы, не загруженные в приложение «Бутылка», когда конечная косая черта опущена

    python: логарифмическая шкала рассеяния

    Как дублировать файл sys.stdout в файл журнала в python?

    библиотеки python для обработки ssh

    Как вы используете регулярное выражение в понимании списка в Python?

    Именованные каналы между C # и Python

    Настройте регистрацию на раннем этапе: предупреждения об улавливании, введенные во время импорта

    как построить гистограммы из dataframes в пандах

    Python - лучший язык программирования в мире.