NGINX сервер работает FLASK на Raspberry Pi - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь запустить приложение flask с сервером NGINX на Pi Model 3B +. Код в каталоге /home/pi/api/api.py. Я следую этой статье https://www.raspberrypi-spy.co.uk/2018/12/running-flask-under-nginx-raspberry-pi/

Мой 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 = true

Мой прокси-сервер uwsgi после удаления значений по умолчанию

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;
}
}

Мой файл 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.target

Но когда я запускаю сервер, используя

sudo systemctl status uwsgi.service

, я получаю эту ошибку

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)

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 22 апреля 2020

Ошибка указывает, что UWSGI не имеет разрешения на доступ к файлу api.py. Исходя из вашей конфигурации, UWSGI работает с пользователем и группой www-data. Убедитесь, что у этого пользователя или группы есть как минимум разрешения на чтение этого файла.

В качестве отступления, если вам не нужны некоторые из возможностей nginx (обработка сертификатов, множественные одновременные соединения, очень быстрое время отклика для файлов * stati c или некоторые другие функции), вы можете исключить nginx и UWSGI и иметь гораздо меньше поводов для беспокойства. Если это будет сервер * publi c, то да, продолжайте свой маршрут. Но если это какое-то частное устройство с простым веб-интерфейсом, устраните сложность.

...