Frasco, nginx y uwsgi

Mi aplicación matraz se parece a esto …
myapp.py

from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run('0.0.0.0') 

Mi configuración nginx

 server { root /home/admin.jeremylspencer.com; server_name admin.jeremylspencer.com; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; } #error_page 404 /404.html; #error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } location ~ /\.ht { allow all; } } 

Entonces finalmente reinicio nginx y ejecuto esto:

sudo uwsgi -s /tmp/uwsgi.sock –module myapp –callable app Y esta es la salida

 *** Starting uWSGI 1.4.3 (64bit) on [Mon Dec 10 15:41:00 2012] *** compiled with version: 4.6.3 on 10 December 2012 13:06:15 os: Linux-3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:33:09 UTC 2012 nodename: jeremylspencer.com machine: x86_64 clock source: unix detected number of CPU cores: 2 current working directory: /home/admin.jeremylspencer.com detected binary path: /usr/local/bin/uwsgi uWSGI running as root, you can use --uid/--gid/--chroot options *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** *** WARNING: you are running uWSGI without its master process manager *** your processes number limit is 31285 your memory page size is 4096 bytes detected max file descriptor number: 1024 lock engine: pthread robust mutexes uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3 Python version: 2.7.3 (default, Aug 1 2012, 05:25:23) [GCC 4.6.3] *** Python threads support is disabled. You can enable it with --enable-threads *** Python main interpreter initialized at 0x1dfa790 your server socket listen backlog is limited to 100 connections mapped 72392 bytes (70 KB) for 1 cores *** Operational MODE: single process *** WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1dfa790 pid: 13645 (default app) *** uWSGI is running in multiple interpreter mode *** spawned uWSGI worker 1 (and the only) (pid: 13645, cores: 1) 

Pero aún así, todo lo que recibo es un error 502 … ¿cómo puedo solucionar esto?

Los sockets Unix son objetos del sistema de archivos, por lo que nginx necesita permisos de escritura para /tmp/uwsgi.sock

Está ejecutando uWSGI como root (¿por qué?), Por lo que /tmp/uwsgi.sock será propiedad de root, mientras que nginx generalmente se ejecuta como “nobody” o www-data.

Si no desea tener en cuenta los permisos, solo use sockets TCP, pero obviamente no ejecute su aplicación como root.

Puede ver esto en: Frasco de Python con Nginx y uWSGI ya que el repository proporciona el caso / escenario exacto sobre cómo usar Flask en el modo de producción .