En mi sistema de desarrollo estoy ejecutando una aplicación Flask WSGI con uwsgi y nginx. Sin embargo, en el servidor de producción necesito usar Apache en lugar de nginx, así que estoy intentando hacerlo. En nginx el sitio está montado así:
location /flaskapp { uwsgi_pass unix:/tmp/flaskapp.sock; }
y funciona. En Apache probé esto:
ProxyPass /flaskapp unix:/tmp/flaskapp.sock|uwsgi://flaskapp
lo que me da un error 503 con esto en el archivo de registro:
[Fri Jan 01 13:19:45.551524 2021] [proxy:error] [pid 14167] (2)No such file or directory: AH02454: uwsgi: attempt to connect to Unix domain socket /tmp/flaskapp.sock (flaskapp) failed
[Fri Jan 01 13:19:45.551802 2021] [:error] [pid 14167] [client ::1:48950] AH10101: failed to make connection to backend: httpd-UDS:0
Habilité los módulos mod_proxy y mod_proxy_uwsgi. No entiendo lo de "no existe tal archivo o directorio". El archivo socket está claramente donde se supone que debe estar.
Por supuesto, detuve nginx y luego reinicié Apache para evitar que nginx retuviera ese socket.
Eldocumentaciónde la directiva ProxyPass no explica qué significa la parte después del carácter de barra vertical ("|"), así que no sé qué poner allí y por qué.
Respuesta1
Tenía una configuración similar para una aplicación Django y resolví este mensaje de error moviendo la ubicación del archivo socket de /tmp
a /var/lib/uwsgi
. Asegúrese de que /var/lib/uwsgi
sea propiedad del mismo usuario y grupo bajo el que se ejecutan su servidor web y uWSGI para que uWSGI pueda crear el archivo de socket.