No meu sistema de desenvolvimento, estou executando um aplicativo Flask WSGI com uwsgi e nginx. Porém no servidor de produção preciso usar o Apache em vez do nginx, então estou tentando fazer isso. No nginx o site é montado assim:
location /flaskapp { uwsgi_pass unix:/tmp/flaskapp.sock; }
e funciona. No Apache eu tentei isso:
ProxyPass /flaskapp unix:/tmp/flaskapp.sock|uwsgi://flaskapp
o que me dá um erro 503 com isso no arquivo de log:
[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
Ativei os módulos mod_proxy e mod_proxy_uwsgi. Não entendo a parte "nenhum arquivo ou diretório". O arquivo de soquete está claramente onde deveria estar.
É claro que parei o nginx e reiniciei o Apache para evitar que o nginx mantivesse o controle nesse soquete.
Odocumentaçãoda diretiva ProxyPass não explica o que significa a parte após o caractere pipe ("|"), então não sei o que colocar lá e por quê.
Responder1
Eu tinha uma configuração semelhante para um aplicativo Django e resolvi essa mensagem de erro movendo o local do arquivo de soquete de /tmp
para /var/lib/uwsgi
. Certifique-se de que /var/lib/uwsgi
pertence ao mesmo usuário e grupo em que seu servidor web e uWSGI são executados para que uWSGI possa criar o arquivo de soquete.