如何用python和web.py搭建一个网站

Python016

如何用python和web.py搭建一个网站,第1张

一、使用工具:python、web.py

二、搭建步骤:

1、 环境搭建。

安装python2.7.10,注意要把python路径加入系统环境变量。版本不能低于2.7.9,但不能用3.0以上,web.py支持不好。安装web.py, 官方网下载来装就行,记得是解压后进去:python setup.py install,安装wingIDE,这个是最好用的python编辑器,装apache并配置python-wscgi,

2. 开发。

建立数据库建议写个生成脚本,比如createDataBase.py,有改动重新运行一遍,不要试用ide去建。

3. 发布网站

发布网站用apache+pywscgi即可,当然如果用户少需求不高直接在命令行python index.py 8080也能让网站跑起来,但是这样有几个缺点:

a. 所有到这台服务器这个系统的8080端口访问都变成了这个网站,也就是说如果你无法指定特定域名了。

b. 静态文件都是每次去读文件非常慢,比如你的网站logo,网站js,字体等,会极大的拖慢网站速度!!!这个非常严重,这个是我试用apache的主要原因。专业服务器程序优化的好,实测快了不少。

三、注意事项:注意要把python路径加入系统环境变量。版本不能低于2.7.9,但不能用3.0以上,web.py支持不好。

1. 环境搭建。

环境搭建比较繁琐,记得当时也是满世界找资料,所以我直接打包好了所有的文件(apache(已经放进去python-wscgi) + web.py+apache所需要的vs2010运行库+python+网站文件),直接解压放上去就能用。有需要同学让我传一个或者网盘发一把就行。

如果在windows,最好在win7以上版本,我用win8。linux则ubuntu较好,建议12.04以上版本,不过linux我仅仅是开发用过,最终运行的服务器是采用windows+apache:

安装python2.7.10,可以去官方网站下载,注意要把python路径加入系统环境变量。版本不能低于2.7.9,但不能用3.0以上,web.py支持不好。

安装web.py, 官方网下载来装就行,记得是解压后进去:python setup.py install

安装wingIDE,这个是最好用的python编辑器,可惜只能有几天试用,我就是不停的试用进行开发,用它的好处就是代码可以跳转并且支持调试,需要调试直接将程序文件run起来,单步下段点都可以。

装apache并配置python-wscgi,这个比较惨,花了好多时间去搜索才搞定,主要是windows上的python-wscgi不好难找。

为了节省以后的开发时间,我把配置好的apache给打包了,反正也是绿色的,新建网站只需要在服务器上配置开机启动apache,并在apache的config里面修改下自己网站路径就行。

2. 开发。

开发阶段倒是没什么好说的,web.py官方有教程,不过这里我需要提几点建议:

如果可以务必全站用utf-8编码。

建立数据库建议写个生成脚本,比如createDataBase.py,有改动重新运行一遍,不要试用ide去建。

是呼入呼出都通知,还是只呼入或呼出,在Nway.conf配置文件中有个

```

#all,caller,callee

#all 所有

#caller 呼出

#callee 呼入

event_direction=caller

```

在这里我们假设有一个工号为 8000,密码是1234,绑定的坐席是1001

python代码需要 pip install websocket-client

然后存为wspython.py

python wspython.py 即可

注册一个分机到139.196.40.50 ,这里的例子是1001,139.196.40.50:5062,密码1234 就等着看吧

```

__author__ = 'lihao,18621575908'

#https://github.com/websocket-client/websocket-client

import websocket

try:

import thread

except ImportError: # TODO use Threading instead of _thread in python3

import _thread as thread

import time

import sys

import json

def on_message(ws, message):

print(message)

def on_error(ws, error):

print(error)

def on_close(ws):

print("### closed ###")

def on_open(ws):

def run(*args):

s = '{"Agent":"8000","Password":"1234","Extension":"1001"}'

ws.send(s)

time.sleep(1)

thread.start_new_thread(run, ())

if __name__ == "__main__":

websocket.enableTrace(True)

if len(sys.argv) <2:

host = "ws://139.196.40.50:8084/fsgui"

else:

host = sys.argv[1]

ws = websocket.WebSocketApp(host,

on_message=on_message,

on_error=on_error,

on_close=on_close)

ws.on_open = on_open

ws.run_forever()

```

那么就会有关分机1001的消息都会送过来

--- request header ---

GET /fsgui HTTP/1.1

Upgrade: websocket

Connection: Upgrade

Host: 139.196.40.50:8084

Origin: http://139.196.40.50:8084

Sec-WebSocket-Key: bDwhhTj9SsceStSxymMF+w==

Sec-WebSocket-Version: 13

-----------------------

--- response header ---

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: 1Es8igdAgQfSXWXoDx4j2rwpOck=

-----------------------

send: '\x81\xb54\xfedSO\xdc%4Q\x90\x10q\x0e\xdc\\c\x04\xceF\x7f\x16\xae\x05 G\x89\x0b!P\xdc^q\x05\xccWg\x16\xd2F\x16L\x8a\x01=G\x97\x0b=\x16\xc4Fb\x04\xceUqI'

{"Result":200,"Message":"ok"}