Ubuntu 18.04 使用Gunicorn + Nginx + Supervisor部署Flask应用指南
版权申诉
193 浏览量
更新于2024-08-25
收藏 158KB PDF 举报
"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`来查看和使用应用。这种部署方式确保了高可用性和易于管理,同时提供了良好的性能。
2020-08-26 上传
113 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
一诺网络技术
- 粉丝: 0
- 资源: 2万+
最新资源
- 行业文档-设计装置-一种利用字型以及排序规则实现语言拼写校正的方法.zip
- jojo_js:前端相关的js库 ,组件,工具等
- auto
- audio-WebAPI:HTML5 音频录制和文件创建
- Text-editor:使用nodejs和html制作的多人文字编辑器
- kcompletion:K完成
- 课程设计--Python通讯录管理系统.zip
- 基于机器学习的卷积神经网络实现数据分类及回归问题.zip
- node_mailsender:使用docker的简单node.js邮件发件人脚本
- my-website
- angular-gulp-seed-ie8:使用 Gulp 动态加载 IE8 polyfills 的 Angular 基础项目
- ATMOS:ATMOS代码
- 基于webpack的vue单页面构建工具.zip
- Suitor_python_flask:Reddit feed命令行客户端界面和Web界面工具
- 行业文档-设计装置-一种利用秸秆制备瓦楞纸的方法.zip
- .emacs.d:我的个人emacs配置