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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用python和web.py搭建一个网站相关的知识,希望对你有一定的参考价值。

    环境搭建。

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

装apache并配置python-wscgi,这个比较惨,花了好多时间去搜索才搞定,主要是windows上的python-wscgi不好难找。
为了节省以后的开发时间,我把配置好的apache给打包了,反正也是绿色的,新建网站只需要在服务器上配置开机启动apache,并在apache的config里面修改下自己网站路径就行。

2. 开发。

开发阶段倒是没什么好说的,web.py官方有教程,不过这里我需要提几点建议:
如果可以务必全站用utf-8编码。

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

一. 基本概念

因特网起源于美国国防部高级研究计划管理局建立的阿帕网。网站(Website)开始是指在因特网上根据一定的规则,使用html(标准通用标记语言下的一个应用)等工具制作的用于展示特定内容相关网页的集合。

二. 建设网站考虑因素

1、网站的客户服务群体;

2、网站的内容方向和性质;

3、网站的功能描述和结构分析;

4、网站的用户体验;

5、网站的盈利方式;

6、网站的未来发展方向。

参考技术A 最近做了个项目,由于规模不大使用python + web.py框架,并且既可以在windows又可以在linux里面跑,确实很方便,开发也容易。
下面说说如何搭建这么个网站:
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去建。
下面是我这个项目网站代码入口文件的删减版:
[python] view plain copy
# -*- coding: utf-8-*-

import sys
import os
if "index.py" != __file__:
#这里切换工作目录主要是为了支持apache,让可以从任意路径运行此文件
sys.path.append(os.path.dirname(__file__))
os.chdir(os.path.dirname(__file__))

import re
import datetime

import web

web.config.debug = False

urls = (
"/", "Index",
"/index", "Index",

#....省略若干行业务url定义

#这里是为了调试的时候能够正常显示静态文件
'/(.*.(ico|png|jpg|jpeg|gif|js|bmp|css|svg|eot|ttf|woff]))', 'StaticFile',
)

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

#请保证数据库中有相应的表存储session,建表方法参考web.py的cookbook,不建议试用文件存session,多线程有问题
#init session
db = web.database(dbn='sqlite', db='db/StoneTeachMgr.s3db', driver="sqlite3")
store = web.session.DBStore(db, 'sessions')
sessionInit =
"userId":None,
"userName":None,
"accessClass":None,

web.config._session = web.session.Session(app, store, initializer=sessionInit)
web.config.session_parameters['cookie_name'] = 'StoneTeachMgr_session_id'
web.config.session_parameters['cookie_domain'] = "magicclass.org"
web.config.session_parameters['timeout'] = 600, #in seconds
web.config.session_parameters['ignore_expiry'] = True
web.config.session_parameters['ignore_change_ip'] = True
web.config.session_parameters['secret_key'] = 'xxxxxxxxxx'
web.config.session_parameters['expired_message'] = 'Session expired'
#init session end

class StaticFile:
def GET(self, file, suffix):
web.seeother('/static/'+file); #重定向

class Index:
def GET(self):
courseRender = web.template.frender('templates/index.html')
return render()

#这里这么写就可以即支持apache又支持直接运行此脚本运行网站
if not __name__ == "__main__":
application = app.wsgifunc()
else:
app.run()

3. 发布网站。
发布网站用apache+pywscgi即可,当然如果用户少需求不高直接在命令行python index.py 8080也能让网站跑起来,但是这样有几个缺点:
a. 所有到这台服务器这个系统的8080端口访问都变成了这个网站,也就是说如果你无法指定特定域名了。
b. 静态文件都是每次去读文件非常慢,比如你的网站logo,网站js,字体等,会极大的拖慢网站速度!!!这个非常严重,这个是我试用apache的主要原因。专业服务器程序优化的好,实测快了不少。
这里放以下apache中配置文件的修改段落:
文件:apache24/conf/httpd.conf
[plain] view plain copy
#for webpy start
LoadModule wsgi_module modules/mod_wsgi-py27-VC9.so
WSGIScriptAlias / "D:/web/StoneTeachMgr/index.py"
Alias /css "D:/web/StoneTeachMgr/static/css"
Alias /fonts "D:/web/StoneTeachMgr/static/fonts"
Alias /images "D:/web/StoneTeachMgr/static/images"
Alias /js "D:/web/StoneTeachMgr/static/js"
<Directory "D:/web/StoneTeachMgr/static">
AllowOverride all
Order allow,deny
Allow from all
</Directory>
#for web py end
D:/web/StoneTeachMgr/为网站路径
Alias那几行是定义网站的静态文件路径
主要是:WSGIScriptAlias / "D:/web/StoneTeachMgr/index.py"定义网站程序入口
主要就这点配置,另外apache的其它配置比如Listen则看需求自己改了

暂时就写这点,等有空了就补充,把配置方法也给补上。
参考技术B 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去建。

以上是关于如何用python和web.py搭建一个网站的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python 3 搭建网站?

如何用Python 3 搭建网站?

如何用Python搭建一个简单的推荐系统?

如何用Django从零开始搭建一个网站

wordpress怎样搭建网站

如何用pycharm搭建python