Несколько сайтов администратора Django на одном Apache ... Когда я захожу на один, я выхожу из другого - PullRequest
3 голосов
/ 29 ноября 2008

У меня есть два проекта Django и приложения, работающие на одной установке Apache. Оба проекта и оба приложения имеют одно и то же имя, например myproject.myapplication. Каждый из них находится в отдельно названных каталогах, поэтому он выглядит как ... / dir1 / myproject / myapplication и ... / dir2 / myproject / myapplication.

Все в реальных общедоступных приложениях работает нормально. Когда я захожу на один из сайтов администратора, это кажется нормальным, но если я переключаюсь и выполняю какую-либо работу на противоположном сайте администратора, я выхожу из первого. Короче говоря, я не могу войти на оба сайта администратора одновременно. Любая помощь будет оценена.

Ответы [ 5 ]

9 голосов
/ 29 ноября 2008

Установите параметр SESSION & # x5F; COOKIE & # x5F; DOMAIN . Вам необходимо установить домен для каждого из ваших сайтов, чтобы файлы cookie не перекрывали друг друга.

Вы также можете использовать SESSION & # x5F; COOKIE & # x5F; NAME, чтобы названия файлов cookie различались для каждого сайта.

0 голосов
/ 17 июня 2009

Я столкнулся с подобной проблемой с живым и промежуточным сайтом, размещенным на том же сервере Apache (на CentOS). Я добавил уникальные значения SESSION_COOKIE_NAME в настройки каждого сайта (в local_settings.py создайте его, если у вас его нет, и импортируйте его в файл settings.py), установите SESSION_COOKIE_DOMAIN для живого сайта и установите SESSION_COOKIE_DOMAIN = Нет для подготовки. Я также запустил «python manage.py cleanup» для (надеюсь) удаления любой конфликтующей информации из базы данных.

0 голосов
/ 29 ноября 2008

Дай угадаю, это работает на твоем локальном хосте? а у вас каждый сайт назначен на другой порт? то есть localhost: 8000, localhost: 8001 ..?

У меня была такая же проблема! (хотя я не запускал Apache как таковой)

Когда вы входите на сайт администратора, вы получаете в своем браузере файл cookie, связанный с доменом «localhost», который хранит некоторый указатель на сеанс, сохраненный в базе данных на сервере.

Когда вы посещаете другой сайт, сервер пытается интерпретировать cookie, но не удается. Я предполагаю, что он удаляет куки, потому что это "мусор".

В этом случае вы можете изменить свой домен

используйте localhost: 8000 для первого сайта и 127.0.0.1:8001 для второго сайта. таким образом, второй сайт не пытается прочитать cookie, который был установлен первым сайтом

Я также думаю, что вы можете отредактировать файл HOSTS, чтобы добавить дополнительные псевдонимы к 127.0.0.1, если вам нужно. (но я не пробовал это)

0 голосов
/ 29 ноября 2008

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

0 голосов
/ 29 ноября 2008

Ну, если у них одинаковые имена проектов и приложений, базы данных и таблицы будут одинаковыми. Ваша таблица django_session, которая содержит информацию о сеансе, одинакова для обоих сайтов. Вы должны использовать разные имена проектов, которые будут использоваться в разных базах данных MySQL (или любых других).

...