概述
前言
说是前言,纯粹就是吐槽。如果你赶时间,完全可以跳过这部分,我保证不会在这里隐藏任何有用的内容。
人上年纪后,可能冲劲不足,我花了大概两周的时间才成功的将flask部署到windows上。还好没有放弃,最终找到了答案。
不过这也说明我在开源软件的应用和配置上还很差劲呀,当我看到要用VC10的C/C++编译器编译源代码时,头都大了。你说我们这些平时习惯了Vistual Studio编译的,哪还懂什么make命令呀。还好网上什么都有,连帮你编译的都有,因此,编译这一难没有经历。
对于flask这样的开源软件来说,部署总是有多种选择,我现在吐槽一下我试过的,但没有成功的经历。
- PyISAPIe + IIS
- CGI + IIS (虽然配置成功,但是不能解析wsgi)
- FastCGI + Nginx
- FastCGI + Lighttpd (需要cygwin进行编译)
参考
最终方案
Windows下的编译器,参见: http://www.microsoft.com/express/vc/
步骤
- 安装Apache
- 安装mod_wsgi
- 安装Python
- 安装Flask
- 创建测试Web App
- 在Apache中配置站点
- 测试
1. 安装Apache
可以在http://www.apachelounge.com/download/ 下载适合自己环境的版本。
将压缩包下载到本机,然后将压缩包里面的Apache24文件夹拷贝到C:。
当然,你可以拷贝到你的系统的任何位置,但Apache的默认配置是C:Apache24。
如果你本机运行了IIS,将其关掉。因为IIS和Apache都默认用的是80端口。如果你想配置其它端口,我相信那也不难。等把Flask部署成功后再来捣鼓吧。
打开cmd
>cd c:
>cd Apache24bin
>httpd
然后打开浏览器,输入
http://localhost
如果网页上显示 It Works! ,那说明apache服务器运行起来了。
2. 安装mod_wsgi
从下面这个链接下载mod_wsgi
这个包里面包含了32位和64位的编译版本,下载完成后选择
将mod_wsgi-py34-VC10.so拷贝至C:Apache24modules下,并更名为mod_wsgi.so。
打开 c:Apache24confhttpd.conf 添加如下配置
LoadModule wsgi_module modules/mod_wsgi.so
从新启动httpd,如果没有报错,说明mod_wsgi模块在apache里面加载成功了。
3. 安装Python
Python 3.4安装时,最好选择将Python添加到系统目录。安装完成后就可以直接运行Python的相关程序了,例如下面安装flask时用到的pip
4. 安装flask
直接打开cmd,运行如下命令
pip install flask
它会自动将flask和flask依赖的两个库全部装上,这太方便了。
5. 创建Web App
创建C:Test_Webtest.py
创建C:Test_Webtest.wsgi
注意,application一定不能改成别的。因为mod_wsgi在解析这个文件时,只认application。
另外,同IIS不同的时,不需要给C:Test_Web文件夹加入NETWORK SERVICE用户的访问权限。
6. 在Apache中配置站点
我对Apache的配置纯粹是外行。我的理解是一个VirtualHost节点就相当于在IIS里面的一个Web Site节点。如果我的理解有误,还望各位路过的Apache配置高手纠正。
我在研究的过程中还看见有人将站点的配置放在另外一个conf文件中,然后将其包含至httpd.conf。
7. 测试
如果你看见网页上出现 Hello CZY! 说明你的站点运行起来了。
剩下的工作就是以当前的工作为原型,开始Python的Web App开发之旅吧。如果你在尝试的过程中遇到什么问题,请给我随时在CSDN上留言。
前言
教程目录
-
一:如何开始一个flask项目
-
二:如何在apache上部署flask(坑好多)
-
三:flask前端和后端的交互
-
四:flask和数据库的交互
-
待续…………
一:服务器端的处理
1.1安装服务器
首先我们要安装服务器,我们本次安装选用的apache服务器
并用xampp集成安装包来安装apache。
安装完成后我们就要开始配置服务器了
首先我们可能会遇到第一个问题就是443监控端口冲突
error log [ssl:warn] [pid 3608:tid 232] AH01909:
www.example.com:443:0 server certificate does NOT include
解决方法:打开目录C:xamppapacheconfextra
(我的安装目录为C:xampp)下的httpd-ssl.conf文件
将Listen443 这句注释掉:# Listen 443
或将443改为4433或其它值(尽量不要使用0-1023)这样我们就解决了第一个问题,下面我们就来开始更改另一个
配置文件。打开目录C:xamppapacheconf (我的安装目录为C:xampp)下的httpd.conf文件
首先是更改监听ip和端口Listen 127.1.1.1:80
这是配置文件原来的写法 在配置服务器时候
将ip改为自己电脑的ip端口在不冲突的情况下选择80
但是有时候会冲突,所以需要更改端口号
为一个不冲突的端口这样我们一般情况下就可以启动服务器了
打开一个服务器的内部自建的页面接下来我们就要将wsgi放入到到模块文件夹里
并导入到apache的初始化文件里
1.2 如和搞到wsgi模块文件
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
ctrl+f 搜索mod_wsgi 下载python和apache对应版本的
mod_wsgi.whl 下载之后怎么用呢
win+r 输入cmd启动命令行界面 cd /d 文件路径
在mod_wsgi.whl 下执行pip install mod_wsgi.whl
之后你会在python的根目录下找到mod_wsgi.so当然名字可能不是
这个但是你就把他改为这个然后将其拷贝到
C:xamppapachemodules这个路径下然后我们在httpd.config添加这样一句话
LoadModule wsgi_module modules/mod_wsgi.so
再启动服务器,能用ok。下面我们来关键的了
我们来到上一篇教程建的项目下在新建一个wsgi.py的文件
添加如下代码
import sys
sys.path.insert(0,'c:/flask_lab_web')
from app import app as application
这上边的文件路径就是wsgi.py文件所在文件夹路径
而wagi.py和app这个文件应该是处在同一个文件夹下
而不是放在app文件夹下这一点一定一定一定要记住接下来我们回到httpd.conf里面开始在里面添加这样一些
东西。注意这样添加是为了适应apache2.4以上版本的
网上很多教程都是2.2版的那个不能用,我调了好久,
感觉都要哭瞎了,你感觉有用就推荐一下吧。。
下面是代码
<VirtualHost *:8000>
ServerName example.com
WSGIScriptAlias / e:/flask_lab_web/wsgi.py
<Directory e:/flask_lab_web>
Require all granted
Require host ip
Allow from all
</Directory>
</VirtualHost>
注意上面的路径你要更改的哦,这样你就完成了配置
开启服务器就ok了.感觉 有用就给个推荐呗
NameVirtualHost *:8000
<VirtualHost *:8000>
ServerName test.com
ServerAlias www.test.com
ServerAdmin root@test.com
DocumentRoot "F:/web"
ErrorLog "F:/web/error.log"
WSGIScriptAlias / F:/web/run.wsgi
Alias /static F:/web/static
<Directory "F:/web">
#Options +ExecCGI
#AddHandler cgi-script .py
Options -Indexes +FollowSymLinks
Require all granted # ver 2.4
AllowOverride All
WSGIScriptReloading On
</Directory>
</VirtualHost>
NameVirtualHost *:8000
<VirtualHost *:8000>
ServerName test.com
ServerAlias www.test.com
ServerAdmin root@test.com
DocumentRoot "F:/web"
ErrorLog "F:/web/error.log"
WSGIScriptAlias / F:/web/run.wsgi
Alias /static F:/web/static
<Directory "F:/web">
#Options +ExecCGI
#AddHandler cgi-script .py
Options -Indexes +FollowSymLinks
Order deny,allow # ver 2.2
AllowOverride All
WSGIScriptReloading On
</Directory>
</VirtualHost>
import sys
import django.core.handlers.wsgi
sys.path.append(r'F:/web')
#sys.path.append(os.path.dirname(os.path.dirname(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'demo.settings'
os.environ['PYTHON_EGG_CACHE'] = 'F:/web/cache'
application = django.core.handlers.wsgi.WSGIHandler()
最后
以上就是愉快大树为你收集整理的flask+mod_wsgi+apache在windows上的布署 前言 参考 最终方案 步骤的全部内容,希望文章能够帮你解决flask+mod_wsgi+apache在windows上的布署 前言 参考 最终方案 步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复