Nginx + Apache + Django/python + rockmongo/php ...

   

我不知道标题怎么写,就这样吧。。。

部署方案:

Nginx: 处理静态文件和代理

Apache: 作为后端,主要负责动态响应(其实fastCGI是个更好的选择)

目录结构:

DIR: /home/www/

|--> django_site: 作为Django项目的根目录

002UASMrzy7605pjKJv15&690.jpg

|--> 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做短网址服务也是很方便的。

:)