Настройка: 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
И все хорошо. Надеюсь, что мое разочарование поможет быстро решить проблему с медленным моментом у кого-то другого.