Απορία WSGI

George Notaras gnot at g-loaded.eu
Wed Sep 29 14:02:53 EEST 2010


On 28/09/2010 19:13, George Notaras wrote:
> 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.
> Τότε θα είχε νόημα.
> 
> Πιστεύω ότι το παραπάνω παράδειγμα θα βοηθήσει κάπως. Αυτά και σορρυ αν
> τα έγραψα λίγο βιαστικά.
> 

Εν ολίγοις, αυτό που ήθελα να πω χθες είναι ότι ένα django project είναι
στην ουσία μια ομάδα από django apps, τα οποία τρέχουν ταυτόχρονα στο
ίδιο vhost. Ο διαχωρισμός των django apps σε δύο διαφορετικά projects
μέσα στο ιδιο vhost δεν έχει καμία πρακτική αξία, παρά μόνο μπερδεύει τα
πράγματα επειδή μας αναγκάζει να πραγματοποιήσουμε αλλαγές όσον αφορά ta
apps εκτός του django project, δηλαδή στο configuration του web server.
Αυτό στις περισσότερες περιπτώσεις, όπως φαίνεται κι από το παράδειγμα
παραπάνω, σημαίνει ότι μειώνεται το "reusability" των django apps.


More information about the Linux-greek-users mailing list