77家的会客2010

关于N3CP

新版的命名是基于上一版的N3C的,之所以加个P,是因为现在的版本用的是PYTHON的WEB框架web.py。

小巧,但是却很强大。

不想说太多,毕竟是自己做来用的,说几个关键词吧。

web.py SQLAlchemy Jinja2 SQLite

空间用的是张教主的stdyun.com那儿买的,APACHE跑FASTCGI。

算是给自己做个备忘吧,下面这个问题的解决方法:

访问服务时出现“Premature end of script headers: run.fcgi”错误,主要有以下几种可能的原因。

1、权限问题,将run.fcgi chmod为755或777。

2、run.fcgi顶部设置python的路径不对。

3、run.fcgi里面不能有WINDOWS格式的换行符(\r\n),使用正则表达式替换成\n即可,其它的py文件可无此限制。

4、run.fcgi语法错误,这个是低级错误,没什么好办法,自己慢慢找吧。

 

2014/08/14 补充一下,很多时间出现这个错误的原因,是相应支持的包没安装,这时在服务器上运行python ./run.fcgi就可以看到详细的错误,比如我的web.py没装或是PIL没装

历史上的今天: [2009/04/06]腐败证据

[关于N3CP]的回复

unicac 于 2010-04-06 22:52:01 发表 | IP:60.176.148.*
完全不会PYTHON
柠檬园主 2010-04-06 22:54:32 回复:

会一样精通一样就行,我这都弄杂了

Sutra 于 2010-04-07 10:50:13 发表 | IP:222.73.86.*
Sutra,手拉手,我们是好朋友吧~x
柠檬园主 2010-04-07 11:07:26 回复:

嗯,勿論だよ、现在这些词还不太多才10几个,我找找弄个几十个的来玩儿。

vikingcat 于 2010-04-07 17:53:48 发表 | IP:119.112.209.*
我到家了哈..
柠檬园主 2010-04-07 21:19:30 回复:

哦,我知道了。

4#   Jackie 于 2010-07-15 22:58:26 发表 | IP:202.129.189.*
觉得你写的很不错, 从我这里访问的速度飞快, 感觉没有服务器的延迟

看到你一开始是使用.net写的, 后来用web.py. 我正在学web.py, 被它的简洁直接所吸引, 我的好朋友是M$的忠实粉丝, 想问你对两种开发都什么感觉, 你更喜欢哪种?
柠檬园主 2010-07-17 14:55:25 回复:

感谢支持~服务器可能是因为张教主的主机上一来用户不是太多,二来没什么大型应用。

.net和python开发,差异还是相当大的。我说一下两者比对方好在哪儿吧,反过来就是不如对方的。

对于.net,有个非常好用的IDE,文档也根本不是问题,并且由于是编译执行,速度肯定是不成问题。

对于python,尤其是web.py,我用的ulipad虽然不如VS,但还算好用,web.py的文档也很全面,包括很多咱们翻译过来的文档,并且本身功能就很强大,强大到不用其它的第三方包就完全可以实现一个应用了。由于python的原因,一来跨平台,很多第三方包都可以用,并且上手特别快,以前用.net写了两个月,而用web.py从开始学到网站做完就用了一个月。很重要一点,是完全摆脱了M$的束缚,并且由于python是脚本执行,要改点什么很方便,想像一下改asp和改asp.net的差别吧。

5#   Insion 于 2011-03-21 21:15:27 发表 | IP:113.119.118.*
张教主是何许人?这虚拟主机你用了以来感觉怎么样?我想入股了...
柠檬园主 2011-03-21 21:42:57 回复:

stdyun.com/vhost 这儿就是张教主的主机,用着嘛,空间相当大,速度也蛮不错的,用了一年多了,就前两天不知道为啥当了次机,再没出别的问题

6#   Insion 于 2011-03-21 21:44:21 发表 | IP:113.111.206.*
张教主怎么联系?有QQ否?能备案吗?我想在国内做个python的网站玩玩~
柠檬园主 2011-03-21 22:33:08 回复:

QQ我还真不知道,你可以通过zsp007 这个关键字来搜索他或是直接接上@GMAIL.COM来联系他。

弄了空间以后把资料给他,他就能给你备案。5G空间,30G/月流量

7#   Insion 于 2011-03-21 22:35:19 发表 | IP:113.119.118.*
嗯,能备案就行,我买个用下~谢谢啦~
8#   Insion 于 2011-03-22 00:21:38 发表 | IP:113.119.116.*
不好意思,又来打扰你了,我实在找不到那位张姓教主的联系方式,不知你说的GMAIL在哪个位置..
柠檬园主 2011-03-22 17:23:27 回复:

那个就是张教主的邮箱嘛,你直接给他发邮件就可以了。

我给你的关键字@gmail.com,直接公开他的邮箱容易被SPAMER盯上嘛

9#   unicac 于 2011-05-28 06:29:07 发表 | IP:114.95.35.*
主机中介...哈哈
柠檬园主 2011-05-28 23:46:55 回复:

呵呵,顺便顺便。。。张教主一不给我优惠二不给我加空间。。。

10#   wonder 于 2011-05-30 22:46:38 发表 | IP:182.113.75.*
速度确实飞快, 感觉好像服务器就运行在自己的电脑上一样.
柠檬园主 2011-05-31 13:18:55 回复:

嗯嗯,服务器挺给力的

11#   fred 于 2011-07-11 20:57:43 发表 | IP:183.70.135.*
可以分享下服务器配置吧?
柠檬园主 2011-07-11 23:21:13 回复:

 

如何配置web.py 作者:miflyking

1. 安装配置python。(一般用户都自动增加了,可以从第3步操作)

ssh 登录后,运行如下命令:

virtualenv .

2. 新增.profile文件,把下面的内容复制粘贴到.profile :(可以用vi,或者在win下建好后通过ftp上传)

export PATH=$HOME/bin:$PATH
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$HOME/include/:$HOME/include/
python2.6/
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$HOME/include/:$HOME/
include/python2.6/
export LC_CTYPE=en_US.UTF-8
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib
export LD_RUN_PATH=$LD_RUN_PATH:$HOME/lib
export LIBRARY_PATH=$HOME/lib
export LDPATH=$LDPATH:$HOME/lib

* 重新ssh登录后生效。

2. 安装easy_install:

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py 

3.安装web.py:

* 方法一: easy_install web.py

方法二: 把在web.py官网下载回来的web.py-xxx.tar.gz解压后是webpy文件夹,将其通过ftp上传到空间上。webpy目录下有个setup.py文件,用python 运行即可:

cd webpy
python ./setup.py

4. 配置fcgi处理python的请求。这里我打算用py目录作为python的web应用。新建文件夹:

cd ~
mkdir py

win下新建run.fcgi,将下面的内容复制粘贴到run.fcgi中,然后通过ftp上传到空间刚新建的py文件夹中:

#!/path/to/your/python
#coding:utf-8
import web

class hello:
   def GET(self,rzxxvbagw):
       return 'Hello, world!'

urls = ("/(.*)", hello)
app = web.application(urls, globals(),False)

if __name__ == "__main__":
   web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func,addr)
   app.run()

5. 在空间管理配置中新增目录绑定,新增一个/py $HOME/py/run.fcgi python的绑定。(目录根据实际情况做修改)

完成,浏览http://mydomain_name/py 就能看到熟悉的Hello, world!

需要注意的地方

1. linux和win的换行符不同。开始我上传run.fcgi后,浏览发现404,张教主检查了好久,才发现run.fcgi的换行符导致,建议大家的ide、编辑器设置下换行符为linux下的。

2. 需要设置web.py的autoreload 为False.见上面的run.fcgi中的

app = web.application(urls, globals(),False)
                

* 代码,最后的False就是设置autoreload,开发环境可以设置为True。

Post a Comment~