从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日
初始化 python 日志模块。基于 Philip Kershaw 的补丁,该补丁基于 pylons-discuss 上的讨论:http://groups.google.com/group/pylons-discuss/browse_thread/thread/9b9add4529b3779c?pli=1 [wichert]
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c56032e3f949a34a276a91d281672d7f3311b0e225a95abb8592d7ffd5fad9e |
|
MD5 | 3c529d23c17e67009340657a0efaa9c4 |
|
BLAKE2b-256 | 82af3c7af4baf9853fe97be661e53fb6d16bc05d3044075b4a77b2b1ca84daeb |