- Python Pyramid教程
- Python Pyramid - 主页
- Python Pyramid - 概述
- Pyramid - 环境设置
- Python Pyramid - Hello World
- Pyramid - 应用程序配置
- Python Pyramid - URL 路由
- Python Pyramid - 查看配置
- Python Pyramid - 路由前缀
- Python Pyramid - 模板
- Pyramid - HTML 表单模板
- Python Pyramid - 静态资源
- Python Pyramid - 请求对象
- Python Pyramid - 响应对象
- Python Pyramid - 会话
- Python Pyramid - 事件
- Python Pyramid - 消息闪烁
- Pyramid - 使用 SQLAlchemy
- Python Pyramid - Cookiecutter
- Python Pyramid - 创建项目
- Python Pyramid - 项目结构
- Python Pyramid - 包结构
- 手动创建项目
- 命令行Pyramid
- Python Pyramid - 测试
- Python Pyramid - 日志记录
- Python Pyramid - 安全
- Python Pyramid - 部署
- Python Pyramid有用资源
- Python Pyramid - 快速指南
- Python Pyramid - 有用的资源
- Python Pyramid - 讨论
Python Pyramid - 部署
本教程到目前为止开发的 Pyramid 应用程序示例已在本地计算机上执行。为了使其可公开访问,必须将其部署在支持 WSGI 标准的生产服务器上。
许多 WSGI 兼容的 http 服务器可用于此目的。例如 -
- 女服务员
- 粘贴.httpserver
- 樱桃Py
- uWSGI
- 格文特
- mod_wsgi
我们已经讨论了如何使用 Waitress 服务器来托管 Pyramid 应用程序。它可以在具有公共 IP 地址的计算机的端口 80 (HTTP) 和 443 (HTTPS) 上提供服务。
mod_wsgi
Apache服务器是一种流行的开源HTTP服务器软件,由Apache软件基金会分发。它为互联网上的大多数网络服务器提供支持。mod_wsgi (由Graham Dumpleton开发)是一个 Apache 模块,它提供了一个 WSGI 接口,用于在 Apache 上部署基于 Python 的 Web 应用程序。
本节将介绍在 Apache 服务器上部署 Pyramid 应用程序的分步过程。在这里,我们将使用 XAMPP,一种流行的开源 Apache 发行版。可以从https://www.apachefriends.org/download.html 下载。
mod_wsgi 模块是通过 PIP 安装程序安装的。安装之前,将 MOD_WSGI_APACHE_ROOTDIR 环境变量设置为 Apache 可执行文件所在的目录。
C:\Python310\Scripts>set MOD_WSGI_APACHE_ROOTDIR=C:/xampp/apache C:\Python310\Scripts>pip install mod_wsgi
接下来,在命令终端中运行以下命令。
C:\Python310\Scripts>mod_wsgi-express module-config LoadFile "C:/Python310/python310.dll" LoadModule wsgi_module "C:/Python310/lib/site-packages/mod_wsgi/server/mod_wsgi.cp310-win_amd64.pyd" WSGIPythonHome "C:/Python310"
这些是要合并到 Apache 配置文件中的 mod_wsgi 模块设置。打开XAMPP 安装的httpd.conf文件并将上述命令行的输出复制到其中。
接下来,为我们的应用程序创建虚拟主机配置。Apache 将虚拟主机信息存储在httpd-vhosts.conf文件中,该文件位于 C:\XAMPP\Apache\conf\extra\ 文件夹中。打开文件并在其中添加以下行 -
<VirtualHost *> ServerName localhost:6543 WSGIScriptAlias / e:/pyramid-env/hello/production.ini <Directory e:/pyramid-env/hello> Order deny,allow Allow from all Require all granted </Directory> </VirtualHost>
这里,假设使用 Cookiecutter 实用程序构建 hello Pyramid 项目。这里使用生产环境要使用的PasteDeploy配置文件。
此虚拟主机配置需要合并到 Apache 的 httpd.conf 文件中。这是通过在其中添加以下行来完成的 -
# Virtual hosts Include conf/extra/httpd-vhosts.conf
现在,我们必须将以下代码保存为返回 Pyramid WSGI 应用程序对象的Pyramid.wsgi文件。
from pyramid.paster import get_app, setup_logging ini_path = 'e:/pyramid-env/hello/production.ini' setup_logging(ini_path) application = get_app(ini_path, 'main')
执行上述过程后,重新启动 XAMPP 服务器,我们应该能够在 Apache 服务器上运行 Pyramid 应用程序。
部署在 Uvicorn 上
Uvicorn 是一个 ASGI 兼容服务器(ASGI 代表异步网关接口)。由于 Pyramid 是一个基于 WSGI 的 Web 框架,我们需要借助asgiref.wsgi模块中定义的WsgiToAsgi()函数将 WSGI 应用程序对象转换为 ASGI 对象。
from asgiref.wsgi import WsgiToAsgi from pyramid.config import Configurator from pyramid.response import Response def hello_world(request): return Response("Hello") with Configurator() as config: config.add_route("hello", "/") config.add_view(hello_world, route_name="hello") wsgi_app = config.make_wsgi_app() app = WsgiToAsgi(wsgi_app)
将上面的代码保存为app.py。使用 pip 实用程序安装 Uvicorn。
pip3 install uvicorn
在 ASGI 模式下运行 Pyramid 应用程序。
uvicorn app:app
同样,它可以使用daphne服务器提供服务。
daphne app:app