无法使用 nginx 运行烧瓶 wsgi 应用程序

Posted

技术标签:

【中文标题】无法使用 nginx 运行烧瓶 wsgi 应用程序【英文标题】:Unable to run flask wsgi app with nginx 【发布时间】:2017-12-25 19:10:07 【问题描述】:

我已经尝试使用 blog 在生产环境中使用 wsgi 服务器部署烧瓶应用程序

我已经按照上面提到的所有步骤进行了

sudo apt-get install build-essential python-dev python-pip

sudo pip install virtualenv uwsgi

bash virtualenv env source env/bin/activate pip install flask pip install -r requirements.txt

touch /home/lucy/myproject.sock

创建 wsgi.py

from myproject import app

if __name__ == "__main__":
    app.run()

创建了一个 systemd 单元文件。

sudo vi /etc/systemd/system/myproject.service




[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=lucy
Group=www-data
WorkingDirectory=/home/lucy/
Environment="PATH=/home/lucy/env/bin"
ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini

[Install]
WantedBy=multi-user.target

我们现在可以启动我们创建的 uWSGI 服务并启用它,以便它在启动时启动:

bash sudo systemctl start myproject sudo systemctl enable myproject

将uWSGI连接到nginx

首先,安装 Nginx(如果尚未安装)。

bash sudo apt-get install nginx

sudo vi /etc/nginx/sites-available/myproject

server 
    listen 80;
    server_name server_domain_or_IP;

    location / 
        include uwsgi_params;
        uwsgi_pass unix:/home/lucy/myproject.sock;
    

bash sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled sudo systemctl restart nginx

仍然,项目没有运行 nginx 给出连接拒绝错误 但是当我尝试

uwsgi -s /home/lucy/myproject.sock -w wsgi:app -H /home/lucy/env --http-processes=10 --chmod-socket=666 --master 

项目正在成功运行。

谁能告诉我这里做错了什么?

【问题讨论】:

sudo vi /etc/nginx/sites-available/myproject 应该是一个*.conf conf 结束配置文件。 我已经在启用站点的 sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled 中添加了 seamlink 并在 nginx.conf 中有条目 【参考方案1】:

您的问题是uwsgi 没有安装在虚拟环境中,但在您的服务文件中,您要求它从虚拟环境路径加载:

ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini

你应该在你的虚拟环境中安装uwsgi,或者在你的服务描述中给出全局uwsgi的路径;你可以通过在你的 shell 中输入 which uwsgi 来获得它。

建议在您的虚拟环境中安装uwsgi,因为它将包含最新的更新和功能。

为此运行:

env/bin/pip install uwsgi

确保在所有情况下都重新启动服务(如果您更改服务定义文件,您也必须重新加载服务)。

【讨论】:

感谢您的回复。当我在 python 环境中安装 uwsgi 时,它给出了已经满足的要求:uwsgi in /usr/local/lib/python2.7/dist-packages 那不是Python环境,那是全局Python环境。

以上是关于无法使用 nginx 运行烧瓶 wsgi 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

当我触摸 wsgi 脚本时,带有 mod_wsgi 的烧瓶应用程序不会重新加载

markdown 烧瓶,Nginx和WSGI之间的关系

在 Windows 上使用 apache mod_wsgi 运行烧瓶应用程序时的导入冲突

Apache SetEnv 无法与 mod_wsgi 一起按预期工作

烧瓶 mod_wsgi 地址已在使用中 [重复]

Python 烧瓶、apache 和 mod_wsgi 应用程序不工作