运行一个 Pyramid 申请 mod_wsgi

mod_wsgi 是Graham Dumpleton开发的Apache模块。它允许 WSGI 使用Apache Web服务器提供服务的程序。

本指南将概述可用于获取 Pyramid 在Apache VIA下运行的应用程序 mod_wsgi . 这个特别的教程是在苹果的MacOS平台下开发的(Snow Leopard,在32位的Mac上),但是所有系统的指令应该基本相同,命令和文件的delta特定路径信息。

备注

不幸的是,这些指令几乎肯定不能用于部署 Pyramid 在Windows系统上使用 mod_wsgi . 如果你有经验 Pyramidmod_wsgi 在Windows系统上,请将文档提交给 Pylons-devel maillist .

  1. 本教程假设您的系统上已经安装了Apache。如果不这样做,请以任何有意义的方式为您的平台安装Apache2.x。

  2. 假设您已经满足了 安装包的要求 .

  3. 一旦安装了Apache,就可以安装 mod_wsgi . 使用(优秀) installation instructions 为您的平台进入系统的Apache安装。

  4. 创建一个 Pyramid 应用程序使用我们的 cookiecutter . 见 创建一个 Pyramid 项目 有关创建新项目的详细信息。

    cd ~
    cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout main
    

    If prompted for the first item, accept the default yes 按回车键。

    You've cloned ~/.cookiecutters/pyramid-cookiecutter-starter before.
    Is it okay to delete and re-clone it? [yes]: yes
    project_name [Pyramid Scaffold]: myproject
    repo_name [myproject]: myproject
    Select template_language:
    1 - jinja2
    2 - chameleon
    3 - mako
    Choose from 1, 2, 3 [1]: 1
    Select backend:
    1 - none
    2 - sqlalchemy
    3 - zodb
    Choose from 1, 2, 3 [1]: 1
    
  5. 创建一个 virtual environment 我们将使用它来安装我们的应用程序。使用用于构建 mod_wsgi . 例如,如果 mod_wsgi 是针对系统python 3.x构建的,那么您的项目应该使用从同一个系统python 3.x创建的虚拟环境。

    cd myproject
    python3 -m venv env
    
  6. 安装你的 Pyramid application and its dependencies.

    env/bin/pip install -e .
    
  7. 在项目目录中 (~/myproject )创建名为 pyramid.wsgi . 给出以下内容:

    from pyramid.paster import get_app, setup_logging
    ini_path = '/Users/chrism/myproject/production.ini'
    setup_logging(ini_path)
    application = get_app(ini_path, 'main')
    

    第一个论点 pyramid.paster.get_app() 是项目配置文件名。最好使用 production.ini CookieCutter提供的文件,因为它包含适合生产的设置。第二个是 .ini file that should be loaded by mod_wsgi . 名称的分配 application 重要的是:mod wsgi需要在打开文件时找到这样的分配。

    呼唤 pyramid.paster.setup_logging() initializes the standard library's logging 允许在应用程序中进行日志记录的模块。见 日志记录配置 .

    没有必要 pyramid.wsgi 脚本可执行文件。但是,你需要确保 two users have access to change into the ~/myproject directory: your current user (mine is chrism 以及Apache运行时经常命名的用户 apachehttpd )确保这两个用户都能“cd”到那个目录中。

  8. 编辑您的Apache配置并添加一些东西。我碰巧创建了一个名为 /etc/apache2/other/modwsgi.conf 在我自己的系统上安装Apache时,这些东西就出现了。

    # Use only 1 Python sub-interpreter.  Multiple sub-interpreters
    # play badly with C extensions.  See
    # http://stackoverflow.com/a/10558360/209039
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    WSGIDaemonProcess pyramid user=chrism group=staff threads=4 \
      python-path=/Users/chrism/myproject/env/lib/python3.8/site-packages
    WSGIScriptAlias /myapp /Users/chrism/myproject/pyramid.wsgi
    
    <Directory /Users/chrism/myproject>
     WSGIProcessGroup pyramid
     Require all granted
    </Directory>
    
  9. 重新启动APACHE

    sudo /usr/sbin/apachectl restart
    
  10. 参观 http://localhost/myapp 在浏览器中。您应该可以在浏览器中看到呈现的示例应用程序。

mod_wsgi 有许多旋钮和多种部署模式。这只是你如何使用它来服务 Pyramid 应用。见 mod_wsgi configuration documentation for more in-depth configuration information.