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;如果文中出…

[go语言]数据类型

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

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…

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

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

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

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

滑动窗口经典入门题-——长度最小子数组

文章目录 算法原理题目解析暴力枚举法的代码优化第一步初始化第二步right右移第三步left右移 滑动窗口法的代码 算法原理 滑动窗口是一种在序列&#xff08;例如数组或链表&#xff09;上解决问题的算法模式。它通常用于解决子数组或子字符串的问题&#xff0c;其中滑动窗口表示…

C#: form 窗体的各种操作

说明&#xff1a;记录 C# form 窗体的各种操作 1. C# form 窗体居中显示 // 获取屏幕的宽度和高度 int screenWidth Screen.PrimaryScreen.Bounds.Width; int screenHeight Screen.PrimaryScreen.Bounds.Height;// 设置窗体的位置 this.StartPosition FormStartPosition.M…

2024.1.17每日一题

LeetCode 2744.最大字符串配对数目 2744. 最大字符串配对数目 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始的数组 words &#xff0c;数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件&#xff0c;我们称…

【ubuntu】docker中如何ping其他ip或外网

docker中如何ping其他ip或外网 示例图&#xff1a; 运行下面命令&#xff1a; docker run -it --namehei busybox看情况需要加权限 sudo&#xff0c;即&#xff1a; sudo docker run -it --namehei busyboxping 外网 ping -c 4 www.baidu.comping 内网 ping -c 4 192.168.…

【多线程】认识Thread类及其常用方法

&#x1f4c4;前言&#xff1a; 本文是对以往多线程学习中 Thread类 的介绍&#xff0c;以及对其中的部分细节问题进行总结。 文章目录 一. 线程的 创建和启动&#x1f346;1. 通过继承 Thread 类创建线程&#x1f345;2. 通过实现 Runnable 接口创建线程&#x1f966;3. 其他方…

java转义字符

//转义字符的使用 public class ChangeChar{//编写一个main方法public static void main(String[] args){// \t :一个制表位&#xff0c;实现对齐的功能System.out.println("北京\t天津\t上海");// \n :换行符&#xff0c;实现换行System.out.println("jack\nsm…

Python-基础篇-类与对象/面向对象程序设计

文章目录 思维导图是何物类定义类&#x1f4da; class类的成员&#x1f4da;类的继承性&#x1f4da;封装性&#x1f4da;多态性 对象面向对象&#x1f4da;创建对象&#x1f4da;销毁对象&#x1f4da; 类和对象关系必背必记专业英语学习角 思维导图 是何物 类 “类”是物以…