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;  # 你收集的静态文件的位置
    }
}
相关推荐
缘友一世6 小时前
深入理解Shell与反弹Shell:从原理到实战
linux·网络安全·shell
stark张宇6 小时前
网络排错全流程:从DNS解析到防火墙,逐层拆解常见问题
linux·网络协议·dns
望获linux9 小时前
【实时Linux实战系列】实时 Linux 的自动化基准测试框架
java·大数据·linux·运维·网络·elasticsearch·搜索引擎
纸带9 小时前
USB --SETUP --STATUS阶段
linux·服务器·网络
---学无止境---10 小时前
Linux中初始化空循环次数和pid位图初始化
linux
东城绝神11 小时前
《Linux运维总结:基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul 1.21.5容器版集群》
linux·运维·docker·架构·consul
ajassi200011 小时前
开源 Linux 服务器与中间件(三)服务器--Nginx
linux·服务器·开源
wheeldown11 小时前
【Linux】Linux进程间通信:命名管道(FIFO)的模拟实现重要知识点梳理
linux·运维·服务器
Crazy________11 小时前
34部署LNMP架构详细解析
linux·运维·服务器·nginx
tan180°11 小时前
Linux网络HTTP(上)(7)
linux·网络·http