Lazysoft

新浪微薄腾讯微薄

最新碎语:让我们从c#开始走吧

您的位置:Lazysoft >php资料> python3.6_flask_apahce_mod_wsgi 成功部署在windows2012x64 无数坑 无数次的尝试

python3.6_flask_apahce_mod_wsgi 成功部署在windows2012x64 无数坑 无数次的尝试

python3.6_flask_apahce_mod_wsgi 成功部署在windows2012x64 无数坑 无数次的尝试


开发环境:win7x64  python 3.6.5 x64 pycham 和ve虚拟环境。

部署环境:windows2012 x64


先来说一下,坑有无数个,网上的所有资料,基本都是linux的,但是确实不熟悉,完全不会操作,铁了心要在windows上面部署。


首先,我查阅了无数的资料,baidu 有一些 谷歌 也有一些。


参考文档一:https://www.jianshu.com/p/0aa1c7097976 


翻阅了很多,找到了一篇看起来比较详细的文档,就跟着做了一下。

非常非常关键!!

你的:python apache mod_wsgi 必须是同平台 同vc  不理解的话 往下慢慢看吧 


apache 下载地址:https://www.apachehaus.com/cgi-bin/download.plx 我直接放下载地址,就别来回点了。


注意:apache 版本  因为我是x64为的系统,所以我选择了:httpd-2.4.33-o102o-x64-vc14-r2.zip

01.png

下载地址 后面俩个小国旗,建议大家用第二个(我不认识 但是我用迅雷下载就非常快。)


apache httpd-2.4.33-o102o-x64-vc14-r2.zip 这个文件名的意思是:2.4.33 版本 x64 位的 vc14 编译。! 关键!

————————————————————

我们解决了第一个问题,apache的选择,如果你是32 那么就32


在这里一定要注意,版本一旦选错,会出现apache无法运行的错误,慎重,慎重。
我们选择Apache 这项右下角的Download选择下载,这是最新版本的64位Apache
解压之后得到Apache24文件夹,接着自行配置环境变量(可以不进行配置,不过不能直接在cmd中使用httpd),完成后我们开始下载


我们来安装 python 注意!注意! python 也是有要注意的地方,我就没留意,导致浪费俩小时时间。


python下载: python默认好像是32位的, 你在python官网直接下载首页的那个,所以。。兄弟,选择x64


这里只贴出 3.6.5 的:https://www.python.org/downloads/release/python-365/

但是 python 3.6.5 x64 到底是什么vc编译的,我找了很久,找到了

Visual C++ 4.x                  MSC_VER=1000
Visual C++ 5                    MSC_VER=1100
Visual C++ 6                    MSC_VER=1200
Visual C++ .NET                 MSC_VER=1300
Visual C++ .NET 2003            MSC_VER=1310
Visual C++ 2005  (8.0)          MSC_VER=1400
Visual C++ 2008  (9.0)          MSC_VER=1500
Visual C++ 2010 (10.0)          MSC_VER=1600
Visual C++ 2012 (11.0)          MSC_VER=1700
Visual C++ 2013 (12.0)          MSC_VER=1800
Visual C++ 2015 (14.0)          MSC_VER=1900
Visual C++ 2017 (15.0)          MSC_VER=1910
我运行python 发现,是:MSC_VER=1900 (Visual C++ 2015 (14.0) )好像是正确的,查看版本:直接python 就行了。



python 安装完毕,apache 也安装完毕了, 重头戏:mod_wsgi 来了。


下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi


这里 我选择:mod_wsgi‑4.6.4+ap24vc14‑cp36‑cp36m‑win_amd64.whl 

大家版本需要根据自己的情况去选择。

因为我apache 是2.4版本的,python 是3.6.5 系统是 x64 重要的是 都是 vc14 编译,完美 终于找到了,你以为这就结束了?不可能。在安装whl的时候又耽误了很长的时间。


在参考文档中,都是说:

下载完成后,直接解压出来,打开mod_wsgi文件夹,找到server下的mod_wsgi.cp36-win_amd64.pyd,我们选择复制 

将复制文件粘贴到Apache24的modules下


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

在其中添加LoadModule wsgi_module modules/mod_wsgi.pyd


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


注意:如果这里你出错了,你使用上方的方法 无法正常的进行,那么,就得另一种方法了,我的情况是,上面的方法,失败!

方法二:

    将你下载的.whl 文件,放在一个目录中,我放在了 python的 \Scripts 文件夹中,然后 使用cmd cd命令到这个目录

    使用pip 命令进行安装 :pip install mod_wsgi-4.6.4+ap24vc14-cp36-none-win_amd64.whl

    这里要记住,如果失败了。。 请使用:python -m pip install -U pip 升级你的pip 可能是当前pip 无法安装这个包。


总之,升级之后,要确保,你的python 版本 以及这个 .whl 文件 等等 都对应的,因为我的python版本错误,导致这个步骤,重复了很多次

那么。 就可以再次进行安装,上方有代码。 


安装完毕之后,执行命令:mod_wsgi-express module-config 

注意,现在目录一个在  python的 \Scripts 因为这东西安装完,你会发现在这个目录有一个 mod_wsgi-express.exe 的东西哦

命令执行完毕之后 你会得到以下内容,我是: 万恶的水印啊!!!

04.png


你需要把你得到的内容,替换为之前那些教程告诉你的:LoadModule wsgi_module modules/mod_wsgi.pyd

是所有,把这三行 都放进去,上面那个就不要了。。


现在,我们已经安装完这些组件了,并且把模块放进去了。 那么,我们要配置apache了,但是我是不了解的,所以找了很多,



Listen 80

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAlias lazy
    ServerAdmin lazy@lazy.com
    DocumentRoot "C:/test"
    ErrorLog "C:/test/error.log"
    WSGIScriptAlias / C:/test/run.wsgi
    <Directory "C:/test">
        Require all granted
        AllowOverride All
        WSGIScriptReloading On
    </Directory>
    
</VirtualHost>

你需要把 80 是你的端口,C:/test 是你的项目目录,C:/test/run.wsgi 这个 就是你的wsgi的入口了。

关于项目的话,我是这样的:

run.wsgi

import sys  
  
#Expand Python classes path with your app's path  
sys.path.insert(0, "c:/test")  
  
from apps import app  
  
#Put logging code (and imports) here ...  
  
#Initialize WSGI app object  
application = app 

apps.py

from flask import Flask, request  
app = Flask(__name__)  
 
@app.route('/')  
def hello_world():  
 return 'Hello '

if __name__ == '__main__':  
 app.run()  

至此,运行,成功。

这部分也有很多的问题,不过都解决了,但是最终问题在哪里确实不清楚。


---

转载请注明本文标题和链接:《python3.6_flask_apahce_mod_wsgi 成功部署在windows2012x64 无数坑 无数次的尝试

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(1)

我也这样的,然后发现一连接数据库就卡死,最后换了nginx
开开哥 2周前 (04-03) 回复