flask的windows server部署:Apache+wsgi

[TOC]

前言

今天看到阿里云搞活动,2核心2G内存,40G硬盘一年才¥86,果断入手

于是就开始windows server裸机上部署flask应用

参考链接:

https://blog.csdn.net/firefox1/article/details/46438769

https://www.jianshu.com/p/6ae98e93d595

整合上述两个教程和安装时踩的坑,得到以下教程:

第0步:安装notepad++,bandizip等软件

裸机啥都没有,搞个notepad++编辑文本,bandizip解压:

notepad++:https://notepad-plus-plus.org/downloads/

bandizip:https://www.bandisoft.com/bandizip/

第1步:确定mod_wigi版本,并下载whl包

作为Apache和flask的中介,mod_wsgi的版本的确定十分重要,访问:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi,CTR+F,输入mod_wsgi查找到下图中的链接:

下载链接

确定对应的版本,如:mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64vc14说明和它匹配的Apache的编译器为VC14cp35说明python版本是3.5amd64说明windows版本是64位的。根据自己的情况,选择对应版本的whl包下载

(说明:第一个教程中直接下载了.so文件,但这种方法一方面需要科学上网,另一方面即使科学上网了,给出的链接也找不到需要的版本,而第二个教程里的信息已经过时了,他选择的mod_wsgi-4.6.5+ap24vc14-cp36-cp36m-win_amd64.whl文件在网站上找不到,我在Github上找到了一个备份:https://github.com/jiechengyang/Utils/blob/master/mod_wsgi-4.6.5%2Bap24vc14-cp36-cp36m-win_amd64.whl,有需要的可以下载,我选择的版本就是这个)

(PS:以后有找不到的包可以去Github上找一找,应该会有人备份)

第2步:下载Apache和python

根据第一步确定的版本,下载对应的Apache服务器和Python解释器

Apachehttps://www.apachelounge.com/download

pythonhttps://www.python.org/downloads/

(我下载的Apache的编译器版本是VC14,链接:https://www.apachelounge.com/download/VC14/,而python我选择的是3.6,但官网上找不到3.6的下载链接,我就直接百度找了一个)

第3步:安装Apache和python

解压Apache安装包,将解压出来的Apache24放到C盘根目录下,打开cmd,输入:

cd C:\Apache24\bin
httpd

打开浏览器,访问http://localhost,如果出现 It Works! 就说明Apache服务器已经运行起来了

安装python的时候要注意,低版本的python需要手动将python的安装目录添加到环境变量里,否则pip等操作无法正常工作

第4步:迁移flask项目

flask项目复制到云服务器上,并使用pip命令安装所需依赖,安装完成后,运行并测试能否通过http://127.0.0.1:5000/进行访问

测试结束后,我们得到了一个能够正常工作的flask程序和一个能够正常工作的Apache服务器,接下来就是通过wsgiflask部署到Apache上了

第5步:配置WSGI和Apche

配置WSGI

  • 打开cmd,输入pip install,将第一步下载下载的whl文件拖到cmd里,回车进行安装

  • 安装完成后,输入mod_wsgi-express module-config,将输出类似如下的三条配置信息:

LoadFile "c:/users/administrator/appdata/local/programs/python/python36/python36.dll"
LoadModule wsgi_module "c:/users/administrator/appdata/local/programs/python/python36/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win_amd64.pyd"
WSGIPythonHome "c:/users/administrator/appdata/local/programs/python/python36"
  • 将输出的信息复制,粘贴到C:\Apache24\conf\httpd.conf文件的最上方:
httpd.conf
  • 重启Apache服务器,如果没有问题就说明配置成功

配置.wsgi文件

flask项目的目录下,新建test.wsgi,根据自己的情况修改相关代码:

import sys

#flask项目的目录
sys.path.insert(0, r"C:\Users\Administrator\Desktop\GHS\myWeb")

#因为一般的flask项目的入口是app.py,因此这么写
#教程一中flask项目的入口是test.py,因此需要写成from test import app
from app import app

#这一个不能改
application = app

配置Apache

打开C:\Apache24\conf\httpd.conf,将以下内容粘贴进去,并修改:

#代码中的C:\Users\Administrator\Desktop\GHS\myWeb是flask项目的目录,根据自己的需要修改

<VirtualHost *:80 >
    ServerAdmin example@company.com
    DocumentRoot C:\Users\Administrator\Desktop\GHS\myWeb
<Directory "C:\Users\Administrator\Desktop\GHS\myWeb">
    Order allow,deny
    Allow from all 
</Directory>
WSGIScriptAlias / C:\Users\Administrator\Desktop\GHS\myWeb\test.wsgi
</VirtualHost>

配置后如图:

httpd.conf

CTR+F,查找mod_access_compat,查找到后把它注释回来,使其生效:

(不配置的话会出现Invalid command 'Order', perhaps misspelled or defined by a module not included
in the server configuratio的报错)

如图

第6步:测试

配置完成后,重启Apache,启动浏览器访问http://localhost,进行flask项目的测试

在测试过程中发现以下问题:

  • flask项目使用python启动时,工作目录为C:\Users\Administrator\Desktop\GHS\myWeb,即flask项目的目录,因此各个相对路径都正常,但配置到Apache上后,工作目录就变成了C:\Apache24\bin,相对路径失效
    • 方法一:把相对路径都改成绝对路径
    • 方法二:导入os,通过项目启动时调用os.chdir(r"C:\Users\Administrator\Desktop\GHS\myWeb"),将工作目录切换过来
  • 使用python启动时:with open("./static/cookie.json)不会报错,但配置到Apache上后,就得这么写了:with open(r"./static/cookie.json),即所有的目录都得加上r

测试结束后,就可以愉快地GHS了!

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

推荐阅读更多精彩内容