Python 无法使用nginx运行flask wsgi应用程序

Python 无法使用nginx运行flask wsgi应用程序,python,nginx,flask,uwsgi,Python,Nginx,Flask,Uwsgi,我尝试过在生产环境中使用wsgi服务器部署flask应用程序 我已经遵循了上面提到的所有步骤 sudo-apt-get-install-build-essential-python-dev-python-pip sudo-pip安装virtualenv-uwsgi bash 虚拟环境 源环境/箱/激活 安装烧瓶 pip安装-r requirements.txt 创建wsgi.py from myproject import app if __name__ == "__main__":

我尝试过在生产环境中使用wsgi服务器部署flask应用程序

我已经遵循了上面提到的所有步骤

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

sudo-pip安装virtualenv-uwsgi

bash
虚拟环境
源环境/箱/激活
安装烧瓶
pip安装-r requirements.txt

创建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启动我的项目
sudo systemctl启用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重启nginx

尽管如此,项目并没有运行nginx给出了连接拒绝错误 但是当我试着

uwsgi -s /home/lucy/myproject.sock -w wsgi:app -H /home/lucy/env --http-processes=10 --chmod-socket=666 --master 
项目正在成功运行


有人能告诉我这里做错了什么吗?

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

ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
您应该在虚拟环境中安装
uwsgi
,或者在服务描述中提供全局
uwsgi
的路径;您可以通过在shell中键入
哪个uwsgi
来获得它

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

要执行此操作,请执行以下操作:

env/bin/pip install uwsgi

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

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

ExecStart=/home/lucy/env/bin/uwsgi --ini myproject.ini
您应该在虚拟环境中安装
uwsgi
,或者在服务描述中提供全局
uwsgi
的路径;您可以通过在shell中键入
哪个uwsgi
来获得它

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

要执行此操作,请执行以下操作:

env/bin/pip install uwsgi

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

sudo vi/etc/nginx/sites available/myproject
应该是一个
*.conf
conf结尾配置文件。我已经在site enabled sudo ln-s/etc/nginx/sites available/myproject/etc/nginx/sites enabled中添加了seamlink,并且在nginx.conf
sudo vi/etc/nginx/sites available/myproject中的条目应该是一个
*.conf
conf结束配置文件。我已经在站点启用的sudo ln-s/etc/nginx/sites available/myproject/etc/nginx/sites中添加了seamlink,并在nginx.conf中启用了条目。谢谢您的回复。当我在python环境中安装uwsgi时,它给出了已经满足的要求:uwsgi in/usr/local/lib/python2.7/dist-packagest这不是python环境,这是全局python环境。感谢您的回复。当我在python环境中安装uwsgi时,它给出了已经满足的需求:uwsgi位于/usr/local/lib/python2.7/dist-packagest中,这不是python环境,而是全局python环境。