nginx + uwsgi + systemd 部署 flask

Flask 常用部署方式

  • uWSGI + Nginx(最常用)

  • Gunicorn + Nginx

  • gevent.pywsgi + Nginx

    使用gevent.pywsgi的完整示例:

    python
    from gevent import pywsgi
    from your_app import app

    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
    print("Server running on port 5000...")
    server.serve_forever()

导出第三方模块
复制代码
pip freeze > requirements.txt
创建python虚拟环境
复制代码
# 安装虚拟环境的第三方包 virtualenv
pip3 install virtualenv
 
# 创建虚拟环境(虚拟环境一般放在项目根目录下)
virtualenv venv
 
# 激活虚拟环境
source venv/bin/activate
 
# 退出虚拟环境
deactivate

下载三方模块

在虚拟环境中导入requirements中的第三方模块

复制代码
pip install -r requirements.txt

导入数据库

新建 文件 wsgi.py

复制代码
# wsgi.py
from app import app  # 从应用模块导入 app 实例

if __name__ == "__main__":
    app.run()

创建uwsgi.ini

复制代码
[uwsgi]
module = wsgi
callable = app
master = true
processes = 2
threads = 100
plugin = python3
socket = 0.0.0.0:8002

# 或者使用Unix socket方式(二选一)
; socket = /myflaskapp/uwsgi.sock
; chmod-socket = 660
; vacuum = true


# Python虚拟环境

virtualenv = /home/ubuntu/zhiliao_oa/venv

# 日志文件
logto = /home/ubuntu/zhiliao_oa/logs/error.log
buffer-size = 65535
die-on-term = true

创建 /etc/systemd/system/flaskoa.service

复制代码
[Unit]
Description=uWSGI instance to serve your Flask app
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/home/ubuntu/zhiliao_oa
Environment="PATH=/home/ubuntu/zhiliao_oat/venv/bin"
ExecStart=/usr/bin/uwsgi --ini =/home/ubuntu/zhiliao_oa/wsgi.ini

[Install]
WantedBy=multi-user.target

配置nginx

复制代码
# nginx配置
 
server {
    listen   80;
    server_name flask.larance.xyz;
    location / {
        uwsgi_pass   127.0.0.1:8002;  # uwsgi运行的端口
        include uwsgi_params;
    }
    location /static{
      alias  /home/ubuntu/zhiliao_oa/static;  # 你收集的静态文件的位置
    }
}
相关推荐
ltl3 小时前
存储性能建模:IOPS、吞吐与延迟
linux
刘某的Cloud4 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
酸菜。6 小时前
dw_axi_dmac总结
linux
神奇霸王龙6 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
小绫网络安全9 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
allforgood9 小时前
控制启动过程
linux·运维·服务器
西安景驰电子9 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
猫吃了源码10 小时前
k9s简介和安装
linux·docker·kubernetes
小马同学-11 小时前
高可用-Keepalived全解析
linux·运维
Forever Nore12 小时前
LeetCode 13 罗马数字转整数 - 按规则处理
linux·服务器·leetcode