刘韧的 1234 文体
1. mod_python 非常不主流,所有 Python 的 Web 框架都内置一个 HTTP Server 的实现(在 Python 世界里这样做太简单了),web.py 还包括了 FastCGI/SCGI 的支持。RoR 也同样通过 mongrel 提供了 web server 支撑。
2. lighttpd 支持反向代理,也支持 FastCGI,再加上它确实够轻,性能也不错,而且用 apache httpd 不够酷,于是它成了新潮 web hacker 们的最爱。
3. 其实我很有理由使用 lighttpd,因为我的内存只有 128M。但我想通过 http 端口来跑 svn,没办法,只有用 apache。编译的时候加上 rewrite/proxy 的支持
./configure --prefix=/usr/local/apache2 --enable-so -enable-ssl \ --enable-rewrite --enable-proxy --enable-proxy-http
mod_fcgid 的编译过程也很简单,直接 make; make install 就好了。
注意:fcgid 的配置为 SetHandler fcgid-script 而不是 fastcgi-script
4. 我下载的是 web.py 0.2,但网站上的关于如何运行在 Apache FastCGI 模式下的说明是错误的(怀疑说的还是 0.1 版本的方法)。我的方法是增加了这么两行
import os os.environ['PHP_FCGI_CHILDREN'] = "1"
注意:必须安装 flup 包,web.py 才能支持 FastCGI。
最后的配置为
-
<Directory "/usr/local/apache2/htdocs/papp">
-
Options ExecCGI
-
AllowOverride None
-
Order allow,deny
-
Allow from all
-
<Files code.py>
-
SetHandler fcgid-script
-
</Files>
-
Options +FollowSymLinks
-
<IfModule mod_rewrite.c>
-
RewriteEngine on
-
RewriteBase /papp/
-
RewriteCond %{REQUEST_URI} !^/icons
-
RewriteCond %{REQUEST_URI} !^/favicon.ico$
-
RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
-
RewriteRule ^(.*)$ code.py/$1 [PT]
-
</IfModule>
-
</Directory>
code.py 放在 htdocs 的 papp 目录下
5. RoR 的 mongrel 起在 8000 端口,我在 htdocs 下创建了一个 rapp 目录,然后配置 rewrite
-
<Directory "/usr/local/apache2/htdocs/rapp">
-
<IfModule mod_rewrite.c>
-
RewriteEngine on
-
RewriteBase /rapp/
-
RewriteRule ^(.*) <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a>$1 [P]
-
</IfModule>
-
</Directory>
有的网站上的配置是 ProxyPass 什么什么的,我的这个重写到本地端口的配置方法是从 karrigell 那里学来的,觉得也挺好的
Topic:
技术
评论
非常有用。 鉴定完毕
非常有用。
鉴定完毕。