无法使用 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 的烧瓶应用程序不会重新加载
在 Windows 上使用 apache mod_wsgi 运行烧瓶应用程序时的导入冲突