python webpy来搭建web应用 (一些问题)
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检查一下。
浙公网安备 33010602011771号