本篇的情境是你要把写好的应用部署到服务器上,只会就怎麽建立发行档和安装
不会说明要怎麽选择服务器,要测试的话可以另外开一个虚拟环境
并不建议直接使用这个方法进行正式环境部署
想了解在不同的主机上怎麽部署可以参考官方文件:Deployment Options
当需要把应用部署到其他地方时,需要建立一个发行文件
目前 Python 的发行标准文件是 wheel 格式的档案,副档名为.whl
先安装 wheel 套件包
pip install wheel
用 Python 执行setup.py
会得到用来建立发行档的一个终端机互动工具
bdist_wheel
指令会建立一个 wheel 发行档
python setup.py bdist_wheel
所产生的档案为dist/flaskr-1.0.0-py3-none-any.whl
档案名由专案名称名称、版本号和一些关於专案安装要求的标记组成
像这样:{project name}-{version}-{python tag}-{abi tag}-{platform tag}
复制这个档案到另一台机器或是建立一个新的虚拟环境,然後用 pip 安装这个文件
pip install flaskr-1.0.0-py3-none-any.whl
Pip 会安装项目和相关依赖项目
既然这是一个不同的机器,就需要再次执行init-db
指令,在实例资料夹中中建立资料库
export FLASK_APP=flaskr
flask init-db
当 Flask 探测到它已被安装(非编辑模式下)
和前面不同会使用venv/var/flaskr-instance
作为实例资料夹
在一开始__init__.py
中我们给了 SECRET_KEY 一个预设值dev
但是在正式环境中我们应该使用随机字串
否则骇客就可以使用公开金钥的「dev」来窜改 session 和 cookie 或者其他任何使用这组金钥的东西
可以使用下面的指令输出一个随机金钥
python -c 'import os; print(os.urandom(16))'
>>> b'\t\xa2\x00\x9aax\x88\xfc\xcd\x03\x94-\xe0\xe54\xb7'
接着在实例资料夹建立一个档案config.py
工厂会读取这个档案,如果档案存在的话就把值复制进去用
venv/var/flaskr-instance/config.py
SECRET_KEY = b'\t\xa2\x00\x9aax\x88\xfc\xcd\x03\x94-\xe0\xe54\xb7'
如果有其他必须的参数设定也可以写入该文件中,而 Flaskr 只需要SECRET_KEY
我们在这篇的最一开始提过,不该直接用内建的开发服务器(flask run
)部署在正式环境
开发用服务器为了方便起见使用 Werkzeug,问题是他不是为了效能、稳定和安全而生的
应该使用正式的 WSGI 服务器,例如 Waitress
第一步我们先在虚拟环境中安装
pip install waitress
你要告诉 Waitree 关於你的专案,但不是像在使用flask run
的时候透过FLASK_APP
而是引用并呼叫应用工厂来得到一个应用程序物件
waitress-serve --call 'flaskr:create_app'
>>> INFO:waitress:Serving on http://0.0.0.0:8080
其他还有很多不同的部署方式,不论是云端主机或是自行架设主机的方案:Deployment Options
会选择使用 Waitress 示范是因为他同时支援 Windows、Mac 和 Linux 系统
还有其他许多 WSGI 服务器和部署选项可供选择!
<<: Re-architect - ContextMenuView
我们看电视综艺节目的森川葵,不管学习什麽技艺,都能很快学会,让教的人相当惊讶,且啧啧称奇,把这个电视...
今天是30天程序语言研究的第九天,研究的语言一样是python,今天主要学习的是档案的写入和写出 网...
缺乏计画的目标,只能叫做愿望。 A goal without a plan is just a wi...
昨天我们已经介绍到ALLOW_HOSTS了,那我们今天就继续介绍吧! 下一个我们看到的是INSTAL...
昨天介绍完CNN卷积神经网路反向传播程序,今天要来研究CNN卷积神经网路实际运作程序: 首先是全部正...