您的位置:首页 > 运维架构 > Apache

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

2014-11-05 12:27 981 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息