Respons dari aplikasi WSGI diunduh di browser alih-alih ditampilkan

Saya mencoba meng-host aplikasi WSGI (ditulis dalam webpy, dihosting di Apache) di server Ubuntu. Setiap kali saya menjalankan aplikasi saya, respons JSON diunduh alih-alih ditampilkan di browser. Namun aplikasi yang sama berfungsi dengan baik di localhost. Berikut kode aplikasi WSGI (diambil dari 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()     

Pengaturan konfigurasi Apache saya adalah -

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>   

Kalau dari browser, saya buka www.mywebsite.com/project/ lalu ada file dengan tulisan "Halo, Dunia!" tertulis di dalamnya diunduh.

Namun, ketika saya membuka www.mywebsite.com/project lalu saya mendapat pesan "Tidak Ditemukan"


person anu.agg    schedule 25.01.2012    source sumber


Jawaban (1)


sehubungan dengan masalah Tidak Ditemukan, saya pikir fakta bahwa pemetaan url dimulai dengan garis miring memaksa penggunaan garis miring setelah jalur yang ditentukan dalam entri WSGIScriptAlis di konfigurasi Apache.

karena aplikasi wsgi akan mencoba melakukan pencarian url yang benar-benar kosong jika tidak ada garis miring yang digunakan pada url tersebut. ini bisa diselesaikan dengan dua cara. untuk pengujian awal Anda dapat mengubah peta URL menjadi

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

atau Anda dapat menggunakan mod_Rewrite untuk selalu menambahkan garis miring setelah jalur, lihat di sini Tambahkan Trailing Slash ke URL

sehubungan dengan file yang diunduh alih-alih ditampilkan di browser, saya menyarankan agar Anda menggunakan beberapa alat debugging browser seperti firebug atau alat pengembang chrome untuk memeriksa jenis konten dari pengembalian 'hello world'. Seharusnya ada cara di web.py untuk mengatur tipe konten. lihat di sini untuk mengetahui cara menyetel tipe konten webpy: Cara menyajikan JSON

semoga beberapa di antaranya membantu

person olly_uk    schedule 25.01.2012
comment
Terima kasih olly_uk. Ini menyelesaikan kedua masalah tersebut. Sayang sekali, alih-alih mengembalikan objek json, saya mengembalikan string yang tidak ditampilkan di browser. - person anu.agg; 25.01.2012
comment
terima kasih, tidak ada masalah, hanya memeriksa Anda tidak memerlukan bantuan lagi :-) - person olly_uk; 06.03.2012