跳转到主要内容

从buildout构建WSGI

项目描述

简介

‘’collective.recipe.modwsgi’’ 是一个 zc.buildout 食谱,它为 paste.deploy 创建了一个 mod_wsgi 的入口点。

使用非常简单。这是一个最小的 ‘’buildout.cfg’’ 文件,它创建了一个 mod_python 可以使用的 WSGI 脚本。

[buildout]
parts = mywsgiapp

[mywsgiapp]
recipe = collective.recipe.modwsgi
eggs = mywsgiapp
config-file = ${buildout:directory}/production.ini

这将创建一个名为 ‘’wsgi’’ 的小 Python 脚本,位于 parts/mywsgiapp 中,mod_wsgi 可以加载它。您还可以使用可选的 ‘’extra-paths’’ 选项来指定要添加到 Python 系统路径中的额外路径。

此 buildout 的 Apache 配置如下所示

WSGIScriptAlias /mysite /home/me/buildout/parts/mywsgiapp/wsgi

<Directory /home/me/buildout>
    Order deny,allow
    Allow from all
</Directory>

如果 Python 脚本必须从除 buildout parts 文件夹之外的地方访问,您可以使用可选的 ‘’target’’ 选项来告诉食谱脚本应该在哪里创建。

例如,mywsgiapp 部分的配置可能如下所示

[mywsgiapp]
recipe = collective.recipe.modwsgi
eggs = mywsgiapp
target = /var/www/myapp.wsgi
config-file = ${buildout:directory}/production.ini

然后食谱会在 /var/www/myapp.wsgi 创建脚本。

请注意,在运行食谱之前,包含目标脚本的目录必须已经存在于文件系统中,并且是可写的。

此 buildout 的 Apache 配置将如下所示

WSGIScriptAlias /mysite /var/www/myapp.wsgi

<Directory /var/www>
    Order deny,allow
    Allow from all
</Directory>

此食谱并不完全安装软件包,这意味着不会创建控制台脚本。如果您需要控制台脚本,可以添加第二个 buildout 部分,使用 z3c.recipe.scripts 进行完全安装。

具有多个应用程序的配置文件

可以在单个配置文件中指定多个应用程序或管道。如果您这样做,可以使用 app_name 选项指定要运行的应用程序。例如,如果您的 ini 文件如下所示

[app:my_app]
use = egg:my_application

[pipeline:production]
pipeline = my_app

[pipeline:devel]
pipeline =
    egg:WebError#evalerror
my_app

这指定了两种运行您应用程序的方法:一个 生产 配置,直接运行应用程序,以及一个 开发 配置,它还运行 WebError 交互式调试器以捕获错误。要在 mod_wsgi 中使用生产管道,请提供 app_name 参数

[mywsgiapp]
recipe = collective.recipe.modwsgi
eggs = mywsgiapp
app_name = production
config-file = ${buildout:directory}/production.ini

变更日志

2.1 - 2014年8月28日

  • 处理使用目标选项时损坏的符号链接。由 Jaap Roes 提交补丁。

2.0 - 2013年3月12日

  • 添加 Python 3 支持。由 Richard Mitchell 提交补丁。

1.7 - 2012年6月19日

  • 添加选项以配置目标脚本将被创建的位置。由 David Convent 提交补丁。

1.6 - 2012年1月31日

  • 修复打包错误。

1.5 - 2012年1月31日

  • 添加选项以配置从 .ini 文件加载哪个应用程序。由 Stephan Hof 提交补丁。

1.4 - 2012年1月15日

  • 修复不包含日志设置的配置文件的 .ini 处理逻辑中的错误。[aclark]

1.3 - 2012年1月13日

  • 优雅地处理不包含日志配置的 .ini 文件。[wichert]

  • 在设置执行权限时不要覆盖现有的文件权限。这修复了 问题 1 [fredj]

1.2 - 2009年8月7日

1.1 - 2009年4月20日

  • 添加一个类似于 zc.recipe.egg 的 ‘extra-paths’ 选项。[chrism]

1.0 - 2008年10月16日

  • 没有变化。[wichert]

1.0rc1 - 2008年6月30日

  • 更新生成的包装器以在将其添加到 sys.path 之前测试路径是否已在 sys.path 中。这防止在 mod_wsgi 重新加载模块时在 sys.path 中重复路径。[wichert]

1.0b3 - 2008年6月23日

  • 不要将配方作为 zc.recipe.egg.Eggs 的子类,而使用本地实例来确定工作集。[wichert]

  • 格式化包装器中的 sys.path 更改,使其更易于阅读。这完全是装饰性的,有助于调试。[wichert]

  • 在更新 buildout 部分时,还需要重新创建 wsgi 包装器文件。这是必要的,以便在工作集(如不同版本标记)中的版本更改反映在包装器中。[wichert]

1.0b2 - 2008年6月13日

  • 同时调用 Eggs 构造函数:working_set() 需要太多的内部变量,这些变量由我们设置,因此我们无法自己设置它们。这修复了在 buildout 中使用 find-links 时配方损坏的问题。[wichert]

1.0b1 - 2008年6月13日

  • 首次发布 [wichert]

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

collective.recipe.modwsgi-2.1.tar.gz (5.6 kB 查看哈希值)

上传时间 来源

支持