
Ubuntu 18.04 使用Gunicorn + Nginx + Supervisor部署Flask应用指南
版权申诉
158KB |
更新于2024-08-25
| 41 浏览量 | 4 评论 | 举报
收藏
"Ubuntu 18.04 使用Gunicorn + Nginx + Supervisor为Flask应用提供服务"
本文档详细介绍了如何在Ubuntu 18.04操作系统上使用Gunicorn、Nginx和Supervisor部署和管理Flask应用程序。Flask是一个轻量级的Python Web框架,而Gunicorn(Green Unicorn)是一个高效的WSGI服务器,用于处理HTTP请求。Nginx则作为一个反向代理服务器,用于接收和分发网络流量。Supervisor是用于管理后台进程的工具,确保服务始终运行。
1. 创建Python虚拟环境
在开始部署Flask应用之前,首先创建一个Python虚拟环境,以隔离项目依赖于系统全局环境。使用`python3-venv`包安装`venv`模块,然后在项目根目录下创建一个虚拟环境。激活虚拟环境后,所有项目依赖都将在这个环境中安装,避免与其他Python项目冲突。
2. 设置Flask应用程序
在激活的虚拟环境中,使用pip安装Flask和Gunicorn。Flask用于编写Web应用程序,而Gunicorn作为WSGI服务器,负责运行和管理Flask应用。创建一个简单的Flask应用,例如`myproject.py`,在其中定义路由和响应。
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
```
3. 创建WSGI入口点
在Flask应用中,WSGI入口点是调用`app.run()`之外的地方,使得Gunicorn可以启动应用。通常,这个入口点是一个单独的文件,比如`run.py`,它导入Flask应用并传递给Gunicorn。这样,Gunicorn可以通过命令行启动应用,而无需直接调用`app.run()`。
4. 配置Gunicorn
配置Gunicorn以运行Flask应用,创建一个名为`gunicorn.conf.py`的配置文件,指定应用的位置、工作进程数量等参数。例如:
```python
workers = 4
bind = "127.0.0.1:8000"
errorlog = "-"
accesslog = "-"
```
然后,使用Gunicorn启动应用:
```bash
gunicorn --config gunicorn.conf.py myproject:app
```
5. 配置Supervisor
为了确保服务的稳定性和自动重启,配置Supervisor来管理Gunicorn进程。创建一个Supervisor配置文件,如`/etc/supervisor/conf.d/gunicorn.conf`,并添加如下内容:
```ini
[program:gunicorn]
command=/path/to/your/virtualenv/bin/gunicorn --config /path/to/gunicorn.conf.py myproject:app
directory=/path/to/your/project
user=your_user
environment=PATH="...:/path/to/your/virtualenv/bin"
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
```
更新Supervisor配置并启动服务:
```bash
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start gunicorn
```
6. 将Nginx配置为代理请求
最后,配置Nginx作为反向代理服务器,将HTTP请求转发到Gunicorn。编辑`/etc/nginx/sites-available/myproject.conf`,并添加如下配置:
```nginx
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
别忘了启用Nginx配置并重载配置:
```bash
sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
```
至此,Flask应用已经配置完成,通过Gunicorn、Nginx和Supervisor在Ubuntu 18.04上稳定运行。用户可以通过访问`your_domain.com`来查看和使用应用。这种部署方式确保了高可用性和易于管理,同时提供了良好的性能。
相关推荐
















资源评论

FelaniaLiu
2025.06.16
针对想要在Ubuntu系统上使用Gunicorn + Nginx + Supervisor部署Flask应用的开发者,该文档提供了清晰的步骤和配置建议。👋

焦虑肇事者
2025.02.15
对于想要学习如何优化Flask应用部署和管理的人员,本文将是一个很好的起点。

巴蜀明月
2025.02.14
这份文档是关于在Ubuntu上部署Flask应用的实用指南,涵盖了从Gunicorn到Nginx再到Supervisor的完整配置流程。

陈莽昆
2025.01.17
这篇教程详细介绍了如何在Ubuntu 18.04系统中,通过Gunicorn、Nginx和Supervisor为Flask应用搭建高效的生产环境,适合有一定基础的开发者学习实践。

一诺网络技术
- 粉丝: 0
最新资源
- Primerkdown: 结合 Primer CSS 的 Markdown 编辑器展示
- Python绑定Poisson曲面重建Matlab代码的使用指南
- Ruby on Rails项目masonic_music_timeline部署指南
- 红细胞内含子保留分析与RNA-Seq技术应用
- 易语言实现文本快速分割到数组,优化匹配算法(汇编)
- AresBD: OSX平台的反向TCP僵尸网络shell攻击系统
- Penpal.js:构建JavaScript请求-响应消息系统跨框架通信
- 易语言实现内存读写的API源码解析
- Nginx Docker镜像的使用与部署方法
- 重现经典:旧版Minecraft声音资源包项目
- Kotlin在Android上的应用:GDG韩国2015演讲解析
- Rustdesk 1.1.5:全新开源远程桌面工具
- Gliss:CSS属性驱动的响应式文章布局解决方案
- ASP.NET Web API 消息REST服务开发与测试指南
- 从零开始构建Web视图框架的探索旅程
- ACSMS航空货运管理系统:高效物流解决方案
- 易语言字符串搅乱器:提升程序文本安全性
- FAST(FW300R)路由器IP源码修改教程
- 基于OpenGL的Java项目构建与运行指南
- 微信小程序音乐播放器源码解析
- 易语言实现的蜗牛斗地主游戏源码
- SchemaKit: Meteor 中简单有效的模式验证包
- DevPlay: 如何用 Vagrant 和 Ubuntu 创建 NodeJS 与 Go 示例应用
- Typing-speed网站:助你提高打字速度的在线工具