Ответ от приложения WSGI загружается в браузер, а не отображается

Я пытаюсь разместить приложение WSGI (написанное в webpy, размещенное на Apache) на сервере Ubuntu. Всякий раз, когда я запускаю свое приложение, ответ JSON загружается, а не отображается в браузере. Однако то же приложение отлично работает на локальном хосте. Вот код приложения WSGI (взято с http://library.linode.com/frameworks/webpy/ubuntu-10.04-lucid) -

import web
import os
import sys
app_path = os.path.dirname(__file__)
sys.path.append(app_path)
os.chdir(app_path)
urls = ('/(.*)', 'hello')

web.debug = False # You may wish to place this in a config file
app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc() # needed for running with apache as wsgi

class hello:        
    def GET(self, name):
          if not name: 
               name = 'World'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
     app.run()     

Мои настройки конфигурации apache:

WSGIScriptAlias /project /var/www/mywebsite.com/htdocs/project/main.py
<Directory /var/www/mywebsite.com/htdocs/project>
    Order deny,allow
    Allow from all
    SetHandler wsgi-script
    Options ExecCGI
</Directory>   

Когда из браузера я перехожу на www.mywebsite.com/project/, то файл с надписью «Hello, World!» написанное в нем скачивается.

Однако, когда я захожу на www.mywebsite.com/project, я получаю сообщение «Не найдено».


person anu.agg    schedule 25.01.2012    source источник


Ответы (1)


что касается проблемы Not Found, я думаю, что тот факт, что сопоставление URL-адресов начинается с косой черты, заставляет использовать косую черту после пути, указанного в записи WSGIScriptAlis в конфигурации apache.

поскольку приложение wsgi попытается найти полностью пустой URL-адрес, если в URL-адресе не используется косая черта. это можно решить двумя способами. для первоначального тестирования вы можете изменить карту URL на

urls = ('(.*)', 'hello')

или вы можете использовать mod_Rewrite, чтобы всегда добавлять косую черту после пути, посмотрите здесь Добавить конечную косую черту к URL-адресам

Что касается файла, загружаемого вместо отображения в браузере, я бы посоветовал вам использовать некоторые инструменты отладки браузера, такие как инструменты разработчика Firebug или Chrome, чтобы проверить, какой тип содержимого возвращает «hello world». В web.py должен быть способ установить тип контента. см. здесь способ установки типа содержимого webpy: как обслуживать JSON

надеюсь, что что-то из этого поможет

person olly_uk    schedule 25.01.2012
comment
Спасибо olly_uk. Это решает обе проблемы. Плохо, вместо того, чтобы возвращать объект json, я возвращал строку, из-за которой она не отображалась в браузере. - person anu.agg; 25.01.2012
comment
спасибо, проблем не было, просто проверил, больше помощь не нужна :-) - person olly_uk; 06.03.2012