Windows+Python+Apache+wsgi

刚用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))


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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值