onlyou13

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
据前人踏坑经历,拷贝如下:

1. Apache,mod_wsgi和Python都必须用相同版本的C/C++编译器生成,要么都是32位的,要么都是64位的,不能混用。
2. Apache和mod_wsgi 也必须选择相同位数相同VC编译版本(比如:都是x64 VC14编译)

 

 

本人以x64 VC14编译版本为例,

Windows版本: Window Server 2008 R2 x64

Python: 3.7.2 x64

 

1. 首先安装Python环境,安装python3.7.2 x64版本

下载地址:https://www.python.org/ftp/python/3.7.2/python-3.7.2-amd64.exe

验证一下,是否安装成功:

 

2. 安装Flask

 

3. 安装Apache

打开网页: https://httpd.apache.org

 这里一定一定要选对版本,我这里选的x64, vc14版本

  下载后,将文件解压出来,如图所示:

  

  命令行启动httpd.exe,并验证是否启动成功,显示"IT WORKS", 没有问题

 

  4. 安装mod_wsgi

  在https://www.lfd.uci.edu/~gohlke/pythonlibs/ 页面搜索 mod_wsgi, 并且一定要选对版本,我的版本是vc14+py37+x64版本

   

  将下载的文件后缀改为zip,解压出来,拷贝mod_wsgi.cp37-win_amd64.pyd 文件放到C:\Apache24\modules 目录,并改名为mod_wsgi.pyd

  

 

  5. 修改配置

   搜索SRVROOT 并修改apache的路径, apache配置文件:C:\Apache24\conf\httpd.conf

  

  加载mod_wsgi模块,增加行 LoadModule wsgi_module modules/mod_wsgi.pyd

  

 

  创建web app

  

  main.py 代码:  

from flask import Flask

app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
    
@app.route("/index/")
def foo():
    return "index page"
    

@app.route("/login/")
def login():
    return "login page"
 
if __name__ == '__main__':
    app.run()

  test.wsgi代码:  

import sys

sys.path.insert(0, "C:/web")

from main import app

application = app

  修改httpd.conf配置,末尾增加内容:

<VirtualHost *:8090 >
  ServerAdmin "0.0.0.0"
  DocumentRoot "c:/web"

<Directory "c:/web">
  Require all granted
  Require host ip
  Allow from all
</Directory>
  WSGIScriptAlias / c:/web/test.wsgi
</VirtualHost>

  搜索Listen,监听端口改为8090

  

  再次启动httpd,可能会出现以下错误:

  

  以上错误是由于httpd.conf中某些模块没有启用,启用以下模块即可:

LoadModule access_compat_module modules/mod_access_compat.so #基于主机的组授权(名称或IP地址) httpd 2.x兼容的模块,
LoadModule proxy_module modules/mod_proxy.so #apache的代理模块
LoadModule proxy_http_module modules/mod_proxy_http.so #代理http和https请求
LoadModule vhost_alias_module modules/mod_vhost_alias.so #虚拟主机动态配置
LoadModule authz_host_module modules/mod_authz_host.so #基于主机的组授权
Include conf/extra/httpd-vhosts.conf#启用虚拟主机配置

  如果上述步骤都没有问题,测试一下结果:

  

 

  公网访问试试:

  

 

   OK,至此,配置算是圆满成功!


 

本文发布于:2019-03-04 21:55:55

posted on 2019-03-04 21:56  onlyou13  阅读(1662)  评论(0编辑  收藏  举报