Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)

前言

说是前言,纯粹就是吐槽。

假设你赶时间。全然能够跳过这部分,我保证不会在这里隐藏不论什么实用的内容。

人上年纪后。可能冲劲不足,我花了大概两周的时间才成功的将flask部署到windows上。还好没有放弃,终于找到了答案。

只是这也说明我在开源软件的应用和配置上还非常差劲呀,当我看到要用VC10的C/C++编译器编译源码时,头都大了。你说我们这些平时习惯了Vistual Studio编译的。哪还懂什么make命令呀。

还好网上什么都有,连帮你编译的都有,因此,编译这一难没有经历。

对于flask这种开源软件来说,部署总是有多种选择。我如今吐槽一下我试过的,但没有成功的经历。

  1. PyISAPIe + IIS
  2. CGI + IIS (尽管配置成功,可是不能解析wsgi)
  3. FastCGI + Nginx
  4. FastCGI + Lighttpd (须要cygwin进行编译)

当然,flask官方有关于部署文档。可是写得太简单。但我还是将链接粘出来。

http://dormousehole.readthedocs.org/en/latest/deploying/index.html

參考

https://claudiosparpaglione.wordpress.com/2013/03/06/how-to-deploy-flask-applications-to-apache-webserver/

我參考过非常多链接,可是是这篇文章把我引向正途。

终于方案

Flask + mod_wsgi + Apache

Flask:  一个Python的web框架

mod_wsgi: 一个为Python编写的Apache的FastCGI模块

Apache: 一个类似于IIS的Webserver

!!。注意 !

!!

假设以下这一点没有做到。整个过程有99%的可能性会失败。

Apache,mod_wsgi和Python都必须用同样版本号的C/C++编译器生成,它们要么是32位的,要么是64位的,不能混用。

由于我从Python官方网站上下载的Python 3.4就是32位的。而且是用VC10编译出来的。因此在下载Apache和mod_wsgi时。也必须选择32位的用VC10编译出来的版本号。

之前我就是没有注意到这个问题,所以导致一直没有成功安装。

这个问题的详解,參见: https://github.com/GrahamDumpleton/mod_wsgi/blob/master/win32/README.rst

另外,Python官方网站提供的似乎都是32位的版本号。假设要64位的,预计须要自己动手编译了。

Windows下的编译器。參见: http://www.microsoft.com/express/vc/

步骤

  1. 安装Apache
  2. 安装mod_wsgi
  3. 安装Python
  4. 安装Flask
  5. 创建測试Web App
  6. 在Apache中配置网站
  7. 測试

1. 安装Apache

Apache是开源软件,针对windows环境。它不直接提供编译版本号。

能够在http://www.apachelounge.com/download/ 下载适合自己环境的版本号。

依据我自己当前的环境。我选择的是Win32 VC10编译出来的Apache2.4版本号

将压缩包下载到本机,然后将压缩包里面的Apache24目录复制到C:\。

当然,你能够复制到你的系统的不论什么位置,但Apache的默认配置是C:\Apache24。

假设你本机执行了IIS。将其关掉。由于IIS和Apache都默认用的是80port。假设你想配置其他port。我相信那也不难。等把Flask部署成功后再来捣鼓吧。

打开cmd

>cd c:\

>cd Apache24\bin\

>httpd

然后打开浏览器,输入

http://localhost

假设网页上显示 It Works! ,那说明apacheserver执行起来了。

2. 安装mod_wsgi

这个module可不能随便装,它是启动Python的关键。

我不知道为什么Flask的官方网站上不把这个模块的安装列出来。仅仅是简单的说了一下httpd.confg的配置,实在是太不负责任了。

从以下这个链接下载mod_wsgi

https://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so

这个包里面包括了32位和64位的编译版本号。下载完毕后选择

mod_wsgi-windows-4.4.12.tar\mod_wsgi-windows-4.4.12\Apache24-win32-VC10\modules\mod_wsgi-py34-VC10.so。

由于我当前安装的Python是32位的,所以必须选择mod_wsgi-py34-VC10.so

将mod_wsgi-py34-VC10.so拷贝至C:\Apache24\modules\下,并更名为mod_wsgi.so。

打开 c:\Apache24\conf\httpd.conf 加入例如以下配置

LoadModule wsgi_module modules/mod_wsgi.so

从新启动httpd,假设没有报错。说明mod_wsgi模块在apache里面载入成功了。

3. 安装Python

我在这里安装的是Python 3.4。默认安装在c:\Python34\ 文件夹下。

Python 3.4安装时。最好选择将Python加入到系统文件夹。安装完毕后就能够直接执行Python的相关程序了,比如以下安装flask时用到的pip

4. 安装flask

很讽刺的是。我在尝试部署flask应用的过程中,竟然忘记装flask。导致我在网页上面看到apache爆出的错误信息。期初我还觉得是Apache的问题,经过查看c:\Apache24\logs\error.log后才发现,原来是flask没有安装。

直接打开cmd。执行例如以下命令

pip install flask

它会自己主动将flask和flask依赖的两个库所有装上,这太方便了。

5. 创建Web App

以下的代码直接拷贝而来

创建C:\Test_Web\test.py

from flask import Flask, request
app = Flask(__name__)

@app.route(‘/hello‘)
def hello_world():
name = request.args.get(‘name‘,‘‘)
return ‘Hello ‘ + name + ‘!‘
if __name__ == ‘__main__‘:
app.run()

创建C:\Test_Web\test.wsgi

import sys

#Expand Python classes path with your app‘s path
sys.path.insert(0, "c:/Test_Web")

from test import app

#Put logging code (and imports) here ...

#Initialize WSGI app object
application = app

注意,application一定不能改成别的。

由于mod_wsgi在解析这个文件时,仅仅认application。

另外。同IIS不同的时,不须要给C:\Test_Web目录增加NETWORK SERVICE用户的訪问权限。

6. 在Apache中配置网站

仅仅须要将下面代码增加到C:\Apache24\conf\httpd.conf文件里。

<VirtualHost *:80 >
ServerAdmin [email protected]
DocumentRoot c:\Test_Web
<Directory "c:\Test_Web">
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias /flasktest c:\Test_Web\test.wsgi
</VirtualHost>

我对Apache的配置纯粹是外行。

我的理解是一个VirtualHost节点就相当于在IIS里面的一个Web Site节点。

假设我的理解有误,还望各位路过的Apache配置高手纠正。

我在研究的过程中还看见有人将网站的配置放在另外一个conf文件里。然后将其包括至httpd.conf。

7. 測试

如今。打开浏览器。输入 http://localhost/flasktest/hello?name=CZY

假设你看见网页上出现 Hello CZY! 说明你的网站执行起来了。

剩下的工作就是以当前的工作为原型,開始Python的Web App开发之旅吧。

假设你在尝试的过程中遇到什么问题。请给我随时在CSDN上留言。

时间: 2024-08-06 23:33:47

Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)的相关文章

flask+mod_wsgi+apache在windows上的布署

已经安装过python3.5 1.安装flask: pip install flask 2.安装apache: Apache是开源软件,针对windows环境,它不直接提供编译版本.可以在http://www.apachelounge.com/download/ 下载适合自己环境的版本. 根据我自己当前的环境,我选择的是Win32 VC10编译出来的Apache2.4版本将压缩包下载到本机,然后将压缩包里面的Apache24文件夹拷贝到C:\.当然,你可以拷贝到你的系统的任何位置,但Apache

Deploy Flask app to Apache on Windows

故事背景 这次我需要将一个Flask应用部署到本地的Windows服务器上.操作系统是64位的,程序是基于Python 3开发的,大体就是这样. 部署选项 根据Flask的部署指南,可供选择的方式还是蛮多的,IIS.Apache.nginx……本着享受生活不折腾的原则,我们应该选择标准的.方便的.用户多的技术.再按照页面上的提示,“Just remember that your Flask application object is the actual WSGI application“,于是

Visual Studio GitHub For Windows部署

使用GitHub For Windows部署Visual Studio项目 因为最近同时再看很多技术方面的书,书上的例子有很多自己想亲自尝试一下,但是每次写例子都得创建一个新项目未免太麻烦,索性就整理一个合集,然后发布到GitHub上. 首先使用GitHub For Windows,点击左上角的[+]号,默认的选项就是[Create],选择一个目录,并且将项目名称填入[Name]文本框,如图所示 这样Git项目创建好之后,选择右上角的[Publish Repository],可以写上项目的说明[

使用Apache通过JK实现多Tomcat负载均衡集群时,Apache不能将请求分发给Tomcat处理(即Apache反向代理不成功)的问题

前些天在做Apache通过JK实现多Tomcat负载均衡集群时,参考网上的配置将配置文件配置好后,访问已存在tomcat中的JSP文件时发现Apache提示URL不存在,然后检查了配置文件及tomcat工程部署,发现配置部署均无问题.尝试访问Apache静态页面,通过http单独访问tomcat均无问题.然后我猜会不会之前参考的网上的配置有问题,于是继续查询网上其它配置发现都差不多,尝试更改各种参数均没有解决.后来我仔细想了想出现这个问题的原因应该是Apache没有将HTTP请求分发给Tomca

apache、tomcat部署——在一台主机内

在上一篇中写了tomcat独立部署,自己提供web,自己提供容器.此处使用apache进行代理,apache和tomcat部署在一台主机上. 1.httpd的安装 httpd使用的版本是httpd-2.4.4.tar.bz2,这里使用源码编译安装.源码可到http://archive.apache.org/dist/httpd/#releases 进行下载.安装前先通过rpm命令查看apr和apr-util包的版本信息,httpd-2.4以上版本需要apr和apr-util的版本至少是1.4以上

Apache在windows下的安装配置

Apache在windows下的安装配置 转载自:http://blog.sina.com.cn/s/blog_536f16b00100cfat.html     1 Apache的下载 Apache是开源的Web服务器,可在http://httpd.apache.org/download.cgi或http://www.apache.com/en_apache/index.php上下载最新版本. 由于Apache将安装在windows系统下,所以下载“Win32 Binary(MSI Insta

Windows部署服务(WDS),网吧群装系统神器,装系统不求人!(内附安装包、镜像)

Windows部署服务(WDS)配合DHCP服务远程安装和部署系统 简介: Windows 部署服务(Windows Deployment Services,简称WDS)适用于大中型网络中的计算机操作系统部署.可以通过 Windows 部署服务来管理映像以及无人参与安装脚本,并提供人工参与安装和无人参与安装的选项.WDS服务配合DHCP服务和Windows活动目录域服务,可以对支持PXE启动的客户端从远程安装和部署操作系统. 动态主机设置协议(Dynamic Host Configuration

Nginx+Apache动静分离部署

Nginx+Apache动静分离部署 为什么需要部署Nginx+Apache动静分离? ? 之前在讲解基于LNMP架构的Discuz论坛搭建(原文链接:https://blog.51cto.com/14557673/2461480)的时候对动静分离有所提及,这边简述一下核心原因: ? 根据Nginx服务的特性,其擅长处理静态网站(图片文字视频等文件)访问资源,而Apache擅长动态处理(例如:账号注册的交互). ? 因此我们可以结合这两个服务特点与优势,部署实现网站服务的动静分离. 部署Ngin

虚拟化基础架构Windows 2008篇之5-安装Windows部署服务

看完文章,请顺手投我一票(王春海),谢谢 http://edu.51cto.com/activityvote/voteRanking 京东6.18结束了,IT人自己的6.18来了!!!51CTO学院3周年(6月30日-7月1日)70000课程不止5折!http://edu.51cto.com/lecturer/user_id-225186.html 在组建云计算数据中心时,会经常安装操作系统.无论是云计算的基础平台Hyper-V Server 2008 R2.Hyper-V Server 201