设为首页 收藏本站
查看: 591|回复: 0

[经验分享] Windows+Python+Apache+wsgi

[复制链接]

尚未签到

发表于 2017-1-1 11:11:36 | 显示全部楼层 |阅读模式
刚用Python作为后台语言做了一个网站,测试服务器是Windows的,把网站发布到这台服务器上,可花了我好些时间。把遇到的问题在这里作个记录。
第一步、下载安装Apache2.2
第二步、下载安装Python2.7
第三步、为Apache配置wsgi模块
1、下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/  搜索wsgi,对应好python版本
2、解压,将mod_wsgi.so放到apache的modules目录下
3、配置,打开Apache目录下的conf\httpd.conf,搜索LoadModule位置,在后面加上
   LoadModule wsgi_module modules/mod_wsgi.so
第四步、把项目拷贝到服务器的任意目录下,如C:\www-data\projectname ,并在conf\httpd.conf文件中搜索DocumentRoot位置,后面加上:
WSGIScriptAlias / "C:/www-data/projectname/application.py"
# 此处application.py要改成自己项目启动的py文件名
<Directory "C:/www-data/projectname">
Order deny,allow
Allow from all
</Directory>


这时,我到Windows的服务里试图启动Apache,结果报错说:
Windows不能从本地计算机启动服务,请联系厂商什么什么的。。搞得我一头雾水,后来看了一下Apache目录下的logs,
发现报错信息:
can not load mod_wsgi.so
还有:ImportError: No module named site


到网上搜了一下,可能是因为Python的环境没有配好,于是添加环境变量 PYTHONPATH,值为Python的安装路径,如C:\Python27


再启动,报错:
can not import web,因为我用到的webpy,mysqldb等插件还没有下载安装呢。
我下载了mysqldb 的 tar格式文件,回来解压,想通过python setup.py install 的方式安装,但是安装报错:
cannot open include file:'config-win.h': No such file or directory
怎么办呢?看网上的解决方法五花八门,好像都不简单。后来,我重新下载了exe格式的mysqldb,直接运行安装,嘿!就可以了!


我再启动,开始报程序里面的错误了,No module named url。
url 是我自己写的Module,但明明在那个位置,它就是找不到,于是在启动程序的application.py 顶部加上两句:
import sys, os
sys.path.append(os.path.dirname(__file__))


再启动,报错说TemplateNotFound
我用的jinja2作为模板工具,八成又是路径的问题,它找不到我的模板。于是修改代码
render_jinja(‘/templates', encoding='utf-8')为

render_jinja(os.path.normpath(os.path.dirname(__file__) + '../templates'), encoding='utf-8')


再启动,终于看到不报错的页面了。但是它直接显示的Html代码,而不是页面!!
看一下响应头信息:context-type: text/plain, 怎么Apache把页面当成文本直接返回了??网上搜了一下,大概是Apache与wsgi之间的什么问题。。没时间看那么多了,不如自己在代码里给设置一下响应头好了。于是加上一段预处理的代码(这是webpy相关的代码):
webapp = web.application(urls, globals())
def my_loadhook():  
web.header('Content-type', "text/html; charset=utf-8")
webapp.add_processor(web.loadhook(my_loadhook))


再启动,终于可以看到正常的页面了,我泪流满面啊!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322390-1-1.html 上篇帖子: 开源工具 — Apache Commons Collections 下篇帖子: Apache httpd.conf 配置说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表