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;  # 你收集的静态文件的位置
    }
}
相关推荐
炫友呀7 小时前
Centos 更新/修改宝塔版本
linux·运维·centos
花小璇学linux11 小时前
imx6ull-驱动开发篇24——Linux 中断API函数
linux·驱动开发·嵌入式软件
林开落L11 小时前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
wxy31912 小时前
嵌入式LINUX——————TCP并发服务器
java·linux·网络
Castamere12 小时前
配置 Linux 终端 (zsh)
linux
小韩博13 小时前
metasploit 框架安装更新遇到无法下载问题如何解决
linux·网络安全·公钥·下载失败
长臂人猿13 小时前
JVM常用工具:jstat、jmap、jstack
linux·运维·jvm
轻松Ai享生活14 小时前
揭秘 linux:一张图看懂系统配置的核心
linux
wdxylb14 小时前
云原生俱乐部-RH134知识点总结(2)
linux·云原生
_Chipen14 小时前
lazy_vim_cmake_clangd_从零到自动补全与语法检查
linux·编辑器·vim