Απορία WSGI

George Notaras gnot at g-loaded.eu
Tue Sep 28 19:13:14 EEST 2010


On 28/09/2010 17:15, Antonis Christofides wrote:
> On 2010-09-28 16:44, George Notaras wrote:
>> Γενικά, νομίζω ότι είναι λάθος το concept του να τρέχεις δύο ξεχωριστά
>> django projects στο ίδιο virtualhost.
>>
>>    
> Επειδή με ενδιαφέρει, θα συνέχιζα αυτή τη συζήτηση στο
> Django-gr at googlegroups.com, αλλά δεν είμαι σίγουρος ότι είσαι γραμμένος
> (έψαξα αλλά δεν σε βρήκα). Οπότε, αν θες, απάντησε για το γιατί το
> θεωρείς αυτό (προσωπικά ή στη λίστα της αρεσκείας σου, που καλύτερα να
> είναι η django-gr αλλιώς φοβάμαι ότι εδώ μπορεί να κουράσουμε τον κόσμο).
> 

θα γραφτώ κάποια άλλη στιγμή στη λίστα αυτή γιατί τώρα δεν προλαβαίνω
και γι'αυτό απαντώ πολύ σύντομα. Επίσης δεν δηλώνω ειδικός περί django.
Απλά με αυτά τα πράγματα έχω παιδευτεί αρκετά μέχρι να μπω στο κλιμα.

Αυτό που κάνει το rewrite rule που έγραψες παραπάνω υποτίθεται ότι θα
πρέπει να το κανει το django project με το urls.py, οπότε είναι περιττό
να χρησιμοποιήσουμε rewrite rules. Επομένως, στον apache χρησιμοποιούμε
το απλό:

WSGIScriptAlias / /path/to/django.wsgi

Από εκεί και πέρα φτιάχνουμε κανονικά τα urls 1) μέσα στο urls.py του
django project και 2) στα urls.py του κάθε app μας.

Εξηγώ με ένα παράδειγμα γιατί μου φαίνεται πιο γρήγορο από το να το
εξηγήσω θεωρητικά και γενικά:

django project -- urls.py
-------------------------

urlpatterns = patterns('',
    ...
    # Urls gia to hello app
    url(r'^hello/', include(hello.urls)),

    # Urls gia to byebye app
    url(r'^byebye/', include(byebye.urls)),
    ...
)

Στη συνεχεια φτιαχνουμε τα urls του κάθε app.

hello app -- urls.py
--------------------

urlpatterns = patterns('hello.views',
    url(r'^world/$', 'world_view', name='world_view'),
)


Αντίστοιχα και για byebye app.

Οπότε τα urls δουλεύουν άψογα, χωρίς mod_rewrite και χωρίς να
μπερδεύονται τα urls των apps με το configuration του apache. Επιπλέον
τα apps μπορούν να διανεμηθούν και να χρησιμοποιηθούν χωρίς να
χρειάζεται να αλλαχτεί το apache configuration, με την προϋπόθεση ότι
στα installation notes γράφεται ότι πρέπει να προστεθούν τα urls του app
στο urls.py του django project (κάτι συνηθισμένο).

Μία περίπτωση στην οποία θα είχαν εφαρμογή τα rewriterules όπως το
παραπάνω που έγραψες θα ήταν, αν μέσα στο ίδιο vhost, ήθελες να τρέχεις
δύο διαφορετικά WSGI applications, πχ ένα django project και ένα trac.
Τότε θα είχε νόημα.

Πιστεύω ότι το παραπάνω παράδειγμα θα βοηθήσει κάπως. Αυτά και σορρυ αν
τα έγραψα λίγο βιαστικά.


More information about the Linux-greek-users mailing list