美文网首页
flask的windows server部署:Apache+ws

flask的windows server部署:Apache+ws

作者: AndrewMyh | 来源:发表于2021-03-13 20:35 被阅读0次

    [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了!

    相关文章

      网友评论

          本文标题:flask的windows server部署:Apache+ws

          本文链接:https://www.haomeiwen.com/subject/ubtfcltx.html