2013-05-03 13 views
5

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)

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; 
    } 
} 
  1. restart nginx con "/ path/to/usr/sbin/nginx -s ricaricare"
  2. avviare il processo di uwsgi -> cambia in "cd /usr/local/uwsgi-2.0.9" -> ./uwsgi -ini /var/www/myapp.conf
+0

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

Problemi correlati