运行一个 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
. 如果你有经验 Pyramid 和 mod_wsgi
在Windows系统上,请将文档提交给 Pylons-devel maillist .
本教程假设您的系统上已经安装了Apache。如果不这样做,请以任何有意义的方式为您的平台安装Apache2.x。
假设您已经满足了 安装包的要求 .
一旦安装了Apache,就可以安装
mod_wsgi
. 使用(优秀) installation instructions 为您的平台进入系统的Apache安装。创建一个 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
创建一个 virtual environment 我们将使用它来安装我们的应用程序。使用用于构建
mod_wsgi
. 例如,如果mod_wsgi
是针对系统python 3.x构建的,那么您的项目应该使用从同一个系统python 3.x创建的虚拟环境。cd myproject python3 -m venv env
安装你的 Pyramid application and its dependencies.
env/bin/pip install -e .
在项目目录中 (
~/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 bymod_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 ischrism
以及Apache运行时经常命名的用户apache
或httpd
)确保这两个用户都能“cd”到那个目录中。编辑您的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>
重新启动APACHE
sudo /usr/sbin/apachectl restart
参观
http://localhost/myapp
在浏览器中。您应该可以在浏览器中看到呈现的示例应用程序。
mod_wsgi 有许多旋钮和多种部署模式。这只是你如何使用它来服务 Pyramid 应用。见 mod_wsgi configuration documentation for more in-depth configuration information.