在开发调试Flask项目时,之所以能运行,是因为Flask框架自带了一个开发用的WSGI server,要将写好的flask项目部署到生产环境,需要一个性能更好的WSGI server,而在Windows环境下可以选择使用的WSGI server又很少,Apache服务器可以通过增加模块的方式,使其能够支持Flask项目。
1.安装第三方包
pip install virtualenv
pip install virtualenvwrapper-win
2.创建并进入虚拟环境
mkvirtualenv flask_env
当前创建的虚拟环境目录位于C:\Users\Administrator\Envs, 这样可能有时候不满足我们的需求,比如我们想把项目放在其他盘(或其他位置),这样就需要我们自己配置一下环境 。
3.新建文件夹: 如 D:\pythonEnvs 。配置电脑系统环境变量, 变量名:WORKON_HOME ,变量值:D:\pythonEnvs 。
4.重新打开cmd,命令行输入workon,目录中没有虚拟环境了,因为默认目录已经改变 , 我们可以将之前的虚拟环境的项目拷贝到D:\pythonEnvs下。
workon
5.再次运行workon,就可以看到该目录下所有的虚拟空间了。
6.进入(使用)某个虚拟空间:workon flask_env ,将requirements.txt
复制到此目录,再安装项目依赖包
workon flask_env
pip install -r requirements.txt
7.退出虚拟空间 deactivate
deactivate
1.下载Apache
Apache本身不提供已编译的安装包,只提供源码,如果你自己无法编译,可以从ApacheHaus上下载编译好的安装包。
2.解压安装包,放到你喜欢的位置,比如C:\Apache24。
3.下载wsgi_module,要选择跟你的Apache、Python还有Windows系统一致的版本。mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl
4.在虚拟环境下,安装下载好的mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl。
pip install mod_wsgi-4.9.0-cp38-cp38-win_amd64.whl
5.安装成功后,运行下面的命令,得到三条信息。
mod_wsgi-express module-config
6.详细修改Apache配置文件C:\Apache24\conf\httpd.conf,把三条信息复制到配置文件里,下面这些必须有。
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_core_module modules/mod_authz_core.so
ServerName 12.34.56.78 #有域名写域名,没域名写IP
Define SRVROOT "C:\Apache24" #你的apache安装包目录
ServerRoot "${SRVROOT}"
Listen 8080
DocumentRoot "D:\src\Fixed_assets" #你的Flask项目目录
<Directory "D:\src\Fixed_assets"> #你的Flask项目目录
Require all granted
Require host ip
</Directory>
WSGIScriptAlias / D:\src\Fixed_assets\test.wsgi #Flask项目目录中要新建一个*.wsgi的文件
LoadFile "c:/users/administrator/appdata/local/programs/python/python38/python38.dll"
LoadModule wsgi_module "D:/pythonEnvs/flask_env/lib/site-packages/mod_wsgi/server/mod_wsgi.cp38-win_amd64.pyd"
WSGIPythonHome "D:/pythonEnvs/flask_env"
7.新建一个D:\src\Fixed_assets\test.wsgi的文件。
import sys
sys.path.insert(0,'D:\src\Fixed_assets') #目录是Flask项目目录
from run import app as application #把你的Flask app导进来,并命名成application
8.测试配置文件是否正确。
httpd -t
1.第一种方式,启动完等待状态,按Ctrl+C停止。
C:\Apache24\bin\httpd
2.第二种方式,启动完可以关闭窗口,net stop Apache
停止服务。
注册为Windows服务,-n后面是服务名称,可以自定义。
C:\Apache24\bin\httpd -k install -n Apache
net start Apache
3.第三种方式,可视化启动。
启动完成,在浏览器输入本地地址加端口号,或者输入外网地址加端口号,正常显示网页,安装成功。