首页 > 代码库 > 使用web.py 搭建服务器

使用web.py 搭建服务器

有很多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) 读写同步

技术分享技术分享

使用web.py 搭建服务器