【问题标题】:Using apache mod_wsgi test error ---windows environment使用apache mod_wsgi测试报错---windows环境
【发布时间】:2018-08-10 02:59:27
【问题描述】:

我见过很多与我的问题类似的解决方案,但没有一个适合我。请帮我解决它。 首先,我想测试我的 apache 的 mod_wsgi。

httd.conf:

LoadFile "e:/zt_6.27/python/python35.dll"
LoadModule wsgi_module "e:/zt_6.27/python/lib/site- 
packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "e:/zt_6.27/python"

<VirtualHost *:80>       
    WSGIScriptAlias /myapp E:\zt_6.27\Apache24\htdocs\myapp.wsgi
    <Directory 'E:\zt_6.27\Apache24\htdocs'>
        Require all granted
        Require host ip
        Allow from all
    </Directory>
</VirtualHost>

myapp.wsgi:

def application(environ,start_response):
  status='200 OK'
  output='Hello wsgi!'
  response_headers=[('Content-type','text/plain'),('Content-Length',str(len(output)))]
  start_response(status,response_headers)
  return[output]

我重新启动我的 apache 服务,调用“http://localhost/myapp”。

它返回 500 内部服务器错误。

我打开apache的error.log。

它显示:

[Fri Aug 10 10:33:35.803119 2018] [wsgi:error] [pid 9252:tid 1408] [client 
::1:57261] mod_wsgi (pid=9252): Exception occurred processing WSGI script 
'E:/zt_6.27/Apache24/htdocs/myapp.wsgi'.
[Fri Aug 10 10:33:35.803119 2018] [wsgi:error] [pid 9252:tid 1408] [client 
::1:57261] TypeError: sequence of byte string values expected, value of type 
str found\r

我仔细检查了代码,没有问题。

我做错了什么?

除此之外,我昨天成功运行了这段代码,今天出错了。

请帮帮我!!

【问题讨论】:

    标签: apache flask mod-wsgi


    【解决方案1】:

    如果使用 Python 3,则必须使用:

    def application(environ,start_response):
      status = '200 OK'
      output = b'Hello wsgi!'
      response_headers = [('Content-type','text/plain'),('Content-Length',str(len(output)))]
      start_response(status,response_headers)
      return[output]
    

    即改为:

    output = b'Hello wsgi!'
    

    返回的列表中必须有字节字符串,而不是 unicode 字符串。

    要返回 unicode 字符串,您需要将它们转换为字节字符串。我在这里作弊,只是将其标记为字节字符串开始,但您应该将它们编码为字节字符串作为 UTF-8。

    我建议使用像 Flask 这样的微框架,因为它会为您处理这些细节。

    【讨论】:

    • 但是当我使用烧瓶运行时出现了另一个问题。它返回错误“[Fri Aug 10 12:19:19.108314 2018] [wsgi:error] [pid 8688:tid 1408] [client : :1:65087] ImportError: No module named 'flask'\r"
    • 我该如何解决这个错误?
    • 如果上面的答案解决了你原来的问题,接受它,然后为你的下一个问题创建一个新问题。您的新问题的明显答案是,您是否安装了 Flask。
    猜你喜欢
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多