Назад | Перейти на главную страницу

После перемещения приложения Django в новый проект на том же сервере оно все еще использует исходный проект settings.py

Настройка: Django версии 1.4 с использованием Supervisor, NGINX, gunicorn и postgresql 8.4.

У меня есть два проекта Django, размещенных на одном сервере, и один покидает сервер. Есть важное приложение, которое необходимо временно оставить на этом сервере, пока я перестраиваю его в совершенно новой структуре на новом сервере. Я хочу прикрепить его и его данные к новому проекту. Я скопировал все файлы / шаблоны приложения в новое приложение, добавил его в settings.py, и побежал manage.py syncdb. Я использовал функции резервного копирования / восстановления PGAdmin, чтобы переместить данные в новую базу данных. Когда я вхожу на сайт администратора Django, все выглядит нормально: все модели находятся в новом проекте, и все данные кажутся нетронутыми.

Мне также пришлось внести изменения в свой сервер имен, чтобы разрешить перенаправление поддомена следующим образом:

subdomain.mysite.com ANAME указывает на мой IP-адрес для нового проекта, у которого другой домен:

my_other_site.com

Моя конфигурация NGINX для my_other_site.com прослушивает subdomain.mysite.com и перенаправляет его на

my_other_site.com/relevant_app_url

Теперь проблема: новые URL-адреса, похоже, работают нормально, но он использует старый проект .py файлы и шаблоны. Я даже закомментировал приложение в файлах настроек как новых, так и старых проектов, и все, что он сделал, это скрыл от меня админку.

Чтобы определить проблему, я вставил опечатку в старый проект views.py, и заставил его отправить трассировку, которая позволила мне увидеть, что он использовал старый проект settings.py вместо нового. Как заставить приложение переключиться на новый проект settings.py? Как вообще найти старую?

Я нашел ответ в своем файле конфигурации NGINX:

Я скопировал местоположение приложения без изменений в новый проект conf:

server {
    listen    80;
    server_name  www.my_other_site.com;
    ...
    other stuff not relevant to this answer here
    ...

    location /relevant_app_url/ {
        ...
        other stuff not relevant to this answer here
        ...
        proxy_pass http://127.0.0.1:8000

    }
}

8000 относится к исходному проекту на сервере. 8001 - это порт для другого проекта (где сейчас живет мое приложение). Мне пришлось изменить последнюю строку на:

proxy_pass http://127.0.0.1:8001

И все хорошо. Надеюсь, что мое разочарование поможет быстро решить проблему с медленным моментом у кого-то другого.