linux 部署flask项目

linux python环境安装:  https://blog.csdn.net/weixin_41934979/article/details/140528410

1.创建虚拟环境

python3.12 -m venv .venv

2.激活环境

 . .venv/bin/activate

 3.安装依赖包(pip3.12 install -r requirements.txt)

pip3.12 install -r requirements.txt

4.测试启动项目

python3.12 app.py

5.在虚拟环境中安装gunicorn

pip install gunicorn

6.安装配置Supervisor

6.1安装Supervisor

CentOS

首先,安装 EPEL 扩展源(如果尚未安装):

sudo yum install epel-release

 然后,使用 yum 命令安装 Supervisor:

sudo yum install supervisor

Ubuntu 

sudo apt install supervisor

查看版本,确认supervisor是否成功安装

supervisord --version
6.2配置supervisor

查看supervisor的配置

注意不同版本的Linux系统,不同版本supervisor,配置文件路径可能不同

CentOS

cat /etc/supervisord.conf

主要配置代码如下(主要看[include]下的文件路径):

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.[include]
files = supervisord.d/*.ini

Ubuntu

cat /etc/supervisor/supervisord.conf
; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.[include]
files = /etc/supervisor/conf.d/*.conf

创建.ini配置文件或者.conf配置文件(具体要看[include]下面路径是*.ini,还是*.conf),

文件要放进  [include]下的文件路径里

这里以Ubuntu为例

再次提醒.conf配置文件,文件要放进:[include]下的文件路径里,

放进/etc/supervisor/conf.d路径里

创建文件flaskapi.conf配置文件

 vi /etc/supervisor/conf.d/flaskapi.conf

内容如下:

[program:flaskapi] ; :右边是项目名称
command=/bin/bash -c ". .venv/bin/activate&&nohup python -m gunicorn -D -w 4 -b 0.0.0.0:8011 -t 120 app:app --access-logfile access.log --error-logfile error.log" ; 启动虚拟环境下的gunicorn,这里建议使用绝对路径
directory=/usr/projects/flask-api ; 程序的启动目录,这里是Flask网站根目录
user=root ; 用户名
autostart=true ; 在 supervisord 启动的时候也自动启动
autorestart=true ; 程序异常退出后自动重启
stopasgroup=true ; 它表示当该进程停止时,与该进程属于同一组的所有相关进程也会同时停止
killasgroup=true ; "杀死"整个组的进程
loglevel=info ; 日志级别设置为“信息”级别
6.3更新配置文件
supervisorctl update

启动supervisor服务 

 systemctl enable supervisor

查看服务状态 

systemctl status supervisor.service

7.curl测试是否能访问接口

curl http://localhost:8011/ -w '\n'

成功访问 

8.重启服务器flask是否开机自启 

重启后再次访问接口

curl http://localhost:8011/ -w '\n'

服务开机自启成功 

 

参考资料

https://blog.csdn.net/qq_39680564/article/details/102739143 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 后端接收参数优化(统一处理前端参数)

在使用 SpringBoot MyBatisPlus 框架的项目,写了个后端统一处理前端post提交的json格式的查询参数类,赖得手工一个一个参数处理(把要查询的参数交给前端)。 使用示例代码: PostMapping("/list")public Strin…

PyQt5 数据库操作详细教程

PyQt5 数据库操作详细教程 PyQt5 提供了丰富的数据库操作功能,使得在图形用户界面(GUI)应用程序中进行数据库连接和操作变得简单。本教程将详细介绍如何使用 PyQt5 连接和操作数据库,包括 SQLite、MySQL 等,并通过丰富…

门控循环单元(GRU)及其预测和分类Python实现

门控循环单元(Gated Recurrent Unit,简称GRU)是一种常用于处理序列数据的循环神经网络(RNN)变种。GRU模型结合了长短时记忆网络(LSTM)和标准循环神经网络的优点,通过门控机制帮助网络…

深入解析Perl的正则表达式:功能、应用与技巧

在编程世界中,正则表达式是一种强大的文本处理工具,它能够用于搜索、替换、匹配字符串等操作。Perl语言以其强大的文本处理能力著称,而其正则表达式功能更是其核心特性之一。本文将深入探讨Perl中的正则表达式,包括其基本语法、应…

微服务安全——OAuth2详解、授权码模式、SpringAuthorizationServer实战、SSO单点登录、Gateway整合OAuth2

文章目录 Spring Authorization Server介绍OAuth2.0协议介绍角色OAuth2.0协议的运行流程应用场景授权模式详解客户端模式密码模式授权码模式简化模式token刷新模式 OAuth 2.1 协议介绍授权码模式PKCE扩展设备授权码模式拓展授权模式 OpenID Connect 1.0协议Spring Authorizatio…

EXO-chatgpt_api 解释

目录 chatgpt_api 解释 resolve_tinygrad_tokenizer 函数 resolve_tokenizer 函数 调试和日志记录 参数 返回值 初始化方法 __init__ 异步方法 注意事项 chatgpt_api 解释 展示了如何在一个项目中组织和导入各种库、模块和类,以及如何进行一些基本的Web服务设置和配置…

Sparksql常用的json相关函数

前言 在大数据处理中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Apache Spark 提供了丰富的功能来处理 JSON 数据,尤其是通过 Spark SQL 的 JSON 函数。本文将深入探讨 Spark SQL 中的 JSON 函数,并使用…

机器学习 | 回归算法原理——最小二乘法

Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…

智能化数据安全分类分级实践

在当今数字化浪潮的迅猛推进下,企业和组织正遭遇前所未有的数据安全治理挑战。随着海量数据的不断产生、传输、存储和应用,它们面临着来自黑客攻击、内部人员恶意泄露以及数据误操作等多重安全威胁的侵袭。因此,构建一个健全的数据安全治理体…

【快速逆向四/无过程/有源码】浙江工商职业技术学院 统一身份认证

逆向日期:2024.07.23 使用工具:Node.js 加密方法:RSAUtils 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法&#xf…

Unity ShaderLab基础

[原文1] [参考2] 一 基础知识 1. 1 着色器语言分类: 语言说明HLSL基于 OpenGL 的 OpenGL Shading LanguageGLSL基于 DirectX 的 High Level Shading LanguageCGNVIDIA 公司的 C for GraphicShader LabUnity封装了CG,HLSL,GLSL的Unity专用着色器语言,具有跨平台,图形化编程,便…

Redis 主从搭建

Redis主从搭建 7.2.5 文章目录 一. 同主机搭建Redis主从1. 环境介绍2. 环境前准备工作3. 安装 Redis 7.2.54. redis 配置修改并且启动4.1 修改配置文件4.2 编写启动脚本 5. 开启主从5.1 开启5.2 主库实例查看主从信息5.3 从库实例查看主从信息5.4 验证主从配置是否生效 6. 解除…

Modbus转BACnet/IP网关BA100-配硬件说明

在现代自动化系统中,不同设备和系统之间的通信至关重要,Modbus和BACnet/IP协议虽然各有优势,但它们之间的直接通信存在障碍。钡铼Modbus转BACnet/IP网关作为连接这两种协议的桥梁,允许不同系统之间的无缝数据交换。 一、Modbus转…

Ubuntu22.04安装X11vnc方法

一、问题描述 客户想使用Ubuntu图形化功能,需要远程去操作界面 二、安装方法如下 通常情况,ubuntu不允许root用户运行GUI程序。因此,我们创建普通用户进行安装配置X11vnc服务 1.安装x11vnc程序包 sudo apt-get update sudo apt-get install -y x11v…

内网隧道——HTTP隧道

文章目录 一、ReGeorg二、Neo-reGeorg三、Pivotnacci 实验网络拓扑如下: 攻击机kali IP:192.168.111.0 跳板机win7 IP:192.168.111.128,192.168.52.143 靶机win server 2008 IP:192.168.52.138 攻击机与Web服务器彼此之…

React的生命周期?

React的生命周期分为三个主要阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。 1、挂载(Mounting) 当组件实例被创建并插入 DOM 时调用的生命周期方法&#x…

pdf压缩在线免费 pdf压缩在线免费网页版 在线pdf压缩在线免费 pdf压缩工具在线免费

在数字化时代,pdf文件已经成为我们工作、学习和生活中的重要组成部分。然而,体积庞大的pdf文件往往给我们的存储空间、传输速度带来不小的压力。本文将为您揭秘几种简单有效的pdf文件压缩方法,让您轻松应对文件体积过大带来的困扰。 方法一、…

PLC通过IGT-SER系列智能网关快速实现WebService接口调用案例

IGT-SER系列智能网关支持PLC设备数据对接到各种系统平台,包括SQL数据库,以及MQTT、HTTP协议的数据服务端;通过其边缘计算功能和脚本生成的工具软件,非常方便快速实现PLC、智能仪表与WebService服务端通信。 本文是通过智能网关读取…

探索Perl的图形用户界面开发:工具、技巧与实践

在计算机编程领域,图形用户界面(GUI)的开发是提升用户体验的关键环节。Perl,作为一种功能强大的脚本语言,同样提供了多种工具和库来支持GUI的开发。本文将详细介绍Perl中进行GUI开发的几种主要方法,包括使用…

如何切换网络IP地址?IP切换的应用与方法

随着互联网的发展和普及,我们日常生活中的各种操作和通讯越来越依赖互联网。互联网上存在的一些问题和限制使得更换IP地址成为必要的步骤。下面我们将探讨在互联网业务中,需要更换IP地址的原因与方法。 一、IP轮换的应用 解决访问限制:解决访…