[Python] Io lo so che coem sistemista faccio schifo

Roberto De Ioris roberto a unbit.it
Sab 21 Mar 2015 13:46:07 CET


> Allora ho seguito le istruzioni ma uwsgi non ne vuole sapere di partire.
> Il
> log file e' desolantemente vuoto, ho provato anche con /etc/init.d/uwsgi
> restart. Continuo a pensare che sia meglio il mestiere del piadinaro
> ambulante, alla fine.
>
> Carlos
>


Il fatto che parli di /etc/init.d/uwsgi mi lascia molto molto perplesso
(upstart e' il tuo unico obiettivo visto che sei su ubuntu.)

Hai seguito il quickstart che ti ho linkato da cima a fondo ? Ti e' tutto
chiaro ?

Ricapitolando:

- accertati di aver costruito un file di config decente, per cui se lanci
(da utente non privilegiato)

uwsgi nomefile.ini

hai l'output su terminale e ti puoi collegare con il browser alla porta
specificata con successo.

Un file di esempio (cambia <django_project> e <percorso_di_wsgi.py> con la
dir/file del progetto):

[uwsgi]
; avvia il server http sulla porta 8080
http = :8080
; cambia la directory nel progetto di django
chdir = <django_project>
; abilita il master
master = true
; metti 4 processi per avere un po' di concorrenza
processes = 4
; carica django
wsgi-file = <percorso_di_wsgi.py>


Quando funziona, ti fermi un attimo perche' dovrai prendere delle decisioni:

- con che utente e gruppo lo faccio girare (accertati che l'utente possa
leggere i file del progetto) ?
- dove voglio loggare (file, syslog, socket ...) (accertati che l'utente
possa creare/leggere/scrivere il file di log, in caso sia un file)?

ipotizziamo che l'utente sia pippo e il gruppo pluto e che vuoi loggare in
/var/log/uwsgi.log (ipotizzando che il tuo utente possa creare file dentro
/var/log, altrimenti usa /tmp o la dir del progetto). Aggiungi al file
.ini:

uid = pippo
gid = pluto
logto = /var/log/uwsgi.log


E rilancia (sempre da terminale):

uwsgi nomefile.ini

se tutto va bene vedrai solo un annuncio che il file .ini e' stato letto e
poi il terminale restera' appeso.

Apri il file di log e controlla che ci sia tutto.

Se c'e' tutto resta solo di sistemare upstart.

Crea /etc/init/uwsgi.conf

# simple uWSGI script

description "uwsgi tiny instance"
start on runlevel [2345]
stop on runlevel [06]

exec uwsgi --die-on-term percorso_assoluto_al_file.ini


(--die-on-term ti serve fino a 2.0, se stai usando uWSGI 2.1 il problema
dell'uso idiota di SIGTERM e' stato risolto)


Questo e' un setup "minimale", tutto il resto viene dopo.

-- 
Roberto De Ioris
http://unbit.com


Maggiori informazioni sulla lista Python