部署产品¶
本文假设你要把应用部署到一个服务器上。本文只是给出如何创建发行文件并进行安装的概览,但是不会具体讨论使用哪种服务器或者软件。你可以在用于开发的电脑中设置一个新的虚拟环境,以便于尝试下面的内容。但是建议不要用于部署一个真正的公开应用。以多种不同方式部署应用的列表参见 部署方式 。
构建和安装¶
When you want to deploy your application elsewhere, you build a wheel
(.whl
) file. Install and use the build
tool to do this.
$ pip install build
$ python -m build --wheel
You can find the file in dist/flaskr-1.0.0-py3-none-any.whl
. The
file name is in the format of {project name}-{version}-{python tag}
-{abi tag}-{platform tag}.
复制这个文件到另一台机器, 创建一个新的虚拟环境,然后用 pip 安装这个文件。
$ pip install flaskr-1.0.0-py3-none-any.whl
PIP将安装相关项目及其依赖项。
因为这是一台不同的机器,你需要再次运行 init-db
,在实例文件夹中创建数据库。
$ flask --app flaskr init-db
当FlASK检测到它已安装(不可编辑模式)时,它会为实例文件夹使用不同的目录。您可以在以下位置找到它 .venv/var/flaskr-instance
取而代之的是。
配置密钥¶
在教程开始的时候给了 SECRET_KEY 一个默认值。在产品中我们应当设置一 些随机内容。否则网络攻击者就可以使用公开的 'dev' 键来修改会话 cookie ,或者其他任何使用密钥的东西。
可以使用以下命令输出一个随机密钥:
$ python -c 'import secrets; print(secrets.token_hex())'
'192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'
在实例文件夹创建一个 config.py 文件。如果该文件存在的话,工厂将从中读取该文件。将生成的值复制到其中。
.venv/var/flaskr-instance/config.py
¶SECRET_KEY = '192b9bdd22ab9ed4d12e236c78afcb9a393ec15f71bbf5dc987d54727823bcbf'
也可以在这里设置任何其他必要的配置,Flaskr 只需要 SECRET_KEY 即可。
运行产品服务器¶
当公开运行而不是在开发中运行时,不应使用内置的开发服务器( flask run
)Werkzeug为方便起见提供了开发服务器,但其设计并不是特别高效、稳定或安全。
相反,应当使用产品级的WSGI服务器。例如,使用 Waitress 。首先在虚拟环境中安装:
$ pip install waitress
你需要告诉女服务员你的应用程序,但它不使用 --app
喜欢 flask run
的确如此。您需要告诉它导入并调用应用程序工厂以获取应用程序对象。
$ waitress-serve --call 'flaskr:create_app'
Serving on http://0.0.0.0:8080
参见 部署方式,以获得许多不同的方式承载应用程序的列表。使用 Waitress 只是一个示例,因为它同时支持Windows和Linux。可以为项目选择更多的WSGI服务器和部署选项。
下面请阅读 继续开发.