在Windows下用Apache+wsgi部署python+flask项目

2024-02-20 00:38

本文主要是介绍在Windows下用Apache+wsgi部署python+flask项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 安装Apache

从http://www.apachelounge.com/download/  下载最近版本的Apache

解压到D盘下,我的80端口已经被占用了,所以需要修改配置文件:D:/Apache24/conf/httpd.conf

找到Define SRVROOT,改为:

Define SRVROOT "d:/Apache24"

找到Listen,改为:

Listen 9002

在cmd下,执行:

>d:
>cd apache24/bin
>httpd

在浏览器输入localhost:9002,在网页上显示 It Works! 表明Apache启动成功。

二. 安装Python

我下载的是Python37,这个就自己找吧。

安装目录:C:\Program Files\Python37

在环境变量Path中加入配置:

C:\Program Files\Python37\Scripts\;C:\Program Files\Python37\;

在cmd下执行:

C:\Users\Administrator>python
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD6
4)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

说明安装配置成功

三. 安装mod_wsgi

在https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 下载对应wsgi的whl文件

把下载的.whl文件复制到python\Scripts下使用

pip3 install "mod_wsgi-4.5.15+ap24vc14-cp36-cp36m-win_amd64.whl"

进行安装在安装成功后在python的安装目录的\scripts文件夹下运行

mod_wsgi-express module-config

输出如下三行结果

LoadFile "c:/program files/python37/python37.dll"
LoadModule wsgi_module "c:/program files/python37/lib/site-packages/mod_wsgi/server/mod_wsgi.cp37-win_amd64.pyd"
WSGIPythonHome "c:/program files/python37"

把这三行内容复制到http.cnf文件下的其他LoadModule命令后面。

把下面两条LoadModule的注释去掉:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

再次启动服务器即可

四. 安装Flask

我用PyCharm编程的时候其实已经装过Flask了,如果没有装过的话,就在cmd下直接执行:

pip install flask

五. 创建WebApp

1. 创建目录C:\Test_Web

2. 创建文件test.py

from flask import Flask,render_template,jsonifyapp = Flask(__name__)if __name__== '__main__':app.run(host = '0.0.0.0',port = 9000,debug = True)@app.route('/')
def hello_world():return "<h1 style='color:red' algin='center'>Hello World!<h1>"@app.route('/main/')
def westos():# 如何在flask程序中返回一个html页面;flask默认查找页面内容的位置为templates目录;return render_template('main.html')tasks = [{'id': 1,'title': u'Buy groceries','description': u'Milk, Cheese, Pizza, Fruit, Tylenol','done': False},{'id': 2,'title': u'Learn Python','description': u'Need to find a good Python tutorial on the web','done': False}]@app.route('/restful/getTask',methods=['GET'])
def get_tasks():return jsonify({'tasks':tasks})@app.route('/restful/postTask',methods=['POST'])
def post_tasks():return jsonify({'tasks':tasks})

3. 创建文件test.wsgi

import sys
sys.path.insert(0, 'c:\\Test_Web')
from test import app as application

4. 我的test.py里面还有个html,所以可以再创建一个templates目录和main.html文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Main</title>
</head>
<body>
<h1 style='color:red' algin='center'>Main<h1>
</body>
</html>

六. 配置Apache

在apache24/conf/httpd.conf中添加如下配置:

Listen 9003<VirtualHost *:9003>    ServerAdmin admin@example.comWSGIScriptAlias / C:\Test_Web\test.wsgi<Directory 'C:\Test_Web'>Require all grantedRequire host ip    </Directory>
</VirtualHost>

重启服务器

七. 测试

1. 输入http://localhost:9003/ ,测试数据返回

2. 输入http://localhost:9003/main/ ,测试网页调用

3. 输入http://localhost:9003/restful/getTask,测试Get方法

4. 在postman中,测试Post方法

 

这篇关于在Windows下用Apache+wsgi部署python+flask项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726505

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Python Websockets库的使用指南

《PythonWebsockets库的使用指南》pythonwebsockets库是一个用于创建WebSocket服务器和客户端的Python库,它提供了一种简单的方式来实现实时通信,支持异步和同步... 目录一、WebSocket 简介二、python 的 websockets 库安装三、完整代码示例1.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很