python webpy来搭建web应用 (一些问题)

近日.写了个简单的短域名服务(tlt.cn),在服务器上用spawn-fcgi启动时老是提示:
spawn-fcgi: child exited with: 127
spawn-fcgi: child spawned successfully: PID: 20606
spawn-fcgi: child spawned successfully: PID: 20607
spawn-fcgi: child spawned successfully: PID: 20608
-----------------------------------------------------------
在网上找了很久,大都说是文件编码的问题,但具体怎么修改一直没有找到.折腾了一上午后,将py中的代码copy到一个新建的文件中去,然后再运行,Ok,搞定!
----------------------------------------------------------
总结: 由于我之前写的的py文件是在windows下写的,将其上传到linux服务器时便出现这种情况.主要还是文件保存时所使用的一些换行符及编码不同造成的..这种情况可以先在linux下新建一个py文件,然后将代码copy到里里!

 

===

 

首先写好基本简单的web应用(webmain.py):
#!/usr/bin/env python
#coding=UTF-8
import os,sys
import web
urls = (    ‘/adduser’,'adduser’ #ok   )
web.config.debug = False
app = web.application(urls, globals())
#添加用户
class adduser:
def GET(self):
return “hello world”
def POST(self):
return “hello world”
if __name__ == “__main__”:
web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
app.run()

更改权限:chmod +x webmain.py

环境依赖的软件包:

Nginx 0.8.* or 0.7.* (需要包含fastcgi和rewrite模块)。
Webpy 0.32
Spawn-fcgi 1.6.2
Flup

cd /usr/ports/www/spawn-fcgi    &    make install clean

cd /usr/ports/www/py-flup     &make install clean

需要的安装包安装完毕,然后配置nginx.conf,我在此处nginx监听的端口是8085,python应用监听的是9995

server {        listen       8085;        server_name  localhost;
#charset koi8-r;
#access_log  logs/host.access.log  main;
location / {            include fastcgi_params;    fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;  # [1]    fastcgi_param PATH_INFO $fastcgi_script_name;        # [2]    fastcgi_pass 127.0.0.1:9995;        }

配置完成,启动服务:

spawn-fcgi -d /usr/project/www -f /usr/project/testWebpy/webmain.py -a 127.0.0.1 -p 9995

/usr/local/nginx/sbin/nginx -s reload

然后访问http://ip:8085/adduser,得到返回信息”hello world”

FAQ:

spawn-fcgi: child exited with: 2  解决方案:chmod +x webmain.py

spawn-fcgi: child exited with: 127 解决方案:重新copy到控制台下,原因:有windows回车符

 

===

在用nginx + python + spawn-fcgi部署项目的时候,经常会出现一些问题。解决后,以为自己明白了,下次碰到的时候,还是会忘记。

常见的问题记录一下:

spawn-fcgi -d /path/to/www -f /path/to/www/index.wsgi -a 127.0.0.1 -p 9002

1)problem spawn-fcgi child exited with 126:

index.wsgi 脚本缺少执行权限。

solution: chmod +x main.py

2) problem spawn-fcgi child exited with 2:

index.wsgi不知道用哪个脚本来执行
solution: insert #!/usr/bin/env python into header of index.wsgi

3)problem spawn-fcgi child exited with 1:

可能是你的wsgi脚本有语法错误,可以尝试用python 直接执行index.wsgi检查一下。

posted on 2013-11-12 20:43  一个石头  阅读(1670)  评论(0)    收藏  举报