在不使用proxy_pass的情况下用Nginx服务Django网站
我已经配置好了nginx来运行我的django应用。我可以通过代理转发(proxy pass)来提供django网站,但我需要手动启动服务器,然后nginx才能提供这个网站。我想要的是,让nginx直接启动这个网站,而不需要通过代理转发,这样服务器就可以自动启动。请问有没有什么解决办法?
谢谢……
2 个回答
1
你没有说明你的操作系统,所以……我在Windows上把django部署在apache和nginx后,发现nginx要简单得多。不过,由于nginx更像是一个静态文件服务器,且代理能力很强,我为django应用运行了一个单独的wsgi服务器。在尝试了几个(发现它们都是只能在unix上用)之后,我发现CheryPy的wsgi服务器(可以独立于CherryPy的其他部分使用)运行得很好(而且速度也挺快的)。
3
我觉得这里的问题在于,你试图通过nginx来运行你的开发服务器;其实nginx并不是用来做这个的,它主要是用于开发阶段。
如果你想搭建一个生产环境的服务器,可以考虑以下几种方法:
- 使用gunicorn配合supervisord来保持一切正常运行(这是我现在比较喜欢的方式),可以参考这个教程: http://kencochrane.net/blog/2011/06/django-gunicorn-nginx-supervisord-fabric-centos55/
- 使用老牌的Apache和一个.wsgi文件: https://docs.djangoproject.com/en/1.3/howto/deployment/modwsgi/
- 使用uWSGI,这个已经包含在nginx里,不过我对这个没有经验。你可以看看这个教程: http://blog.zacharyvoase.com/2010/03/05/django-uwsgi-nginx/
如果正确使用,gunicorn和apache在生产环境中都非常稳定,这也是我的一些经验。