Ответ от тут 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 ответ:
Что касается не найденной проблемы, я думаю, что тот факт, что сопоставление url начинается с косой черты, заставляет использовать косую черту после пути, указанного в записи WSGIScriptAlis в Apache conf.
Поскольку приложение wsgi попытается выполнить поиск для url-адреса, который полностью пуст, если в url-адресе не используется косая черта. это можно было решить двумя способами. для первоначального тестирования вы можете изменить URL-карту на
urls = ('(.*)', 'hello')
Или вы можете использовать mod_Rewrite, чтобы всегда добавлять косую черту после Пути, иметь смотрите здесь Добавить косую черту в URL-адреса
Что касается загружаемого файла, а не отображаемого в браузере, я бы предложил вам использовать некоторые инструменты отладки браузера, такие как firebug или chrome developer tools, чтобы проверить, что такое тип содержимого возврата "hello world". Должен же быть какой-то выход web.py чтобы задать тип контента. смотрите здесь, как задать тип контента webpy: как обслуживать JSON
Надеюсь, что это поможет