python使用Apache+mod_wsgi部署Flask

python使用Apache+mod_wsgi部署Flask

    • 一、安装python环境(V3.10.10)
    • 二、安装mod_wsgi
    • 三、安装Apache
      • 1、下载
      • 2、解压
      • 3、配置
    • 四、安装项目依赖
    • 五、启动
    • 六、基于多端口部署多个flask项目

一、安装python环境(V3.10.10)

安装时勾选"Add python.exe to PATH"就不需要手动配置环境变量了:
在这里插入图片描述
直接下一步即可:
在这里插入图片描述
选择自己的安装目录:
在这里插入图片描述

安装完成后验证是否安装配置成功,打开cmd,输入如下命令:

python -V

如下则表示配置成功:
在这里插入图片描述

二、安装mod_wsgi

下载地址
注意要和Python版本一样,Python 3.10选择cp310,这里我选择的是 mod_wsgi-4.9.2-cp310-cp310-win_amd64.whl
在这里插入图片描述
在下载文件目录打开cmd输入如下命令进行安装:

pip install mod_wsgi-4.9.2-cp310-cp310-win_amd64.whl

安装成功如下所示:
在这里插入图片描述

项目目录下创建main.wsgi

import sys#path 替换成自己的项目目录
sys.path.insert(0,"D:/File/first_flask")#first_flask是主程序,根据自己的填写
from first_flask import appapplication = app

在这里插入图片描述

三、安装Apache

官网点击这里

1、下载

点击"Download"
在这里插入图片描述
点击"Files for Microsoft Windows"
在这里插入图片描述
点击"Apache Lounge"
在这里插入图片描述
选择与自己系统匹配的安装包进行下载
在这里插入图片描述

2、解压

在这里插入图片描述

3、配置

配置文件位于解压目录下:Apache24/conf/httpd.cnf
在这里插入图片描述

配置SRVROOT,修改为自己的目录即可,注意路径格式,最后一层路径没有"/"
在这里插入图片描述
配置监听端口,根据自己需要进行配置:
在这里插入图片描述

打开如下的配置信息(删除最前面的#):
在这里插入图片描述

打开cmd输入如下命令,将输出结果添加到配置文件中:

mod_wsgi-express module-config

输入结果第二行信息就是我们需要的信息:
在这里插入图片描述
将如上信息添加到httpd.conf文件中
在这里插入图片描述
在文件末尾添加如下信息(注意修改相关配置):

<VirtualHost * >ServerName flask.com    #可以不配置,有域名可以自行配置WSGIScriptAlias / "D:\File\first_flask\main.wsgi"<Directory "D:\File\first_flask">Require all granted</Directory>	
</VirtualHost>

说明:WSGIScriptAlias为我们创建的main.wsgi的路径,Directory为我们的项目路径

在这里插入图片描述
测试配置文件是否合法:在apache解压的bin目录下打开cmd,输入如下命令

httpd -t

在这里插入图片描述

四、安装项目依赖

该demo我就只需要安装flask依赖即可

pip install Flask -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/

在这里插入图片描述
项目源代码如下(first_flask.py):

from flask import Flaskapp = Flask(__name__)@app.route("/")
def index():return "<h1 style='color:red'>Hello World</h1>"if __name__ == '__main__':app.run()

五、启动

在apache目录下双击httpd.exe即可:
在这里插入图片描述
访问:192.168.239.129:8998

在这里插入图片描述
查询apache运行日志可以在解压的log目录下查看。

六、基于多端口部署多个flask项目

项目代码我们复制之前的,main.wsgi也复制之前的,调整一下配置路径即可,得到文件"first_flask2.py"和"main2.wsgi",文件内容如下:
first_flask2.py

from flask import Flaskapp = Flask(__name__)@app.route("/")
def index():return "<h1 style='color:red'>Hello World2</h1>"if __name__ == '__main__':app.run()

main2.wsgi

import sys#path 替换成自己的目录
sys.path.insert(0,"D:/File/first_flask")#main是first-flask,根据自己的填写
from first_flask2 import appapplication = app

配置httpd.conf文件
①添加监听端口
在这里插入图片描述
②添加VirtualHost配置

<VirtualHost 192.168.239.129:8998 >ServerName flask.comWSGIScriptAlias / "D:\File\first_flask\main.wsgi"<Directory "D:\File\first_flask">Require all granted</Directory>	
</VirtualHost><VirtualHost 192.168.239.129:8999 >ServerName flask2.comWSGIScriptAlias / "D:\File\first_flask\main2.wsgi"<Directory "D:\File\first_flask">Require all granted</Directory>	
</VirtualHost>

在这里插入图片描述
重启apache即可:
在这里插入图片描述

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

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

相关文章

Spring重要知识点

一、Spring中相关概念 1.IOC 控制反转 IoC&#xff08;Inverse of Control:控制反转&#xff09;是⼀种设计思想&#xff0c;就是将原本在程序中⼿动创建对象的控制权&#xff0c;交由Spring框架来管理。IoC 在其他语⾔中也有应⽤&#xff0c;并⾮ Spring 所独有。 IoC 容器…

06-数据容器(字典)基础知识0基础来学

为什么需要字典 可以提供通过某个东西找到某个东西 """ 演示数据容器字典的定义 ​ """ #定义字典 my_dict1{"王力宏":99,"周结论":88,"林俊杰":77} #定义空字典 my_dict2{} my_dict3dict() print(f"字典1的…

软件设计师6--流水线技术

软件设计师6--流水线技术 考点1&#xff1a;流水线--概念考点2&#xff1a;流水线--流水线计算考点3&#xff1a;流水线--流水线吞吐率计算例题&#xff1a; 考点1&#xff1a;流水线–概念 相关参数计算&#xff1a; 流水线执行时间计算、流水线吞吐率、流水线加速比、流水线…

Verilog刷题笔记15

题目&#xff1a; An adder-subtractor can be built from an adder by optionally negating one of the inputs, which is equivalent to inverting the input then adding 1. The net result is a circuit that can do two operations: (a b 0) and (a ~b 1). See Wikipe…

力扣刷MySQL-第四弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

JavaScripts笔记I(基础)

JavaScripts基础 js是一门编程语言&#xff0c;可以实现很多的网页交互效果。 JavaScript脚本语言具有以下特点: &#xff08;1&#xff09;脚本语言。JavaScript是一种解释型的脚本语言&#xff0c;C、C等语言先编译后执行&#xff0c;而JavaScript是在程序的运行过程中逐行…

macOS - md5 | md5sum

文章目录 简单使用介绍文档Linux - md5summacOS - md5 大文件传输是否完整&#xff0c;你可以使用 md5 进行校验 linux 上使用 md5sum 命令&#xff0c;在macOS 上 md5 命令是和 md5sum 等效的 简单使用介绍 参考&#xff1a;https://blog.csdn.net/cnds123321/article/detail…

[go语言]数据类型

目录 知识结构 整型、浮点型 1.整型 2.浮点型 复数、布尔类型 1.复数 2.布尔类型 字符与字符串 1.字符串的格式化 2.字符串的截取 3.格式化好的字符串赋值给量 4.字符串的转换 5.strings包 知识结构 整型、浮点型 1.整型 在Go语言中&#xff0c;整型数据是一种基…

计算机基础之输入设备,输出设备及中央处理器

输入、输出设备和中央处理器 输入设备 输入设备用于接收用户输入的命令、程序、图像和视频等&#xff0c;专门负责将现实中的信息转换成计算机能识别的二进制编码&#xff0c;并放入内存。是计算机与用户或其他设备通信的桥梁。 常用的输入设备&#xff1a; 键盘&#xff1…

MySQL三大日志

1. redo log 1.1 特点 InnoDB存储引擎独有物理日志&#xff0c;记录在数据页上做的修改让MySQL拥有了崩溃恢复能力&#xff0c;保证事务的持久性 1.2 刷盘时机 事务提交时log buffer 空间使用大约一半时事务日志缓冲区满InnoDB 定期执行检查点Checkpoint后台刷新线程&#…

短视频代运营抖音项目规划管理计划模板

【干货资料持续更新&#xff0c;以防走丢】 短视频代运营抖音项目规划管理计划模板 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 短视频代运营模板&#xff08;完整资料包含以下内容&#xff09; 目录 具体的表格设计和内容可能因不同的情况和需求而有所变…

移动端开发进阶之蓝牙通讯(四)

移动端开发进阶之蓝牙通讯(四) 在移动端开发实践中,可能会要求在不同的设备之间切换,从而提升用户体验; 或者为了提升设备的利用率,实现设备之间的连接和协同工作; 不得不通过多端连接,将多个设备连接在一起,实现设备之间的数据共享、远程控制等功能,根据具体的应用…

STC8H8K蓝牙智能巡线小车——1. 环境搭建(基于RTX51操作系统)

1. 基本介绍 开发环境准备&#xff1a;Keil uVision5 烧录软件&#xff1a;STC-ISP&#xff08;V6.92A&#xff09; 芯片&#xff1a; STC8H8K64U-45I-LQFP64 芯片引脚&#xff1a; 2.创建项目 打开Keil&#xff0c;点击【Project】&#xff0c;选择【new uVersion proje…

LeetCode刷题16:滑动窗口解决209. 长度最小的子数组

题目陈述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&a…

RPM命令详解2---查询验证

一、RPM查询 rpm {-q|–query} [select-options] [query-options] select-options [PACKAGE_NAME] [-a,–all] [-f,–file FILE] [-g,–group GROUP] {-p,–package PACKAGE_FILE] [–hdrid SHA1] [–pkgid MD5] [–tid TID] [–querybynumber HDRNUM] [–triggeredby PACKAGE…

【控制篇 / 分流】(7.4) ❀ 03. 对国内和国际IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带用来上网&#xff0c;一条电信&#xff0c;一条IPLS国际专线&#xff0c;由于IPLS仅有2M&#xff0c;且价格昂贵&#xff0c;领导要求&#xff0c;访问国内IP走电信&#xff0c;国际IP走IPLS&#xff0c;那么应该怎么做&#xff1f; 国内IP地址组 我们已…

Spring之BeanDefinition

BeanDefinition BeanDefinition表示Bean定义&#xff0c;BeanDefinition中存在很多属性用来描述一个Bean的特点。 比如&#xff1a; - class&#xff0c;表示Bean类型 - scope&#xff0c;表示Bean作用域&#xff0c;单例或原型等 - lazyInit&#xff1a;表示Bean是否是懒加载…

JavaScript之判断是否整数、取余、取整、进制、位或、ES6

MENU 方法一方式二方式三方式四方式五结束语 方法一 使用取余运算符判断&#xff0c;利用任何整数都会被1整除的原理&#xff0c;即余数是0的特点&#xff0c;通过这个规则来判断是否是整数。 let isInteger (val) > val % 1 0;// true isInteger(5); // false isInteger(…

ERP办公系统如何选择阿里云服务器?

公司OA、ERP等办公系统如何选择阿里云服务器配置&#xff1f;可以选择第七代企业级独享型云服务器&#xff0c;ECS通用型g7、计算型c7或内存型r7实例&#xff0c;4核CPU8G内存、8核16G、4核16G等配置&#xff0c;活动 https://t.aliyun.com/U/bLynLC 实例规格使用场景vCPU内存…

深度学习(2)--卷积神经网络(CNN)

卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学习模型或类似于人工神经网络的多层感知器&#xff0c;常用来分析视觉图像。 一.卷积网络基础概念 传统网络是一维的&#xff0c;而卷积网络是三维的。 例如32x32x3的图片&#xff0c;在传统网…