放弃Mod_fastcgi+apache?

尝试了一晚上,Apache没有重启成功。Mod_fastcgi在2003年的时候就已停止了开发。那时只是支持到Apache2.0.X版,现在使用的都2.2.X了,官方虽然提供了一个Patch,但我本地没有C编译环境,于是不了了之。此外,Fastcgi本身有些问题,线程出问题的时候可能关闭不了,不过中国(没有错吧?)有人解决了这个问题,那是另一个项目“fcgid”。用这个可以直接代替Fcgi。

寻找另一种部署FastCGI的方式。。lighttpd?

Django + mod_python

Django + mod_python的部署方式的基础是我的上一篇文章。前提python、Django、Apache、Mod_python安装完备。

部署方式有两种:一是加直接在apache的httpd.conf下面加一个一个Location的元素:

<Location "/mysite/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myblog.settings
PythonDebug On
PythonPath "[r'F:\\develope\\projects\\myblog'] + sys.path"
</Location>

主要留意两个参数:SetEnv DJANGO_SETTINGS_MODULE 指定你的Django应用的settings.py。PythonPath Python程序的路径,如果你的Django应用不在Sys.path里面,那么加上你的应用路径,注意,如果你的项目路径为:D:\\projects\myblog那么,Python Path应该填D:\\projects。

这样,你可以通过http://localhost/mysite来访问你的应用,不过有一个问题,Django会把“mysite”当作请求的URL的一部分。你必须要把URLConf里的配置全加上mysite。显然,这种做法并不是很理想的。

为解决上面的URL问题,可以通过VirtualHost来配置使用另一个虚拟机作为Django应用的所在地。所不同的是,还是可以从根目录下访问应用,不过使用了不同的端口:

Listen 127.0.0.1:81
<VirtualHost 127.0.0.1:81>
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myblog.settings
PythonPath "[r'F:\\develope\\projects\\myblog'] + sys.path"
PythonDebug On
</Location>
</VirtualHost>

这一次,可以通过http://localhost:81/来访问应用了。

下面的文章讲述如何处理静态文件与FastCGI + Django

安装Mod_python

编程 jeff  |  2007-09-16 1 pythonapache

Mod_python的使用要求与Apache结合。我使用的Apache版本为2.2,python为2.5,配套的Mod_python为3.3.1。安装及调通的步骤如下:

一、安装Apache。到http://httpd.apache.org/下载最新版本的Apache,如果是Windows环境,直接下载可执行文件安装完就可以了。测试Apache是否正常工作,直接访问http://localhost就可以,当看到It works表示安装成功了。

二、安装Python。下载Python2.5版,直接安装即可。

三、安装Mod_python。到http://www.modpython.org/下载合适版本的Mod_python,注意Apache与Python的版本。在Windows下直接执行安装完之后,找到 C:/Program Files/Apache Software Foundation/Apache2.2\conf\httpd.conf(看apache安装的地方而定) 文件进行编辑,找到LoadModule部分并加上这句:LoadModule python_module modules/mod_python.so,这时候,安装Mod_python已经完成了。下面来进行测试Mod_python的工作情况。

四、测试。在本地建立一个独立的测试目录,如 D:/site,然后修改httpd.conf加入下面代码:

Alias /py d:/site/

<Directory d:/site/>

Order deny,allow

Allow from all

AddHandler mod_python .py

PythonHandler mptest

PythonDebug On

</Directory/>

上面的代表是这样的意思:定义一个别名,当访问localhost/py时,实际上是去d:/site/找文件。Directory里面定义了一些规则,注意前两行很有必要,否则有可能出现拒绝访问的情况,AddHandler mod_python .py意指针对.py文件指定一个Handler。PythonHandler mptest意指Python的Handler是mptest.py。我们在d:/site/下面添加一个mptest.py文件:

from mod_python import apache

def handler(req):

req.content_type = 'text/plain'

req.write('hello world')

return apache.OK

重启Apache,访问http://localhost/py/xyz.py 得到的结果是hello world。只要是.py结束的请求都会调用mptest.py来处理。

That's all。

死亡故事

把《太阳照常升起》改个名字,叫《死亡故事》我想也不是没有道理。看,如果把故事分成四段,那么第一段讲的是周韵的死、第二段是黄秋生的死、第三段是房祖名的死、第四段是所谓的阿辽沙的死,当然第四段同时是房祖名的出生。对这部电影突然有这样的想法只是因为我朋友一直问我,这部电影到底到告诉我们什么道理呢?我当时想,是不是看电影真的要问它告诉我们什么道理呢?我想啊想,阿辽沙死了,黄秋生死了,周韵死了,房祖名死了,但是太阳还是照常升起。尽管我自己觉得这些想法只是胡扯,不过自己真的还没有完全清楚姜文要告诉我什么道理。

我只是想丿开“道理”不讲,那貌似是一些教育片应该做的。去电影院看电影其实只应该追求现场的感受。跟我一起去看电影的朋友看完之后埋怨说不好看。我想我可以理解她这样说的原因,片子猛地看上去好像没什么意义、周韵最后那几次呼唤显得过于重复尖锐,让人受不了、陈冲和另一个女人的言行一定程度上让人接受不下来(我反而觉得这是戏演得好才能让人有如此真实的感受)、电影院过分夸张的音响效果以及这片子跟上一次我们一起看的《通天塔》一样,恰好是把故事分成N个不怎么连贯的故事来讲。

我却比较喜欢这样一部电影,色彩,浓烈而不艳,节奏,明快但沉稳、剧情的每一部分都充慢了悬念直到最后才把所有的线条扯清楚了、剧情到处都让人自然而然地笑出来,却不是爆笑的那种。

我很喜欢电影里那好像很无赖的重复:周韵重复着爬树、念诗;房祖名重复着“妈,你怎么了”,然后撒开脚丫子往村外跑;姜文那一声刺耳的号响;还有最后周韵的“阿辽沙,别害怕,火车在上面停下来了,他一笑天就亮了”。这些镜头是那么随便又是那么刻意地安排着。电影就应该这样,我想。不是正儿八经的,导演把自己的想法和创意在里面表现得淋漓尽致,就像找个地,随便撒撒野那么自然才是真的。

黄秋生的演出,还是很赞,一出场那一段弹唱和第一句话“丢你老母嗨”,马上让我感觉到他无处不在的痞子气质。最后黄秋生的死,我还没法理解。是因为他被冤枉为摸女人屁股的色狼、陈冲(一直与姜文有染)对他的表白还是其他?我只知道他死得很安祥。吊死在半空中,并且面带微笑,双手插裤袋,我认为这是最酷的动作!

陈冲在里面演一个比较骚的女人,原来与姜文一直有染,爱的却是黄秋生,在黄秋生的病房里,陈冲的那一段表白真的能让人笑翻,能让人吐,也能让人哭。最搞笑的是陈冲走了之后来的另一个表白的女人。

说说姜文的戏,早在20年前他就有了老婆,但是分居两地,一直与陈冲有不干净的关系,后来,他40岁的老婆却与20刚的房祖名搞上了。用崔建的话说:你娶了老婆,扔在那里不管,自已在外面搞那么多事,现在你老婆跟20岁的小队长好上了,你真的认为是你老婆的问题么?本来一心要杀房祖名出气的姜文意识到自己的错误,已打算放房一马,不再找天鹅绒,当他照常打猎拿回队里交给小队长的时候,没再提那些事。但是无知的房祖名却拿出一面锦旗说,你没找着天鹅绒我找着了,姜扭头走,房却大声叫道,喂,但是你老婆的肚子都不像天鹅绒啊!砰,枪响了,房祖名生命的结束更多是因为他对性的无知,不知道男人原始的妒忌,这也许他从小没父亲的缘故吧。也许他死后也不清楚自己这样做是不是真的该死。

看电影没看到最后,你真的不会清楚所有的事情,不会清楚到底在讲些什么事。最后时光倒转的描述才把所有的迷揭开了,周韵下火车往回跑捡回在铁道出生的房祖名,站在车厢上面面朝太阳出升的地方没有休止地喊“阿辽沙,别害怕,火车在上面停下来了,他一笑天就亮了”。这时,突然很确定地知道,她疯了以后爬到树上不断地喊这些话其实不是诗歌,也不是散文,而是真实的。

太阳猛地一跳,跳出了水面。电影结束了,而故事正开始。

特困生

其他 jeff  |  2007-09-13 0

又做了特困生。累得好像最近几天都没有睡觉似的,今天早上去客户的路上起码打了二十几个哈欠,还好给客户Show皮皮踢的时候没有打出来。回到家里打算睡上半个小时再回公司,却发觉死活都没有睡着,回到公司,趴在桌子上反而睡得香,你说我是不是有点犯贱。

晚上回到家也一样,爬上床准备先睡一觉,没想到上了床却没半点睡意。看来还是只好起来,好好做我的特困生。看个电影,写点代码也好。反正,半夜来了,就能睡了。

使用Django生成RSS

编程 jeff  |  2007-09-13 2 pythondjangorss

感谢Django强大的syndication feed framework,我可以很轻松地实现RSS的生成工作。Fallever的RSS可以从每个Blog的右下角找到。Django的官方文档见这里。文档中的第一个Example并不适合我,Fallever现在的情况是提供每个Blogger一个RSS文件,因此需要传参数,情况比较类似“A complex example”那一段。

使用Django的SFF来生成RSS太简单了。有下面几个步骤:

一、配置URLConf:

(r'^feeds/(?P.*)/rss.xml$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds})

URL表达式中,url参数实际上允许很多个“/”存在。在Fallever中的用法是:/feeds/blog/{{shortcut}}/rss.xml.那么Django会把“feeds/”后面那一大截当作URL的参数传进去生成的机器(姑且这样叫吧),Shortcut是代表一个Blog的简称。注意,"feeds/"作为RSS路径的开头是必须的。

二、写feeds。

你已经留意到了URLConf里面的第三个参数吧。feeds是一个字典,Key是Feed的类型,Value是处理该类型的类。Fallever的第一个字典是:

feeds = {'blog':recent_blog_entry}

这个字典说“feeds/”后面凡是跟着blog字样的路径全由recent_blog_entry这个类来处理。在blog后面跟着的参数从哪里可以找回来呢,我一开始就有这样的问题,原来在这里:重写Feeds类的get_object(self, bits):bits参数就是把blog后面的参数切成了数组,如/feeds/blog/jeff/rss.xml切割后bits参数是:['jeff','rss.xml']在这里我们只需要拿我们有用的元素就可以了。rss.xml这一节东西我是用来哄IE的。

三、在recent_blog_entry类里重写Feeds的几个方法:title,link,description,items,items_link。具体的在这里不说了,还有需要为这一次的Feed加上两个简单的模板。都去参考文档看吧 :)

 

Fallever更新日志

编程 jeff  |  2007-09-12 1 pythondjangomysql

今天晚上Fallever加上两个Powered by的Logo,Mysql和Django。在考虑是不是把Python也加进来。嘿。

在今晚顺便把RSS提供出来、本次提供的RSS包括:个人博客的最近更新、个人博客分类最近更新。然后,是时候调整一个后台的结构,建立一个完整的可用的博客系统。

接下来会有很多东西要做,捞捞说过,如果我把它在BlogCN上的东西全搬过来,那他以后就在这里安家。我说你不介意我暂时界面简陋、短期内开发进度不快等等你就等着吧,到时帮你搬过来。捞说,我年年25,不急。

Meta

关于本博客...

关于黑莓手机、apple、twitter、互联网、web2.0以及生活的碎言碎语。请在twitter上 follow我,欢迎同好者talk to me bbmyth AT gmail.com。博客Hosting在 webfaction。

赞助商链接

我看我听我读

最新评论

标签

python 空间 开发 计划 年假 工作 诗歌 音乐 西片 恐怖 惊变 django mysql rss 文艺片 太阳 彩色 电影 apache 部署 factcgi lighttpd javascript editor MYMeditor sql 日志 java hibernate orm 数据库 英伦 摇滚 原创 中间件 朋友 erlang 并发 函数式编程 旅游 云南 丽江 发呆 学习 编程 技术 lucene 全文搜索 中文分词 乐队 模板 分页 成功 google pagerank 中文 更新 个性化 秋天 互联网 web ext json ajax 事业 职业 读书 开源 香港 澳门 忧郁 冬天 compass dvd 广州 地下 暴力 美学 声音玩具 独立 备份 数据 琐事 博客 生活 体验 卖唱 接口 设计模式 图表 wiki moin 遇窃 air ria 需求 设计 信息 健康 感悟 人生 真诚 life jquery 杭州 灾害 2008 中国 灾难 哀悼日 jmesa grails flex flash 捐赠 scrum 软件过程 快速开发 plone cms nuexo zope 左小诅咒 demo prototpye AMF actionscript 汉诺塔 算法 递归 结婚 感情 opensource 网络 beautifulSoup 管理 大理 香格里拉 休假 鼻炎 许巍 感性 2009 随想 cpug 聚会 出差 北京 api 创业 商城 blackberry 手机 TD 交流 处事 为人 房子 经济 手机仿真 在线服务 嵌入式 海鲜 p2p easymule apple 技巧 thing gtd task gfw vpn 穿墙 代理 软件管理 翻译 mac 英语 caffeine 休眠 搬家 主机 prism firefox mozilla 免费 php codeigniter url blogspot mindmap mindnode htmlparse easyurl 产品 黑莓 rim 试手机 豆瓣 twitter 微博 杂记 时空 亲人 dabr webfaction host 快速查看 safari appale 桌面 snow 升级 leopard finder 权限 glims python主机 合租 ruby主机 快捷键 itunes 时间管理 原型 画图 招聘 hosting 写作 软件 家庭 广州技术沙龙 postgres 云计算 fuckgfw 内容审检 谷歌 chrome linux odbc database freetds R 统计 书签 浏览器 bookmark tinymce 文件管理 分享 忙碌 旅行 马来西亚 图维导图 freemind 工具 pinax develope shell dropbox barcamp

日志分类

友情链接

博客归档

PowerBy