clean code

i create stuff

[老博文迁移]web.py+fastcgi+nginx 502

| Comments

web.py照着官方文档在服务器上搭好了后台。这次很奇怪地出现了一个Nginx 502 Bad Gateway的错误。

执行上面的kill `pgrep -f "python /path/to/www/index.py"`会出现错误提示,可是启动脚本的时候明明是提示spawn-fcgi: child spawned successfully: PID: 32401的信息的,然后还可以继续执行spawn-fcgi -d /path/to/www -f /path/to/www/index.py -a 127.0.0.1 -p 9002的脚本 ,同样会提示成功。

原因是进程确实创建成功了,但是又马上终止了!! 这时用spawn-fcgi-n选项就能看到错误信息了。原来是index.py里少了一行import os,一开始就出错了,而不是访问某个具体地址时会报错。类似的情况在php下面也容易碰到,php的语法错导致php5-fpm一开启就死掉,用php5-fpm -e可以查看错误原因。

这里还要注意是否是按照官网上的步骤配置的web.py部署条件,有没有安装web.py, spawn-fcgi和flup,如果没有安装可以用sudo pip install web.pysudo apt-get install spawn-fcgisudo apt-get install python-flup(ubuntu下),没安装依赖也会导致同样的错误。

解决是google到这里的解决方案。

2014-9-10 于博客园

迁移批注:
这是在部署冰岩新官网出bug后写的博文, 其实是使用web.py线上代码和开发环境不一致导致的(服务器采用Nginx+FastCGI, 本地是直接解释器运行), web.py在部署时还得根据环境改代码, 这种做法是非常操蛋的, 我也没找到最佳实践, 而flask就不存在类似问题. 另外web.py的作者已经饮弹自尽, 没有继续开发了, 加上文档缺失等原因, web.py已经被抛弃了, 不过它足够简单, 作为Python web开发入门的学习框架还是很合适的, 它也是我的初恋, 相爱相杀! tornado与它写法很相似, 闲下来我会学习的!

502 Bad Gateway其实很常见, 字面意思是网关错误, 原因几乎都是前端Nginx将请求反向代理到后端的进程, 如uwsgiphp-fpm等进程管理工具跑起来的进程, 没有成功运行导致的, 这种情况首先应该检查进程有没有起, 生产环境与开发环境是否不同.

Comments