我爱编程

Flask部署:virtualenv+apache+mod_ws

2017-08-17  本文已影响0人  曹八一

一、前言

开发完Flask的项目之后,需要进行部署使用。在部署的过程中,遇到了很多的麻烦,很是心塞,最终部署成功。记录下来,或许可以给需要在Windows上部署Flask项目的朋友们作为参考。

二、部署过程

本次部署采取的方案为:virtualenv+apache+mod_wsgi
需要注意的是:Python,Apache和mod_wsgi应该都为32位或者64位,不能混用;而且Apache和mod_wsgi要是相同版本的C/C++编译器生成的。

1. virtualenv

使用virtualenv的理由:

我用的是python2.7 64,cmd下:

2. Apache

我用的是Apache2.4.27 VC9 64:

3. mod-wsgi py27 VC9 64

4. 创建.wsgi文件

activate_this = "E:/virtualenv/ikmap/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('E:/virtualenv/ikmap/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, 'E:/PyCharmProjects/ikmap') # 项目文件目录

from app import app as application # 只能用application,因为mod_wsgi在解析时,只认application

注意:路径使用'/',注意方向!

5. 修改配置文件conf\extra\httpd-vhosts.conf

<VirtualHost _default_:80>
DocumentRoot "${SRVROOT}/htdocs"
#ServerName www.example.com:80
</VirtualHost>
<VirtualHost *:80 >
    DocumentRoot "E:/PyCharmProjects/ikmap" # 项目路径
    WSGIScriptAlias /ikmap "E:/PyCharmProjects/ikmap/app.wsgi" # .wsgi文件路径,前面添加了/ikmap,浏览器输入就应该是http://127.0.0.1:80/ikmap,避免直接输入http://127.0.0.1:80
    <Directory "E:/PyCharmProjects/ikmap">
        Options Indexes FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

注意:路径使用'/',注意方向!

三、测试

在浏览器输入:http://127.0.0.1:80/ikmap就可以看到自己的项目了。

上一篇下一篇

猜你喜欢

热点阅读