Apache2.4+WSGI+Flask在windows服务器上布置运行接口

本文学习人群

先简单说下本文适合的学习人群,我是从0开始学习Python的,之前是写前段页面的。在写这篇文章前,我已经在python上学习了一个月了。所以不是什么快速入门Flask的文章,此文章主要目的就是让你在本地编写的Python+Flask能在一台服务器上运行起来。如果你想知道什么是Apache、WSGI、Flask、Python,请自行谷歌,一搜一大把。好了废话不多说,咱进入正题。


服务器环境

我是在阿里云上购买的一台服务器,由于是出于学习,我就买了最低配的服务器配置,系统是win2012r2的64位系统,一周只要16块钱。所以这篇文章的内容也是一周的时间整理出来的。所以总得来说,没前一个月的准备,也就不会有这一周的效率。

Python安装

如果你已经学习过Python一段时间了的话,这段请跳过。


Python官网
  • 如果是在windows上的服务器,直接打开 WEB 浏览器访问https://www.python.org/downloads/windows/

  • 在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装的版本号。

  • 下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。

Apache安装

下载

http://httpd.apache.org/download.cgi#apache24
页面中找到Files for Microsoft Windows点击进入后找到 ApacheHaus,最后你会看到这样的页面

Apache2.4下载页面(此页面经过谷歌浏览器自动翻译过了)

我用的服务器是64位的,所以就下载64位的了,如果服务器选择的是32位就选择上面的那个下载。
下载下来的文件

解压后,进入文件夹,将文件夹中的 Apache24 文件夹复制到服务器C盘的根目录中。接下来就可以开始安装了。

使用命令安装

快捷键win+r,然后输入cmd。
输入 下面的命令到Apache2.4的bin文件夹中
cd c:/Apache24/bin
接着 输入下面命令安装
httpd.exe" -k install -n apache
其中上方命令中的apache是命名

安装完成后结果

这里会有一行Errors的提示,不必慌张,快捷键win+r后输入“services.msc”回车可以看到服务已安装成功,但是还没启动
已安装完成的apache

服务器启动Apache

打开文件夹 「C:\Apache24\bin」,你会看到一个「ApacheMonitor.exe」的程序,双击打开后,会再屏幕右下方看到一片羽毛

ApacheMonitor服务器管理程序

双击这篇羽毛会打开ApacheMonitor服务器管理程序,点击start按钮,羽毛变成这个样式,服务启动成功。
服务启动成功

最后在浏览器中输入http://localhost就会打开这样的一个页面
Apache服务器访问的初始页面

这个页面存在「C:\Apache24\htdocs」文件夹中,也就是说如果只是用Apache2.4的展示静态页面的话,恭喜你,你已经完成了!

有可能会碰到的问题

我想说按照上面的操作能一次性成功的,说明你运气不错,我在做的时候花了整整一天才正正的将服务启动起来了,其中有两个问题是我绕了半天没出来的问题:

  1. 端口80被占用,这个问题好解决,在「C:\Apache24\conf」中找到「httpd.conf」,双击打开后搜索“Listen 80”,将80修改成其他的未被占用端口(如何查看那些端口被占用,自行谷歌这里就不详解了),同时在阿里云安全组上也要做设置,否则外网无法访问,然后启动服务,这时候就要在浏览器中输入“http://localhost:你刚修改的端口号”,即可获得上图。

  2. Apache和tomcat在通一个服务器上运行,这个问题我建议,换个新服务器,单独设置Apache,我也没解决,如果有人解决了,请在下面留言教我下,不胜感谢。

WSGI安装

打开http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil
找到mod_wsgi‑4.5.15+ap24vc14‑cp36‑cp36m‑win_amd64.whl(本人是python3.6,64位windows)

WSGI下载列表

下载后解压,会得到两个文件夹(whl文件解压我是用快压做的)
解压后文件

打开「mod_wsgi」文件夹,找到server下的「mod_wsgi.cp36-win_amd64.pyd」,我们选择复制
pyd文件

将复制文件粘贴到「C:\Apache24\modules」下
复制到modules文件夹中

在这里我将mod_wsgi.cp36-win_amd64.pyd改名为mod_wsgi.pyd,你也可以不改名字
光是将模块放进文件夹,Apache依旧无法识别,我们需要修改它的配置文件
打开「Apache24\conf\httpd.conf」
在其中添加LoadModule wsgi_module modules/mod_wsgi.pyd

添加wsgi

同时,我们还需要把LoadModule vhost_alias_module modules/mod_vhost_alias.so前面的#去掉,意思是让其有效,这个是为之后的虚拟主机启用做准备

现在暂时完成Apache的配置工作

Flask安装

安装

我们开始下载Flask
这里默认你的windows安装了pip模块
我们直接在cmd中输入
pip install flask

安装flask

配置

现在我们创建一个简单的flask项目,在Apache同名目录下创建test文件夹,按照flask的目录规则创建static(静态资源夹),templates(渲染文件夹)和执行代码 init.py,「pycache」文件夹是做什么的,自己用python运行下test.py就知道了。


测试项目

在 init.py 中我们输入以下代码:

from flask import *
app=Flask(__name__)
@app.route('/')
def index():
    return '<center><h1>Test Success</h1></center>'
if __name__ == '__main__':
    app.run()

因为只是简单测试,不需要编写完善的html页面,我仅仅返回了‘Test Success’这句话,这个时候我们还要编写wsgi文件,以便于链接Apache和Flask之间的沟通。
在wsgi.py中输入:

import sys
 
sys.path.append('c:/test')
 
from __init__ import app as application

现在进入关键的一步,我们需要在配置文件中配置虚拟主机。
打开httpd.conf,输入:

Listen 80
<VirtualHost *>
    WSGIScriptAlias / C:\test\wsgi.py
    <Directory 'C:\test'>
        Require all granted
        Require host ip
    </Directory>
</VirtualHost>

这样我们的网站基本就搭建好了
访问YouIp:6111可以打开页面(YouIp是你主机的ip地址)


访问

到此,Apache2.4+WSGI+Flask已完成,并运行成功外网可访问了

有可能会碰到的问题

按照上面的步骤做到最后,服务器能正常运行的同学,说明你运气真的不错!如果没运行成功的同学可以尝试下面的方法。
将之前我们下载的文件「mod_wsgi‑4.5.15+ap24vc14‑cp36‑cp36m‑win_amd64.whl」复制黏贴到「Python36\Scripts」这个是Python3.6的一个文件夹,具体在什么位置,那就要看当时安装Python的时候放在什么位置了。

然后使用cmd的cd命令到这个目录中,使用pip命令进行安装
pip install mod_wsgi‑4.5.15+ap24vc14‑cp36‑cp36m‑win_amd64.whl

如果安装失败,请先升级你的pip
python -m pip install -U pip
注意,现在目录一个在 python的 \Scripts 因为这东西安装完,你会发现在这个目录有一个 mod_wsgi-express.exe 的东西哦

安装完成后执行命令
mod_wsgi-express module-config

执行命令后

由于每个人的Python安装的位置不一样,所以这块内容也会不一样,开头的单词LoadModule是不是很熟悉。

打开「C:\Apache24\conf\httpd.conf」将刚才安装WSGI时输入的LoadModule wsgi_module modules/mod_wsgi.pyd,替换成图中你执行命令后得到的内容。再次运行服务器。运行成功。

参考文献:
python基础:http://www.runoob.com/python/python-install.html
wsgi安装://www.greatytc.com/p/0aa1c7097976
wsgi排坑:http://www.lazyw.org/pythonflaskapache.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容