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;  # 你收集的静态文件的位置
    }
}
相关推荐
koi77u7 小时前
嵌入式学习———sqlite数据表
linux·数据库·学习·sqlite
笑梦无境7 小时前
nginx安装(5)
linux·运维·nginx
xx~t7 小时前
嵌入式——Linux软件编程——数据库
linux·c语言·数据库·oracle·sqlite
流浪0017 小时前
Linux系统篇26——通信(三)补:共享内存访问真的不进内核?
linux·运维·服务器
不会就选b7 小时前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
zerwave7 小时前
从零实现简化 DDS 完整技术文档(含模块作用与详细注释)
linux·c++·机器人
琥珀色糖17 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
开心大爆炸21 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun221 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng1 天前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施