文档章节

终于搞定flask+win+apache+mod_wsgi+virtualenv的部署发布!!

Klaus88
 Klaus88
发布于 2014/11/05 12:27
字数 593
阅读 413
收藏 5
点赞 0
评论 13

1、安装python 2.7

2、安装apache或者xampp

3、下载mod_wsgi.so,放到apache下modules文件夹下,并修改httpd.conf以加载模块。

   http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi

LoadModule wsgi_module modules/mod_wsgi.so


4、安装pip,指南:
   https://pip.pypa.io/en/latest/installing.html#install-pip

5、安装virtualenv,cmd下
   pip install virtualenv

6、建立虚拟环境FlaskEnv2,cmd下
   virtualenv D:\PythonProjects\FlaskEnv2

7、进入FlaskEnv2目录,cmd下
   cd D:\PythonProjects\FlaskEnv2\Scripts

8、安装Flask和其他插件,cmd下
pip install flask
pip install flask-login
pip install flask-openid
pip install flask-mail
pip install flask-sqlalchemy
pip install sqlalchemy-migrate
pip install flask-whooshalchemy
pip install flask-wtf
pip install flask-babel
pip install guess_language
pip install flipflop
pip install coverage

9、修改apache的设置文件 C:\xampp\apache\conf\extra\httpd-vhosts.conf

<VirtualHost *:80>
        ServerName example.com
        WSGIScriptAlias / "D:/PythonProjects/apricot/apricot.wsgi"
        <Directory "D:/PythonProjects/apricot">
        <IfVersion < 2.3 >
        Order allow,deny
        Allow from all
        </IfVersion>
        <IfVersion >= 2.3>
        Require all granted
        </IfVersion>
        </Directory>
</VirtualHost>

注意!!路径里的斜杠“/”是这个方向的,不是“\”这个方向的!这里要搞死人了!
还有下面的权限设置,用这里的这段。查了很久!

10、修改hosts文件,加入解析来测试
127.0.0.1        example.com

11、创建一个wsgi文件来测试 D:\PythonProjects\apricot\apricot.wsgi
代码如下:

##########开始#######
activate_this = 'D:/PythonProjects/FlaskEnv2/Scripts/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import site
import sys
# Remember original sys.path.
prev_sys_path = list(sys.path) 
# Add site-packages directory.
site.addsitedir('D:/PythonProjects/FlaskEnv2/Lib/site-packages')
# Reorder sys.path so new directories at the front.
new_sys_path = [] 
for item in list(sys.path): 
    if item not in prev_sys_path: 
        new_sys_path.append(item) 
        sys.path.remove(item) 
        sys.path[:0] = new_sys_path 
sys.path.insert(0, 'D:/PythonProjects/apricot')
from app import app as application
if __name__ == '__main__': #感觉写在这里好点
    app.run(debug=True)
##############结束#########

这段代码引入了独立环境到项目中,注意哦!
还是要注意那个斜杠“/”,走了不少弯路
然后就是那几个路径了,之前建立的独立环境等

12、建立一个测试的py文件 D:\PythonProjects\apricot\app.py
代码如下:

###########开始#######
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello, I'm Apricot!"
if __name__ == "__main__":
    app.run()
###########结束#######

13、打开Apache,然后开ie,打开http://example.com/,看到了吧
经测试,包括sqlite的本地读写,都一切正常^_^

14、有关静态文件的访问(图、js和css等),还没研究。


参考:
Windows Python虚拟环境配置(Distribute + pip + virtualenv + virtualenvwrapper-powershell)
http://my.phirobot.com/blog/2014-02-python_in_windows.html

引入独立环境的方法
http://blog.nutenstudio.com/flask-apache-virtualenv/

有关静态1
http://jyd.me/python/use-django-with-apache-mod_wsgi/

留一下
http://blog.xavierskip.com/2014-06-18-apache-wsgi/

留2
https://www.digitalocean.com/community/tutorials/how-to-deploy-a-flask-application-on-an-ubuntu-vps

django有关静态的设置
https://django-chinese-docs.readthedocs.org/en/latest/howto/deployment/wsgi/modwsgi.html

© 著作权归作者所有

共有 人打赏支持
Klaus88
粉丝 5
博文 15
码字总数 7457
作品 0
南宁
高级程序员
加载中

评论(13)

gatspy
gatspy
谢谢啊。真是帮了大忙!
Klaus88
Klaus88

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
这种部署方式,我测了下,如果修改文件上传后,必须重启apache服务器才能生效?

重启apache和删pyc。我有次懒得删pyc,出现了神奇的bug,哈哈
有啥最佳的部署方式吗? 我是想 能够先都编译成pyc文件然后打包一次性部署。更新也是重新替换包就可以了

没有哦,部署也不是很频繁的操作啊,感觉现在就更好了

很好,错字
Klaus88
Klaus88

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
这种部署方式,我测了下,如果修改文件上传后,必须重启apache服务器才能生效?

重启apache和删pyc。我有次懒得删pyc,出现了神奇的bug,哈哈
有啥最佳的部署方式吗? 我是想 能够先都编译成pyc文件然后打包一次性部署。更新也是重新替换包就可以了

没有哦,部署也不是很频繁的操作啊,感觉现在就更好了
王化鹏
王化鹏

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
这种部署方式,我测了下,如果修改文件上传后,必须重启apache服务器才能生效?

重启apache和删pyc。我有次懒得删pyc,出现了神奇的bug,哈哈
有啥最佳的部署方式吗? 我是想 能够先都编译成pyc文件然后打包一次性部署。更新也是重新替换包就可以了
Klaus88
Klaus88

引用来自“王化鹏”的评论

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
这种部署方式,我测了下,如果修改文件上传后,必须重启apache服务器才能生效?

重启apache和删pyc。我有次懒得删pyc,出现了神奇的bug,哈哈
王化鹏
王化鹏

引用来自“Klaus88”的评论

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
这种部署方式,我测了下,如果修改文件上传后,必须重启apache服务器才能生效?
Klaus88
Klaus88

引用来自“王化鹏”的评论

看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。

自己编译也太牛逼了吧?我有1年没弄c++了。另外,我开发机上的Apache一启动会提示个什么错误,不过按了确定就没事了,服务器上没这个错误,奇怪了。
王化鹏
王化鹏
看来还是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi 这里下的靠谱。 自己编译的不行。。。
王化鹏
王化鹏
我按照你的文档配置了下, 一访问apache就crash。
我的apache是基于xampp按照的2.4版本。
mod_wsgi.so 是基于4.4.2版本自己编译的。
其他和你的一样。
Klaus88
Klaus88

引用来自“瓜瓜jx”的评论

引用来自“Klaus88”的评论

引用来自“瓜瓜jx”的评论

wsgi一定要自己写么??

直接复制我的,改一下就行了
官网上说直接加from yourapplication import app as application就行啊

你没仔细看官网的说明,你说的那个只适用于简单的环境,换句话说就是开发时,不是部署不是用了工厂方法等的实际情况。其实由于flask算是比较底层的,所以你会觉得wsgi的写法和我们平时的flask程序也差不多。
完整版的linphone-android源代码

在国内下载linphone-android的源代码不是缺东就是少西,花费一个多星期的时间终于搞定了.各种依赖库都在.大家需要的赶紧下载.下载后可以直接导入eclipse,然后在部署到手机就可以使用了 http:/...

just4regist
2012/12/03
0
4
python tornado mysql 内容管理后台部署

我的第一个python语言的CMS终于要部署啦,现在来看下整个的project: 其中, back_handler是后台管理部分内容,包括添加、编辑、删除、查看等内容的操作。 db_scripts是所有数据库操作的集合...

何世友
2011/07/09
0
0
手把手教你一小时搭建个人网站

从事C/S结构和桌面单机软件开发的时候,一直觉得web网站很牛逼。网站一上线,通过浏览器输入域名,全世界的人都可以访问你的网站,感觉那才是作为一个程序员最有成就感的时刻。 虽然这会被很...

anda0109
2017/07/29
0
0
找到了一个rancher的平台

最近学习docker工具,弄来弄去找到一个叫rancher的平台工具。百度了几天后发现这个工具还真不错。 官网http://rancher.com/,rancher最近发布企业版的工具1.0。 可以在虚机、宿主机、云主机中...

eguotangseng
2016/05/16
0
0
ClassNotFoundException: JspException

给这个问题耗上了, 我一定要把罪魁祸首找不来 找不出来不下班!!! java.lang.ClassNotFoundException: JspExceptionorg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClass...

大师兄悟空
2014/04/09
1K
5
Python 和 egg 文件

不会安装python的egg文件,在网上搜索了一下,被“蟒蛇蛋”这个词雷到了,记录下。 随着对python的逐渐使用,发现一些python组件是用一个包管理器发布的,今天搞了快一个小时,终于搞定了,这...

甄码农
2012/03/03
0
1
Lync升级S4B秘籍,So Easy!!!

新产品一出,我的手就痒了,一直想安装新产品好好体验一下,但一没时间去做,今天终于得空儿,装个玩玩呗。原来计划全新的安装一下S4B,想想还是做个In-Place升级吧,省点时间。你问我,什么...

tianjinhm
2015/08/23
0
0
golang项目访问https的问题

一个golang的项目,使用了腾讯云的短信服务,腾讯云的短信服务URL是https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx,在开发平台,可以正常使用。编译后部署到生产...

ankexun
2017/10/20
0
0
Cocos2d-html5 2.0 发布

期待已久的正式版本2.0终于发布了,A现在三个引擎API统一起来,正式定案,以后不会有大变动了。Cocos2d-html5可以作为JS binding的开发入口了,三个引擎的测试例以它为准,一次开发搞定HTML5...

林顺Sean
2012/08/28
2.5K
2
[每日一题]Docker解决了什么问题?

这段时间Docker实在是如日中天,到处都是它的信息,你认为它解决了什么问题?有哪些应用场景? 这个问题显然没有标准答案,面试官只是想看看你是否有自己的想法,是否对新技术保持敏感,如果...

UlricQin
2014/09/26
0
16

没有更多内容

加载失败,请刷新页面

加载更多

下一页

《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
10分钟前
0
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
19分钟前
0
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
29分钟前
0
0
设计模式:代理模式

代理模式可以分为三种:静态代理,动态代理,cglib代理 1.静态代理:被代理的类需要实现一接口或是继承一父类 委托类(被代理的类): package com.java.pattern.proxy.staticdemo;publ...

人觉非常君
32分钟前
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
37分钟前
0
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
38分钟前
0
0
TensorFlow,从一个 Android Demo 开始

TensorFlow Android Demo 项目地址 Machine Learning 既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下? 如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考...

孟飞阳
40分钟前
0
0
JVM学习笔记二:内存结构规范

1、JVM基本结构图 2、java堆(Heap) 3、方法区(Method Area) 4、程序计数器 5、JAVA栈图解 局部变量表:八大基本类型,还可以存储引用类型 上一篇:JVM学习笔记一:类加载机制介绍...

刘祖鹏
45分钟前
0
0
mui集成微信H5支付(返回白屏问题已经解决)

一.项目需求 因为公司人员缺少,没有专门开发安卓和ios的人员,为了项目尽早上线采用了混合APP开发的方式,我选择了MUI混合开发框架,项目中需要在用户购买VIP会员的时候进行支付,所以需要在项目...

银装素裹
49分钟前
0
0
SpringBoot集成Redis--配置自定义的RedisCacheManager

配置自定义的RedisCacheManager--1自定义键生成规则 默认的键生成器 当不指定缓存的key时,SpringBoot会使用SimpleKeyGenerator生成key。 SimpleKeyGenerator SimpleKey 查看源码可以发现,它...

karma123
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部