Nginx + Apache + Django/python + rockmongo/php ...
- 时间:
- 来源:开源中国
我不知道标题怎么写,就这样吧。。。
部署方案:
Nginx: 处理静态文件和代理
Apache: 作为后端,主要负责动态响应(其实fastCGI是个更好的选择)
目录结构:
DIR: /home/www/
|--> django_site: 作为Django项目的根目录
|--> public_html: 默认根目录,php及html文件放在这里
|--> static_files: 静态文件,包括js/css/img等等
|--> web_logs: 日志文件,Nginx和Apache的都放在里面
Nginx配置:
监听127.0.0.2:80 www.d2s2.com
默认根目录 /home/www/public_html/
目录 / 如果不是文件的话,直接proxy_pass到upstream django_site (也就是127.0.0.1:8000)
目录 /rockmongo/ proxy_pass到127.0.0.1:8080
目录 /static/ alias /home/www/static/
其他,如果遇到php文件都proxy_pass到127.0.0.1:8080
Apache配置:
两个虚拟主机分别为127.0.0.1:8000, 127.0.0.1:8080
127.0.0.1:8000通过mod_wsgi(django.wsgi), 负责python环境
127.0.0.1:8080通过mod_php默认的提供php环境
PS:用fastCGI代替Apache,其实道理也是一样的
rockmongo之于MongoDB,就相当于phpMyAdmin之于MySQL。
当然,有个名字更像的叫作phpMoAdmin,好像不太喜欢。
MongoDB现在也有针对Django的数据库backends,但是功能很有限。
当然,通过ODM(相当于SQL的ORM), 比如mongo-engine 和 mongokit, 能够实现
大部分的需求. 但是, 个人感觉还是直接pyMongo好用.
Django的forms功能很强大, 通过一个应用插件forms_builder基本上可以满足我的要求.
也就是说我把forms原型保存到MySQL中,包括用户管理等等,只要是有定型结构的都
将其原型放在MySQL中,而提交的大量数据,包括媒体文件都放到MongoDB中。
还有一个应用插件treemenus, 用它来管理树状结构,包括信息分类,网站视图等等。
如果你想要个博客页面,用flatpages就够了。
对于SQL与NoSQL的混合应用,这是个取所长罢了,没什么复杂的,需求驱动。
如果是移动设备,你可以通过REST API访问或传送数据到MongoDB,这是一个很方便自然
的途径。(mongolabs就是这样做的)
我发现,用MongoDB做短网址服务也是很方便的。
:)