有很多python的web框架,web.py是一个轻量级Python web框架。她并不是使用很多的一个。
但并不妨碍她的简单实用。搭建一个嵌入式web服务器最好不过。
下面把笔者搭建过程做一个介绍:
1. 下载python 2.7.8 ,做交叉编译,需要依据自己的平台做修改:
./configure make python Parser/pgen mv python python_for_build;mv Parser/pgen Parser/pgen_for_build make distclean patch -p1 < Python-2.7.8-xcompile.patch ./configure --host=powerpc-linux --build=x86_64 --prefix=/home/myapp/Python-2.7.8/powerpc --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes --enable-shared export RFS=/home/newsys/rootfs make --jobs=8 CFLAGS="-g0 -Os -s -I${RFS}/usr/include -fdata-sections -ffunction-sections" LDFLAGS='-L${RFS}/usr/lib -L${RFS}/lib' make install #sudo make install DESTDIR=${RFS} PATH="${PATH}"
Python-2.7.8-xcompile.patch 是一个patch,可以去我的下载资源下载,其他类似“ac_cv_file__dev_ptc”都是按
实际情况添加的,希望大家不要遇到太多编译或者配置问题^-^ 最终生成python 目标平台安装包
2. web.py 和 flup
下载0.37版的web.py,貌似可以直接在pc的python环境,搭建web.py,flup,setuptools,然后拷贝到目标机对应目录,
比如:/usr/lib/python2.7/
flup的支持:python setup.py
setuptools支持: python setuptools-0_6c11-py2.7.egg
笔者制作了包含三者的资源,以供参考。可以到下载资源区下载
3. lighttp 环境
下面是lighttpd.conf文件的关键部分,笔者将代码放在/home/www/目录
fastcgi.server = ( "/code.py" => (( "socket" => "/tmp/fastcgi.socket", "bin-path" => "/home/www/code.py", "max-procs" => 1, "bin-environment" => ( "REAL_SCRIPT_NAME" => "" ), "check-local" => "disable" )) ) url.rewrite-once = ( "^/(.*)$" => "/code.py/$1" )
4. 可能遇到的问题:
》》child exited with status 127。。。
这个是由于window换行符引起,请用NOTEPAD++或类似工具,全部转换成unix格式
》》pcre support is missing, please install libpcre and the headers
pcre库的支持,交叉编译pcre即可
》》确保code.py具有可执行属性
5. session存在的问题
web.py的session使用过程中,笔者发现总是有问题,偶尔不响应请求,internal server error. 发现
session部分发生了异常。
由于web请求是多进程处理,两次web请求如果都对服务器端session文件读写,就需要同步。而web.py
并没有做这个处理。
修改 web.py session.py:
1) 添加一个线程锁
2) 读写同步