Ubuntu系统flask服务和wsgi运行示例说明

2024-04-14 21:52 Ubuntu系统flask服务和wsgi运行示例说明已关闭评论

在Ubuntu系统上运行Flask应用程序并配置WSGI服务(如Gunicorn或uWSGI)以在生产环境部署,你需要遵循以下步骤:

示例:使用Gunicorn运行Flask应用

首先确保你已经在Ubuntu系统上安装了Flask和Gunicorn。在虚拟环境中安装它们:

# 激活你的虚拟环境(假设在`my_env`)
source /path/to/my_env/bin/activate

# 安装Flask和Gunicorn
pip install Flask gunicorn

接下来,假设你有一个基本的Flask应用结构,如下所示:

# 文件:my_flask_app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

要使用Gunicorn运行此Flask应用,你需要创建一个启动脚本或者直接在命令行中启动Gunicorn服务:

# 从命令行启动Gunicorn服务
gunicorn my_flask_app:app -b 0.0.0.0:8000 --workers 4

这里 -b 参数定义了绑定地址和端口,--workers 参数指定了工作进程的数量。

配置Gunicorn作为Systemd服务(自动启动)

为了在系统启动时自动运行Gunicorn服务,创建一个Systemd服务文件:

# 编辑服务文件
sudo nano /etc/systemd/system/my_flask_app.service

# 将以下内容粘贴到文件中
[Unit]
Description=Gunicorn instance to serve My Flask App
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/path/to/your/flask/app
ExecStart=/path/to/my_env/bin/gunicorn --workers 4 --bind 0.0.0.0:8000 my_flask_app:app

[Install]
WantedBy=multi-user.target

保存并退出编辑器,然后执行以下命令:

# 重新加载systemd
sudo systemctl daemon-reload

# 启动服务
sudo systemctl start my_flask_app.service

# 设置开机自启
sudo systemctl enable my_flask_app.service

结合Nginx作为反向代理(可选)

为了更好的安全性、性能和处理静态文件,你可以使用Nginx作为前端服务器,将HTTP请求转发给Gunicorn处理:

# 编辑Nginx配置文件(例如,在/etc/nginx/sites-available/my_flask_app.conf)
server {
    listen 80;
    server_name your_server_domain_or_ip;

    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;
    }
}

# 创建软连接到sites-enabled目录
sudo ln -s /etc/nginx/sites-available/my_flask_app.conf /etc/nginx/sites-enabled/

# 测试Nginx配置并重启服务
sudo nginx -t
sudo systemctl restart nginx

以上就是Ubuntu系统中使用Gunicorn运行Flask应用及配置WSGI服务的一个实例。

当前文章价值0.61元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/3318.html ,谢谢支持!

资源分享

分类:ubuntu 标签:, ,
Android学习笔记二:JVM内存模型 Android学习笔记二:JVM内存
php语法与基础详细介绍 php语法与基础详细介绍
Python字符串实现MD5编码实例 Python字符串实现MD5编码实例
微信开放平台怎么创建移动应用? 微信开放平台怎么创建移动应用?

评论已关闭!