为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

慕莱坞5435954 2019-07-08 04:04:30

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


查看完整描述

3 回答

?
精慕HU

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去建。


查看完整回答
反对 回复 2019-07-09
?
HUWWW

下面说说如何搭建这么个网站:
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则看需求自己改了



查看完整回答
反对 回复 2019-07-09
?
炎炎设计

一 新建工程 命令: django-admin startproject mysite # 有的需要输入: django-admin.py startproject mysite 这是你会发现在当前目录下,生成了一个文件夹mysite,其结构为: mysite/ manage.py mysite/

查看完整回答
反对 回复 2019-07-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信