程序员人生 网站导航

在DreamHost的空间上安装web.py

栏目:综合技术时间:2014-03-18 20:55:59

最近在这个博客,我开始用这样带"/"的标题,原因是方便搜索.因为网上关于python的资料实在是少的可怜.能多做点贡献就多做点贡献吧,大家一起努力

话说前端时间蓝色理想的一个朋友给了我一份DreamHost的空间,于是我的python就有用武之地了.结果...折腾了快一个星期,才把这个python搞定,现在大家看这个网址: http://181920.net  就是用web.py输出的结果.
让我们从头开始,在DreamHost的空间上装个web.py

前期准备

工欲善其事,必先利其器.要在DreamHost上装个web.py得准备下列工具:

  • 运行shell命令和服务器端交互的软件:这个我是用putty
  • 上传文件用的ftp软件:这个我用cuteftp
  • python脚本编辑软件:这个我用IDLE

如何能操纵服务端

这个可以想象一下远程连接是怎么回事.一般DreamHost的用户会有一个帐号用来远程登陆到服务端,然后就可以进行一些操作.下载需要的文件,安装文件,配置apache服务器,配置mysql服务器等等等等.如果你要问你配置了你的,会不会影响到别人.我想应该是不会影响的.

关于putty

putty是DreamHost推荐使用的工具.用来输入命令和服务端交互.稍微小白些的解释,就是你通过putty和服务端连接,然后输入一些命令行,可以操作服务端的文件什么的.类似于在本机用cmd打开的命令行提示符那样的操作.
看这里的介绍: http://wiki.dreamhost.com/Putty
可以在这里下载: http://www.chiark.greenend.org.uk/~sgtatham/putty/
安装后打开putty,会让你输入服务器地址,这个地址是用户名@主机名,选择ssh登陆,完成后打开,会提示你输入密码.注意这个时候你开始在键盘敲你的密码,但是在putty的界面上并不会显示什么,直到你输入完密码,按回车.如果密码正确,就会出来一个欢迎界面,否则putty就会提示密码错误,要求再次输入.还有一种情况是密码正确了,但是putty自动关闭了.这是因为你的账户还没有使用shell的权限,需要到用户面板开通一下.
然后就是开始输入命令了,一些常用的命令,比如dir显示当前目录,cd进入到某个目录,mkdir新建文件夹,wget远程下载,tar解压缩...
基本明白了吧.
还有,如果要在里面粘贴文本,只要点击一下右键就可以.

关于ftp和关于IDLE

省略了.

开始安装web.py
基本上就是打开这个页面 http://wiki.dreamhost.com/Web.py 照着一步一步的来.
我在这里来个难点解说.

应该在哪个目录下?
是在你的web主目录下

我不用python2.4怎么办?
改成#!/usr/bin/env python2.3 就可以.

怎么修改web.py's web/wsgi.py?
这个其实挺费了一番功夫,一开始没看明白那些加加减减是什么意思,后来明白过来,就是打开wsgi.py这个文件,把runfcgi()里面的两句替换一下.
import flup.server.fcgi as flups
return flups.WSGIServer(func, multiplexed=True, bindAddress=addr).run()
替换成
import fcgi as flups
return flups.WSGIServer(func, multiplexed=False, bindAddress=addr).run()
要注意不要有多余的空格.

怎么使用vim命令修改.htaccess?
首先是敲入vim .htaccess
然后复制那一段,贴上去.然后检查下对不对.我复制粘贴的时候经常会把一开始Options的字母"O"给弄丢了,仔细检查下.没问题后,摁键盘上的ESC键,这个时候就进入命令模式,在输入":X",这是保存退出的意思.这就可以了.
如果不放心,可以在使用vim .htaccess命令,这个时候一般会提示文件已经存在,让你选择打开的模式,用只读模式看下有没有问题吧.
大家可以看看这个文章,我觉得挺好的: http://man.lupaworld.com/content/manage/ringkee/vim.htm

关于FCGI和web.py

在DreamHost的web.py是这么运行的:
web请求->apache->FCGI->web.py->.cgi程序页.
我不知道对不对,暂且这么理解吧.
但是如果你是和我一样,在用windows,那就会觉得有这样的问题:在本地如何编写程序,然后传到服务端看效果.因为我觉得是在本地在装apache和fcgi会是非常麻烦的事情,不如直接双击.py文件就自动启动一个web server简单啊.
后来我发现其实是可以实现的.我们来对比下web.py的程序和web.py+fcgi的程序,不同的就是最后如何解析文件:
web.py:
if __name__=='__main__':
    web.run(urls,globals())

web.py+fcgi:
def runfcgi_apache(func):
    web.wsgi.runfcgi(func, None)
if __name__ == "__main__":
   web.wsgi.runwsgi = runfcgi_apache
   web.run(urls, globals())

所以,我们只管在本地写我们的程序,最后上传到服务端的时候,就把最后的webrun部分改一下就可以.

稍微麻烦了些,但是比较简单快速的办法

其他

另外,我现在还是运行python2.3,我已经装了python2.5,但是还不清楚该怎么调用.需要再研究下.

暂时记得起来的问题就这么多,以后有需要了再补充.

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐