mod_wsgi me polla daemon processes

galas at tee.gr galas at tee.gr
Mon Sep 20 23:11:02 EEST 2010


> 2010/9/20 Antonis Christofides <anthony at itia.ntua.gr>:
>> Ελαφρώς off-topic, δεν έλαβα απάντηση από τη λίστα django-gr (όπου
επίσης ήταν ελαφρώς off-topic), οπότε ξαναρωτάω κι εδώ (πριν δοκιμάσω
και στην python-athens ή όπως λέγεται, αν και διαισθάνομαι ότι οι ίδιοι
άνθρωποι θα το διαβάσουν και στις τρεις λίστες :-).
>> Έχω δύο Django applications, το foo και το bar, που ακούνε στα
>> http://mydomain.com/foo και http://mydomain.com/bar. Apache
>> configuration:
>>     WSGIScriptAlias /foo /path/to/foo.wsgi
>>     WSGIScriptAlias /bar /path/to/bar.wsgi
>>     WSGIDaemonProcess django user=djangouser group=djangogroup
>>     WSGIProcessGroup django
>> Το ερώτημα: αν θέλω το foo να το τρέχει ο χρήστης foouser και το bar ο
χρήστης baruser, με άλλα λόγια κάθε εφαρμογή να την τρέχει εξωτερικό
wsgi process με διαφορετικά χαρακτηριστικά, πώς πρέπει να κάνω το
configuration;
> Χωρίς να είμαι ειδικός στο WSGI, νομίζω δεν μπορείς, παρά μόνο στην
περίπτωση που κάθε WSGI application βρίσκεται σε διαφορετικό
> virtualhost (οπότε χρησιμοποιείς διαφορετικά directives στο καθένα).
Εναλλακτικά, μπορείς να δοκιμάσεις τις seteuid κτλ μες στο wsgi script
(δεν ξέρω τι προβλήματα μπορεί να σου δημιουργεί αυτό).
>> (Και μπορείτε, επί τη ευκαιρία, να μου εξηγήσετε τι είναι το
>> WSGIProcessGroup, γιατί διαβάζω το documentatio αλλά δεν καταλαβαίνω,
χρησιμοποιεί όρους όπως "process group" και "context", που δεν
>> καταλαβαίνω τι θέλουν να πουν.)
> Αν δεν κάνω λάθος, αναφέρεται στην έννοια process group του UNIX. Δες το
http://en.wikipedia.org/wiki/Process_group. Αν δεν ξέρεις τι είναι
(χοντρικά, διαμοιράζονται μεταξύ των διεργασιών κάποια πράγματα),
χρησιμοποίησε διαφορετικό για κάθε WSGIDaemonProcess να ξεμπερδεύεις.

Όχι. Το WSGIProcessGroup αναφέρεται εδώ σε ομαδοποίηση των virtual hosts ή
των directories (αν υπάρχει ένας vhost) εν πάσει περιπτώσει που
σερβίρονται. Στην περίπτωση σου θα μπορούσε να είναι πχ.

WSGIProcessGroup foo και WSGIProcessGroup bar

θέλει όμως προσοχή στο εξής: η directive WSGIProcessGroup ορίζεται μέσα
στην directive για το <Directory ...> ενώ η WSGIDaemonProcess έξω από
αυτήν (στην αρχή του vhost για παράδειγμα) και θα πρέπει να ΤΑΥΤΙΖΟΝΤΑΙ.
Άρα το configuration πρέπει να είναι κάτι όπως:

WSGIDaemonProcess foo user=www-data group=www-data
<Directory foo>
WSGIProcessGroup foo

και αντίστοιχα για το bar.

τουλάχιστον έτσι παίζει στο setup που έχω κάνει για Trac. Δεν έχω
δοκιμάσει multiple users όσον (πχ. www-data και κάποιον άλλον) αλλά μπορώ
να το κάνω και να δώσω feedback (νομίζω αξίζει να δει κανείς και το
http://code.google.com/p/modwsgi/wiki/IntegrationWithTrac). Πάντως από
ό,τι αφήνει να εννοηθεί το documentation εδώ:
http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango, πρέπει να
παίζει και με πολλαπλούς χρήστες.

hope it helps

Μανώλης

> Αποστόλης
> --
> linux-greek-users mailing list -- http://lists.hellug.gr



More information about the Linux-greek-users mailing list