如何用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、网站的未来发展方向。
下面说说如何搭建这么个网站:
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则看需求自己改了
暂时就写这点,等有空了就补充,把配置方法也给补上。
环境搭建比较繁琐,记得当时也是满世界找资料,所以我直接打包好了所有的文件(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去建。