mod_wsgi¶
mod_wsgi 是一个与 Apache httpd 服务器集成的 WSGI 服务器。现代 mod_wsgi-express 命令可以轻松配置和启动服务器,而无需编写 Apache httpd 配置。
与 Apache httpd 紧密集成。
直接支持 Windows。
安装时需要编译器和 Apache 开发头文件。
不需要反向代理设置。
本页概述了运行 mod_wsgi-express 的基础知识,而不是与 httpd 的更复杂的安装和配置。务必阅读 mod_wsgi-express、mod_wsgi 和 Apache httpd 文档,以了解有哪些可用功能。
安装¶
安装 mod_wsgi 需要编译器以及已安装的 Apache 服务器和开发头文件。如果没有这些文件,你将收到错误。如何安装它们取决于你使用的操作系统和包管理器。
创建一个虚拟环境,安装你的应用程序,然后安装 mod_wsgi
。
$ cd hello-app
$ python -m venv .venv
$ . .venv/bin/activate
$ pip install . # install your application
$ pip install mod_wsgi
运行¶
传递给 mod_wsgi-express
的唯一参数指定了一个包含你的 Flask 应用程序的脚本,该脚本必须名为 application
。你可以编写一个小脚本,使用此名称导入你的应用,或者在使用应用工厂模式时创建它。
wsgi.py
¶from hello import app
application = app
wsgi.py
¶from hello import create_app
application = create_app()
现在运行 mod_wsgi-express start-server
命令。
$ mod_wsgi-express start-server wsgi.py --processes 4
--processes
选项指定要运行的工作进程数;一个起始值可以是 CPU * 2
。
每个请求的日志不会显示在终端中。如果发生错误,其信息将写入服务器启动时显示的错误日志文件中。
外部绑定¶
与本文档中的其他 WSGI 服务器不同,mod_wsgi 可以作为 root 运行以绑定到 80 和 443 等特权端口。但是,它必须配置为将权限降级为工作进程的不同用户和组。
例如,如果您创建了一个 hello
用户和组,您应该以该用户身份安装您的 virtualenv 和应用程序,然后告诉 mod_wsgi 在启动后降级到该用户。
$ sudo /home/hello/.venv/bin/mod_wsgi-express start-server \
/home/hello/wsgi.py \
--user hello --group hello --port 80 --processes 4