La maggior parte delle esercitazioni disponibili mostra come configurare uWSGI con un server HTTP upstream (come NGINX). Ma uWSGI da solo può funzionare egregiamente come router/proxy/bilanciatore di carico - fare riferimento this Per il mio progetto, non volevo installare NGINX in questo momento, così ho iniziato a esplorare l'opzione di servire le pagine web tramite uWSGI. La risposta qui mostra come configurarla con Pyramid.Imposta uWSGI come server web con piramide (senza NGINX)
5
A
risposta
10
Sto usando lo scaffold pyramid_mongodb, che ho modificato per farlo funzionare su python3. Vedi here per i dettagli. Supponendo di avere un progetto Pyramid (creato con pcreate -s pyramid_mongodb MyProject
). Qui ci sono le configurazioni uWSGI necessari in fase di sviluppo/production.ini
[uwsgi]
http = 0.0.0.0:8080
#http-to /tmp/uwsgi.sock - use this for standalone mode
#socket = :9050
master = true
processes = 2
harakiri = 60
harakiri-verbose = true
limit-post = 65536
post-buffering = 8192
daemonize = ./uwsgi.log
pidfile = ./orange_uwsgi.pid
listen = 128
max-requests = 1000
reload-on-as = 128
reload-on-rss = 96
no-orphans = true
#logto= <log file>
log-slow = true
virtualenv = <path to virtual environment>
#file = /path/to/pyramid.wsgi
#callable = application
need-app = true
Anche perché stiamo usando uWSGI possiamo commentare server
parte dalla ini
#[server:main]
#use = egg:waitress#main
#host = 0.0.0.0
#port = 6544
Per eseguire l'utilizzo di server uwsgi --ini-paste development.ini
2
Molto più facile! Non è necessario modificare affatto il file "development.ini". Creare nella cartella App in cui il vostro "sviluppo" e "produzione" file ini risiedono, un file chiamato "wsgi.app" con il seguente contenuto:
from pyramid.paster import get_app,setup_logging
ini_path = '/pathto/myapp/development.ini'
setup_logging(ini_path)
application = get_app(ini_path,'main')
create diciamo "myapp.conf" con il suo contenuto :
[uwsgi]
socket = 127.0.0.1:3053
uid = daemon
gid = daemon
venv = /pathto/myenv
project_dir = /pathto/myapp
chdir = %(project_dir)
master = true
plugins = plugins/python/python
check-static = %(project_dir)
static-skip-ext = .py
static-skip-ext = .pyc
static-skip-ext = .inc
static-skip-ext = .tpl
pidfile2 = /var/run/uwsgi/myinfo.pid
disable-logging = true
processes = 8
cheaper = 2
enable-threads = true
offload-threads = N
py-autoreload = 1
wsgi-file = /pathto/myapp/wsgi.py
e la configuation nginx è molto semplice:
server {
listen [xxxx:xxxx:xxxx:xxx:xxxx:xxxx]:80; #for IPv6
listen xxx.xxx.xxx.xxx:80; #for IPv4
server_name myapp.domain.com;
location/{
try_files $uri @uwsgi;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3053;
}
}
- restart nginx con "/ path/to/usr/sbin/nginx -s ricaricare"
- avviare il processo di uwsgi -> cambia in "cd /usr/local/uwsgi-2.0.9" -> ./uwsgi -ini /var/www/myapp.conf
Problemi correlati
- 1. WSGI vs uWSGi con Nginx
- 2. uWSGI + nginx per progetto django, errore con stringhe uwsgi
- 3. processi server multipli utilizzando nginx e uWSGI
- 4. Confronta nginx + Apache + mod_wsgi vs nginx + uWSGI?
- 5. uwsgi + django via Nginx - impostazioni uwsgi/spawn?
- 6. indesiderati HTTPS -> HTTP redirect con nginx + uwsgi + pallone app
- 7. Come scrivere per accedere a python con nginx + uwsgi
- 8. persistente oggetto Python in memoria per il server nginx/uwsgi
- 9. Registrazione degli errori del server Web Nginx e uWSGI in Sentry
- 10. Come eseguo uwsgi con virtualenv
- 11. server web nginx e apache
- 12. Django uWSGI NGINX Bad Request 400
- 13. Serve più siti Django con Nginx con UWSGI
- 14. Python: configurazione uWSGI per Nginx + BOCCETTA
- 15. Connessione NGINX + uWSGI Reset da Peer
- 16. Flask, Nginx, uWSGI Python Applicazione non trovata
- 17. nginx uwsgi e cgi python script
- 18. Carica file di grandi dimensioni nginx + uwsgi
- 19. Facile registrazione/debug dell'applicazione con nginx, uwsgi, flask?
- 20. Serve homepage statica con nginx e resto tramite uwsgi
- 21. nginx + uwsgi: - modificatore non disponibile richiesto: 0 -
- 22. Django + uWSGI tramite NGINX su Ubuntu 11.10
- 23. Esegui l'applicazione django via nginx + uwsgi in un sottotracciato
- 24. Come eseguire più siti django su Nginx e uwsgi?
- 25. come uccidere processo uWSGI
- 26. uWSGI keepalive
- 27. piramide: constructe route_url senza oggetto richiesta
- 28. Instradamento AngularJS senza server Web
- 29. nginx + uwsgi + flask - disabilitazione delle pagine di errore personalizzate
- 30. Imposta php include_path da nginx
La parte NGINX in questo caso è solo (facoltativa). Ma a questo punto l'applicazione dovrebbe essere in grado di ascoltare le richieste su http://127.0.0.1:3053 – SmileMZ