Estoy tratando de ejecutar una aplicación de matraz con el servidor NGINX en Pi Model 3B+. El código en el directorio /home/pi/api/api.py. Estoy siguiendo este artículo https://www.raspberrypi-spy.co.uk/2018/12/running-flask-under-nginx-raspberry-pi/
Mi archivo ini WSGI
[uwsgi] chdir = /home/pi/api module = api:app master = true processes = 1 threads = 2 uid = www-data gid = www-data socket = /tmp/api.sock chmod-socket = 664 vacuum = trueMi proxy uwsgi después de eliminar los valores predeterminados
sudo nano /etc/nginx/sites-available/api_proxy server { listen 80; server_name localhost; location / { try_files $uri @app; } location @app { include uwsgi_params; uwsgi_pass unix:/tmp/api.sock; } }Mi archivo uwsgi.service
[Unit] Description=uWSGI Service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/home/pi/flasktest/ ExecStart=/usr/local/bin/uwsgi --ini /home/pi/api/uwsgi.ini [Install] WantedBy=multi-user.targetPero cuando inicio el servidor usando
sudo systemctl status uwsgi.serviceme sale este error
uwsgi.service - uWSGI Service Loaded: loaded (/etc/systemd/system/uwsgi.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-22 02:58:37 IST; 51min ago Main PID: 464 (uwsgi) Tasks: 3 (limit: 2319) Memory: 13.5M CGroup: /system.slice/uwsgi.service ├─464 /usr/local/bin/uwsgi --ini /home/pi/api/uwsgi.ini └─728 /usr/local/bin/uwsgi --ini /home/pi/api/uwsgi.ini Apr 22 03:40:32 websync uwsgi[464]: File "<frozen importlib._bootstrap>", line 677, in _load_unlocked Apr 22 03:40:32 websync uwsgi[464]: File "<frozen importlib._bootstrap_external>", line 724, in exec_module Apr 22 03:40:32 websync uwsgi[464]: File "<frozen importlib._bootstrap_external>", line 859, in get_code Apr 22 03:40:32 websync uwsgi[464]: File "<frozen importlib._bootstrap_external>", line 916, in get_data Apr 22 03:40:32 websync uwsgi[464]: PermissionError: [Errno 13] Permission denied: './api.py' Apr 22 03:40:32 websync uwsgi[464]: unable to load app 0 (mountpoint='') (callable not found or import error) Apr 22 03:40:32 websync uwsgi[464]: *** no app loaded. going in full dynamic mode *** Apr 22 03:40:32 websync uwsgi[464]: *** uWSGI is running in multiple interpreter mode *** Apr 22 03:40:32 websync uwsgi[464]: gracefully (RE)spawned uWSGI master process (pid: 464) Apr 22 03:40:32 websync uwsgi[464]: spawned uWSGI worker 1 (pid: 728, cores: 2)Amablemente ayuda
El error indica que UWSGI no tiene permiso para acceder al archivo api.py. Desde su configuración, UWSGI se ejecuta con el usuario y el grupo www-data. Verifique que ese usuario o grupo tenga al menos permisos de lectura en ese archivo.
Aparte, a menos que necesite algunas de las capacidades de nginx (manejo de certificados, múltiples conexiones simultáneas, tiempos de respuesta muy rápidos para archivos estáticos u otras características), podría eliminar nginx y UWSGI y tener mucho menos de qué preocuparse. Si este va a ser un servidor público, entonces sí, siga su ruta. Pero si se trata de un dispositivo privado con una interfaz web simple, elimine la complejidad.