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


Я пытаюсь разместить приложение WSGI (написанное на webpy, размещенное на Apache)на сервере Ubuntu. Всякий раз, когда я запускаю свое приложение, ответ JSON загружается вместо того, чтобы отображаться в браузере. Однако то же самое приложение отлично работает на localhost. Вот код приложения 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 / затем файл с надписью " Привет, Мир!"написанное в нем загружается.

Однако, когда я иду в www.mywebsite.com/project затем я получаю сообщение "не найдено"

1 2

1 ответ:

Что касается не найденной проблемы, я думаю, что тот факт, что сопоставление url начинается с косой черты, заставляет использовать косую черту после пути, указанного в записи WSGIScriptAlis в Apache conf.

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

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

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

Что касается загружаемого файла, а не отображаемого в браузере, я бы предложил вам использовать некоторые инструменты отладки браузера, такие как firebug или chrome developer tools, чтобы проверить, что такое тип содержимого возврата "hello world". Должен же быть какой-то выход web.py чтобы задать тип контента. смотрите здесь, как задать тип контента webpy: как обслуживать JSON

Надеюсь, что это поможет