无法使用nginx

时间:2017-07-20 07:56:51

标签: python nginx flask uwsgi

我已尝试使用此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 

项目运行成功。

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

1 个答案:

答案 0 :(得分:2)

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

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

您应该在虚拟环境中安装uwsgi,或在服务说明中提供全局uwsgi的路径;你可以在你的shell中输入which uwsgi来获得它。

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

要执行此操作:

env/bin/pip install uwsgi

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