Настройка сервера Nginx для приложения python flask

я новичок в настройке сервера. И я хочу настроить свой экземпляр Amazon-EC2. Я настроил его в соответствии с этим документом. http://www.soundrenalin.com/about

Однако, когда я нажимаю на URL-адрес, возникает ошибка 502 Bad Gateway. Мой проект находится по этому пути: /home/ubuntu/dsn/app.
И дерево папок /home/ubuntu/dsn:

app/
    app.py
    static/
    templates/
    themes/
bin/
build/
include/
lib/
local/
run.py


Вот мой конфиг nginx (/etc/nginx/sites-available/default):

server {
        listen   80; 

        root /home/ubuntu/dsn/app
        index index.html index.htm;

        server_name localhost;
        location / { try_files $uri @app; }
        location @app {
             include uwsgi_params;
             uwsgi_pass unix:/tmp/uwsgi.sock;
        }
}

А вот и мой файл uwsgi.ini:

[uwsgi]
     chdir = /home/ubuntu/dsn/
     uid = www-data
     gid = www-data
     chmod-socket = 666
     socket = /tmp/uwsgi.sock
     module = run
     virtualenv = /home/ubuntu/dsn/   

И еще одна вещь:
Когда я запускаю команду tail -f /var/log/nginx/error.log, результат:

2013/06/09 15:58:11 [error] 5321#0: *1 connect() to unix:/tmp/uwsgi.sock failed (111: Connection refused) while connecting to upstream, client: <myip>, server: localhost, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/tmp/uwsgi.sock:", host: "54.218.14.213"

Как я могу это решить? Спасибо.


person saidozcan    schedule 09.06.2013    source источник
comment
в конфигурации nginx попробуйте тройную косую черту uwsgi_pass unix:///unix:/tmp/uwsgi.sock; . А лучше пользуйтесь мануалами на официальных сайтах   -  person b1_    schedule 09.06.2013
comment
Какая у вас версия uwsgi? Запустите uwsgi --version для проверки. У меня была аналогичная проблема, которая была исправлена ​​с помощью версии Python. Установка через apt дает старую версию, я думаю 1.1. Установка через pip даст вам версию 1.9. Pip устанавливается в /usr/bin/local/uwsgi, попробуйте ввести /usr/bin/local/uwsgi --version, он должен вернуть 1.9. Затем просто измените строку BINPATH в файле /etc/init/uwsgi на env BINPATH=/usr/local/bin/uwsgi.   -  person Joe Petrini    schedule 11.06.2013


Ответы (2)


Это может быть одна из следующих вещей:

  1. Ваш сокет UWSGI находится не в /tmp/uwsgi.sock
  2. У пользователя uwsgi или www-data нет прав на создание uwsgi.sock в вашем каталоге /tmp.

Если вы установили Uwsgi на Ubuntu 12.04, файл конфигурации должен находиться по адресу:

/usr/share/uwsgi/conf/default.ini

Вот конфигурация сокета по умолчанию в этом файле:

# bind to UNIX socket at /run/uwsgi/<confnamespace>/<confname>/socket
socket = /run/uwsgi/%(deb-confnamespace)/%(deb-confname)/socket

Вы должны создать файл конфигурации для конкретного приложения, похожий на мой. Я могу подтвердить, что он работает в виртуальной среде.

sudo vim /etc/uwsgi/apps-available/your-app.ini

Содержимое вашего-app.ini:

[uwsgi]
base = /home/nick/your-app.com

#location of the flask application file
file = /home/nick/your-app.com/main.py

#uwsgi varible only, does not relate to your flask application
callable = app

#uwsgi plugins
plugins = http,python

#to create within a virtual environment
home = %(base)/venv

pythonpath = %(base)
socket = /tmp/%n.sock
logto = /var/log/uwsgi/%n.log
workers = 3

Чтобы включить, вам нужно сделать символическую ссылку и перезапустить nginx.

#make sure that any user to write to the /tmp directory
sudo chmod 777 /tmp
sudo ln -s /etc/uwsgi/apps-available/your-app.ini /etc/uwsgi/apps-enabled/your-app.ini
sudo service uwsgi restart
person Nick Woodhams    schedule 10.06.2013

Из https://stackoverflow.com/a/33587478/260127

Вы можете использовать выскочку ubutu и опцию --emperor uwsgi, чтобы легко запускать приложения uwsgi на python.

person prosseek    schedule 07.11.2015