设置: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
我的 my_other_site.com 的 NGINX 配置监听 subdomain.mysite.com 并将其重定向到
my_other_site.com/relevant_app_url
现在的问题是:新的 URL 似乎工作正常,但它使用的是旧项目的.py
文件和模板。我甚至在新旧项目的设置文件中注释掉了该应用程序,但它所做的只是向我隐藏了管理站点。
为了找出问题所在,我在旧项目中插入了一个拼写错误views.py
,并让它抛出一个回溯,这让我看到它使用的是旧项目settings.py
而不是新项目。我如何让应用程序切换到新项目settings.py
?它怎么能找到旧项目呢?
答案1
我在我的 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
一切都很好。希望我的沮丧能为其他人的缓慢时刻提供快速解决方案。