Python Pyramid 部署

Python Pyramid 部署

到目前为止,在本教程中开发的 Pyramid 应用程序示例都是在本地机器上执行的。为了使其对公众可访问,必须在支持 WSGI 标准的生产服务器上进行部署。

有许多支持 WSGI 的 HTTP 服务器可用于此目的。例如:

  • waitress
  • paste.httpserver
  • CherryPy
  • uWSGI
  • gevent
  • mod_wsgi

我们已经讨论了如何使用 Waitress 服务器托管一个 Pyramid 应用程序。它可以在具有公共 IP 地址的机器的端口 80(HTTP)和 443(HTTPS)上提供服务。

mod_wsgi

Apache 服务器是一种流行的开源 HTTP 服务器软件,由 Apache Software Foundation 分发。它驱动着大多数互联网上的 web 服务器。mod_wsgi(由 Graham Dumpleton 开发)是一个 Apache 模块,为在 Apache 上部署基于 Python 的 web 应用程序提供 WSGI 接口。

在本节中,将解释在 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(异步网关接口)的服务器。由于Pyramid是基于WSGI的Web框架,我们需要将WSGI应用程序对象转换为ASGI对象,借助于 WsgiToAsgi() 函数,在 asgiref.wsgi 模块中定义。

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程