今天尝试了一下搭建python+apache的环境,记录在这里,希望对大家有用. 一.安装apache(apache2.2.15) 到 http://httpd.apache.org 下载最新的apache源码,解压后进入目录: 我想把apache安装到/home/dantezhu/apache下,所以执行如下命令 执行:
./configure --prefix=/home/dantezhu/apache --enable-track-vars --enable-cgi --with-config-file-path=/opt/apache/conf --enable-modules=all --enable-mods-shared=all --enable-file-cache --enable-disk-cache --enable-cache --enable-mem-cache --enable-dumpio --enable-logio --enable-mime-magic --enable-headers --enable-usertrack --enable-version --enable-ssl --enable-http --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ftp --enable-proxy-ajp --enable-proxy-balancer --enable-so
执行:
make && make install
这样apache就装好了,apache的配置我就不说啦,不过在这里不我这里启动的时候会报错,所以就把httpd.conf中的
LoadModule unique_id_module modules/mod_unique_id.so
注释掉就好了。 二.安装python(python2.6)
./configure --enable-shared
我的python安装目录是 /usr/local/lib/python2.6/ 三.安装mod_python(mod_python3.3.1) (请用root权限执行) 到www.modpython.org下载源码包,解压后进入目录: 执行: (这个命令分别指定了apache和python的目录)
./configure --with-apxs=/home/dantezhu/apache/bin/apxs --with-python=/usr/local/bin/python
执行:
make
在这里编译会有报错,到 https://bugzilla.redhat.com/show_bug.cgi?id=465246 下载patch,并执行 执行:
make install
会在/usr/local/lib/python2.6/site-packages/下生成一个mod_python目录 同时在./src/.libs/下生成了一个mod_python.so,将这个so拷贝到apache的modules目录,并在httpd.conf中加入
LoadModule python_module modules/mod_python.so
四.测试
1)在httpd.conf中加入
<Directory "/home/dantezhu/apache/py">
AllowOverride FileInfo
AddHandler mod_python .py
PythonHandler index
PythonDebug On
Order allow,deny
Allow from all
</Directory>
同时在
<IfModule alias_module>
</IfModule>
加入
ScriptAlias /py/ "/home/dantezhu/apache/py/"
2)在apache目录下建立一个py目录,在里面新建一个文件index.py,内容如下:
from mod_python import apache
def handler(req):
req.write("Hello World!")
return apache.OK
(注意:PythonHandler index ,这里的名字index决定必须用index.py来测试) 浏览器输出:
参考资料: http://man.chinaunix.net/develop/python/mod_python/mod_python.html
无限 on #
python的各个web框架都可以做server的 不一定要靠apache这样的webserver
当然静态文件可能须要 另外 nginx更好 推荐给你
Reply
christian_zeng on #
各个框架里的Server只是开发时用的快捷服务器,不能用于产品环境,很多服务器对多线程都无法很好的支持!!
Reply
Dante on #
确实,在公司甚至并没有使用apache作为CGI的外网服务器,而是用了公司内部写的webserver,不过只支持C/C++的CGI,而写C/C++的CGI实在太痛苦……不是外网服务还是尽量避免……
Reply
MadPer on #
nginx很好,但不一定就更好,各有优点吧...
Reply
无限 on #
就这个案例来说 要 webserver+python
我觉得nginx更好
因为我们公司的生产服务器就是这么搭配的 我的工作有一部分就是干这个
我是 nginx + python(web.py + fastcgi)
Reply
Dante on #
呵呵,之前一直没有nginx呢,有空尝试一下~~~
Reply
MadPer on #
像博主这么平易近人的高手都在用VIM,让我们这些用emacs的小白们怎么办呀...强烈抗议!强烈要求博主今后让自己的儿子(女儿)长大后用emacs,开博教我们怎么用emacs!
Reply
Dante on #
过奖过奖,其实我只是用vim比较早而已啦~~~
哈哈,其实你可以好好研究emacs嘛,这样就可以向大家普及emacs啦~~
ps:其实我的电脑也一直装着emacs呢,不过不太会用,呵呵~
Reply
MadPer on #
博主,我又几个有关职业方向方面的问题想请教,不知博主是不是愿意,以及什么时间方便?
Reply
Dante on #
呃,其实我入职场也才几年,不敢妄加指导呢……
MadPer也已经工作了吧?
Reply
MadPer on #
小弟大一,软件工程专业,现就读于中山大学,目前还只是个麻瓜,所以想请教下前辈~
Reply
ET on #
话说你是09级的吗?
Reply
MadPer on #
好像忘了最重要的一句话,还没工作...还早着工作呢,连实习经验也还木有...
Reply
Dante on #
由于linux的python终端不支持readline,所以想重编一下,却突然想起来python官网的下载链接被屏蔽掉了……
可以去这里下载:
http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2
如果直接下载不来,就把这个链接放到迅雷里……
还有如果想编译加入readline的话,
需要调用如下命令:
./configure --enable-readline
Reply
itxx on #
use ipython
Reply
grassofhust on #
问下楼主层叠式的回复样式是用的什么wordpress插件啊?
Reply
Dante on #
我启动
Wordpress Thread Comment
就自动这样了……
Reply
grassofhust on #
Thanks Dante!
Reply
Glools Guan on #
你好, 最近研究python,看到你的文章很好,多谢,顺便有个问题想问一下,你如何推广自己的blog,我也有blog,地址 glools.just-life.me, 但是访问量很低,求赐教,多谢。
Reply
www.cclove.me on #
你有博主那么牛么
Reply
党明 on #
显示不了helloworld啊。。。
Reply