[应用部署]使用nginx、gunicorn部署Flask项目

[应用部署]使用nginx、gunicorn部署Flask项目

💡 原文中文,约2500字,阅读约需6分钟。
📝

内容提要

本文介绍了使用gunicorn和nginx部署应用的具体流程。首先,安装gunicorn并在项目根目录中创建wsgi.py文件。然后使用gunicorn运行项目。接下来,安装nginx并修改默认配置文件。配置nginx反向代理,将请求转发给gunicorn。最后,测试配置文件并重启nginx。注意解决静态文件显示错误的问题。

🔎

延伸解读

gunicorn 与 nginx 的分工

文章展示了 gunicorn 负责运行 Flask 应用,nginx 作为反向代理接收外部请求并转发给 gunicorn。这种分工让 nginx 处理静态文件和连接管理,gunicorn 专注应用逻辑。配置中 nginx 监听 80 端口,将动态请求转发到本地 8000 端口,而静态文件通过 location /static 直接由 nginx 提供并设置缓存。

静态文件 403 错误的处理与风险

文章提到部署后静态文件出现 403 Forbidden,解决方案是将 /etc/nginx/nginx.conf 第一行的 user 改为 root。这虽然能解决权限问题,但以 root 运行 nginx 会带来安全风险。更稳妥的做法是调整静态文件目录的权限或所属用户,而不是直接使用 root。读者需注意此方案仅适用于测试环境,生产环境应谨慎。

配置文件的测试与生效流程

修改 nginx 配置后,文章强调先用 sudo nginx -t 测试语法,再重启服务。这能避免因配置错误导致 nginx 无法启动。同时,文章指出在 sites-available/default 中配置 server 块时无需包含 http 块,因为该文件会被自动包含到主配置的 http 块中。遵循此流程可减少部署中断。

❓

Q&A

如何安装gunicorn?

在虚拟环境中使用命令 pip3 install gunicorn 安装。

wsgi.py文件应该放在哪里?内容是什么?

放在项目根目录,内容为:from app import create_app app = create_app('production')。

用gunicorn运行项目的命令是什么?

gunicorn -w 4 -b 0.0.0.0:5000 wsgi:app。

如何安装nginx?

在终端输入 sudo apt-get install nginx 安装。

如何配置nginx反向代理?

修改 /etc/nginx/sites-available/default 文件,添加server块和location块,设置proxy_pass转发到本地端口(如http://127.0.0.1:8000),并配置静态文件路径。

如何测试nginx配置文件是否正确?

使用命令 sudo nginx -t 测试,若输出成功信息则配置正确。

如何重启nginx?

使用命令 sudo service nginx restart 重启。

静态文件出现403 Forbidden错误如何解决?

修改 /etc/nginx/nginx.conf 文件,将第一行改为 user root; 然后重启nginx。

🏷️

标签

➡️

继续阅读