python使用Apache+mod_wsgi部署Flask

news2024/11/27 0:17:26

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 app
 
application = 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 Flask

app = 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 Flask

app = 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 app
 
application = app

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

<VirtualHost 192.168.239.129:8998 >
	ServerName flask.com
	WSGIScriptAlias / "D:\File\first_flask\main.wsgi"
	<Directory "D:\File\first_flask">
		Require all granted
	</Directory>	
</VirtualHost>

<VirtualHost 192.168.239.129:8999 >
	ServerName flask2.com
	WSGIScriptAlias / "D:\File\first_flask\main2.wsgi"
	<Directory "D:\File\first_flask">
		Require all granted
	</Directory>	
</VirtualHost>

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

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

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

相关文章

Elasticsearch:将数据从 Snowflake 摄取到 Elasticsearch

作者&#xff1a;来自 Elastic Ashish Tiwari 为了利用 Elasticsearch 提供的强大搜索功能&#xff0c;许多企业在 Elasticsearch 中保留可搜索数据的副本。 Elasticsearch 是一种经过验证的技术&#xff0c;适用于传统文本搜索以及用于语义搜索用例的向量搜索。 Elasticsearch…

C#,入门教程(38)——大型工程软件中类(class)修饰词partial的使用方法

上一篇&#xff1a; C#&#xff0c;入门教程(37)——优秀程序员的修炼之道https://blog.csdn.net/beijinghorn/article/details/125011644 一、大型&#xff08;工程应用&#xff09;软件倚重 partial 先说说大型&#xff08;工程应用&#xff09;软件对源代码的文件及函数“…

【白皮书下载】GPU计算在汽车中的应用

驾驶舱域控制器 (CDC) 是汽车 GPU 的传统应用领域。在这里&#xff0c;它可以驱动仪表板上的图形&#xff0c;与车辆保持高度响应和直观的用户界面&#xff0c;甚至为乘客提供游戏体验。随着车辆屏幕数量的增加和分辨率的提高&#xff0c;对汽车 GPU 在 CDC 中进行图形处理的需…

基础+常用的数据结构

基础 java基础 JDK 和 JRE JDK&#xff0c;它是功能齐全的 Java SDK&#xff0c;是提供给开发者使用&#xff0c;能够创建和编译 Java 程序的开发套件。它包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc&#xff08;文档注释工具&#…

贪心算法-活动安排-最详细注释解析

贪心算法-活动安排-最详细注释解析 题目&#xff1a; 学校在最近几天有n个活动&#xff0c;这些活动都需要使用学校的大礼堂&#xff0c;在同一时间&#xff0c;礼堂只能被一个活动使用。由于有些活动时间上有冲突&#xff0c;学校办公室人员只好让一些活动放弃使用礼堂而使用…

Ubuntu20.4 Mono C# gtk 编程习练笔记(二)

界面设计习练后&#xff0c;下面写一些程序设计心得。 程序结构 先看一下程序总体结构&#xff0c;先在program.cs中找到main入口&#xff0c;在命名空间下是MainClass类&#xff0c;Main函数进入后首先建立应用程序环境 Application.Init&#xff0c;然后对MainWindow进行实…

2.mac 安装 Visual studio code 整合go开发

目录 概述前置下载关键命令整合C#go配置go插件常见的go工具安装测试 结束 概述 mac 安装 Visual studio code 整合go开发 相关前置文章 go安装及相关配置 文章 前置 官网速递 mac 系统高于等于 10.15.x 可以直接最新版本 我的系统是 10.13 &#xff0c;所以只能安装此版本…

JRTP实时音视频传输(2)-使用TCP通信的案例

1.创建自己的demo 先将example1拷贝为myclienttcp.cpp和myservertcp.cpp cp example1.cpp myclienttcp.cpp cp example1.cpp myservertcp.cpp 改写jrtplib/JRTPLIB/examples/CMakeLists.txt&#xff0c;添加myclienttcp和myservertcp编译 重新生成Makefile并编译 sudo cmak…

powershell脚本 判断NLB是否已安装

bat脚本&#xff1a;456.bat REM REM 解决下载的时候字符乱码的问题 chcp 65001 echo offREM 管理员运行powershell脚本 PUSHD %~DP0 & cd /d "%~dp0" %1 %2 mshta vbscript:createobject("shell.application").shellexecute("%~s0","…

白山云基于StarRocks数据库构建湖仓一体数仓的实践

背景 随着每天万亿级别的业务数据流向数据湖&#xff0c;数据湖的弊端也逐渐凸显出来&#xff0c;例如&#xff1a; 数据入湖时效性差&#xff1a;数据湖主要依赖于离线批量计算&#xff0c;通常不支持实时数据更新&#xff0c;因此无法保证数据的强一致性&#xff0c;造成数…

<软考高项备考>《论文专题 - 73 风险管理(5)》

5 过程4-实施定量风险分析 5.1 问题 4W1H过程做什么是就已识别的单个项目风险和不确定性的其他来源对整体项目目标的影响进行定量分析的过程。作用:1、量化整体项目风险最大可能性;2、提供额外的定量风险信息&#xff0c;以支持风险应对规划。为什么做了解风险对项目整体目标…

【STM32调试】寄存器调试不良问题记录持续版

STM32寄存器调试不良问题记录 NVIC&#xff08;内嵌的中断向量控制器&#xff09;EXTI&#xff08;外部中断/事件&#xff09; 记录一些stm32调试过程中&#xff1a;不易被理解、存在使用误区、不清不楚、是坑、使用常识等方面的一些记录。本记录只包含stm32的内核以及外设等寄…

node.js(express.js)+mysql实现注册功能

文章目录 实现步骤一、获取客户端提交到服务器的用户信息&#xff0c;对表单中的数据&#xff0c;进行合法性的效验 代码如下:二、检测用户名是否被占用三、对密码进行加密四、插入新用户&#xff08;完整代码&#xff09;总结 实现步骤 一、获取客户端提交到服务器的用户信息…

社交商业革命:Facebook Shops的崛起

近年来&#xff0c;社交媒体逐渐演变为不仅仅是社交的平台&#xff0c;更是商业活动的重要场所。在这个潮流的浪潮中&#xff0c;Facebook Shops的崛起正引领着一场社交商业的革命&#xff0c;为企业和消费者带来了全新的体验。 点击添加图片描述&#xff08;最多60个字&#x…

0间隔24h采集线报+源码的资源网

一款网站程序零间隔24h采集线报源码的资源网&#xff0c;更新下载类目的采集 及 导入&#xff0c;这款网站程序&#xff1a;jizhiCMS 高仿新版某刀资源网模板进行自动采集。 安装方法&#xff1a; 将根目录文件上传服务器 将根目录文件的sql.sql导入mysql数据库 环境需要支…

Vue-19、Vue监测数据的原理_对象

1、数据代理 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>vue监测数据改变的的原理</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist…

在线App封装技术:HTML5的新生命

HTML5封装的魅力所在HTML5带来了丰富的多媒体功能、地理位置服务、离线存储等特性&#xff0c;使得Web应用的体验更加接近原生App。封装HTML5到App中&#xff0c;可以大大缩短开发周期&#xff0c;降低开发成本&#xff0c;并且一次编写&#xff0c;多平台运行&#xff0c;极大…

西瓜书读书笔记整理(十一) —— 第十一章 特征选择与稀疏学习

第十一章 特征选择与稀疏学习 11.1 子集搜索与评价11.1.1 基本概念11.1.2 为什么要进行特征选择11.1.3 特征选择的两个关键环节11.1.4 常见的特征选择方法11.1.5 其他问题 11.2 过滤式选择11.2.1 什么是过滤式选择方法11.2.2 过滤式选择的优缺点 11.3 包裹式选择11.3.1 什么是包…

Spring 中 HttpServletRequest 作为成员变量是安全的吗?

在使用spring框架开发的时候&#xff0c;经常会在controller类中看到 HttpServletRequest 对象参数&#xff0c;一般我们都是直接使用&#xff0c;但是它是何时、怎么注入到 spring 容器的呢 &#xff1f;另外以成员变量注入的 request 是线程安全的吗 ? Controller public c…

Tuxera NTFS2024下载使用详细操作教程

你是否还在为Mac不能正常读写NTFS格式分区而感到苦恼呢&#xff1f;想要适合Mac系统使用来回转换磁盘格式又十分麻烦&#xff0c;这该怎么办呢&#xff0c;有了这款软件Tuxera ntfs就能马上帮你解决目前遇到的问题。 Tuxera NTFS2024最新免费版下载如下&#xff1a; https://…