настройка Nginx для автоматического запуска flask с помощью uwsgi

#python #nginx #uwsgi

#python #nginx #uwsgi

Вопрос:

Я разрабатываю программы на python, и у меня есть файл flask, который их запускает. Сейчас я пытаюсь автоматически запустить flask из Nginx и связать их с uWSGI. Это не работает и застревает.

Я перешел на эту страницу.вот ссылка:https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/Я выполнил все необходимые шаги и получил ошибку 502 bad gateway. во время выполнения

 uswgi  --ini /var/www/tg/tg_uswgi.ini
  

Я получаю следующее

 [uSWGI] getting INI configuration from /var/www/tg/tg_uwsgi.ini
  

после этого я ничего не получаю.когда я запускаю свой сервер, он по-прежнему выдает мне 502 Bad gateway.

это мой tg_nginx.conf

 server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @yourapplication; }
    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/tg/tg_uwsgi.sock;
    }    
}
  

это мой tg_uwsgi.ini

 [uwsgi]
#application's base folder
base = /var/www/tg

#python module to import
app = fileforflk     //fileforflk is my flask file which calls other python 
                    //files
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file's location
socket = /var/www/demoapp/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log
  

это мой файл flask

 from flask import Flask
import browser          //python file the flask is calling
app = Flask(_name_)
@app.route('/test',methods= ['GET'])
def result():
   return ("success")
if _name_ == '_main_':
   app.run(host = '0.0.0.0',port=5000)

  

После получения конфигурации INI терминал ничего не показывает, и сервер по-прежнему возвращает неверный шлюз. пожалуйста, помогите мне с этим.

Комментарии:

1. if __name__ == '__main__': обратите внимание на двойные подчеркивания.

Ответ №1:

Вы должны определить:

 socket = /var/www/demoapp/%n.sock
  

И :

 uwsgi_pass unix:/var/www/tg/tg_uwsgi.sock;
  

должно соответствовать. Так, например, определите:

 socket = /var/www/tg/%n.sock
  

И :

 sudo chown -R www-data:www-data /var/www/tg/
sudo chown -R www-data:www-data /var/log/uwsgi/
  

Комментарии:

1. Я изменил его с demoapp на tg. все еще застреваю на terminal.it говорит [uSWGI] getting INI configuration from /var/www/tg/tg_uwsgi.ini и никаких результатов.

2. есть ли у кого-нибудь *.sock файл в /var/www/tg/ ?

3. У меня есть tg_uwsgi. файл sock в /var/www/tg/

4. В журнале ошибок nginx я получаю connect() to Unix:/var/www/tg/tg_uwsgi.sock failed (13: permission Denied) while connecting to upstream

5.итак, chown nginx:nginx или www-data:www-data для /var/www/tg/tg_uwsgi.sock просто обновил ответ