mod_wsgi¶
mod_wsgi 是一个WSGI服务器,与 Apache httpd 伺服器。现代的 mod_wsgi-express 命令使配置和启动服务器变得很容易,而不需要编写ApacheHTTPD配置。
与ApacheHTTPD紧密集成。
直接支持Windows。
需要一个编译器和阿帕奇开发头才能安装。
不需要反向代理设置。
本页面概述了运行mod_wsgi-express的基础知识,而不是使用HTTPD进行更复杂的安装和配置。请务必阅读 mod_wsgi-express , mod_wsgi ,以及 Apache httpd 文档以了解哪些功能可用。
正在安装¶
安装mod_wsgi需要一个编译器以及安装的Apache服务器和开发头文件。如果它们不是,您将得到一个错误。如何安装它们取决于您使用的操作系统和包管理器。
创建一个Virtualenv,安装应用程序,然后安装 mod_wsgi
。
$ cd hello-app
$ python -m venv .venv
$ . .venv/bin/activate
$ pip install . # install your application
$ pip install mod_wsgi
正在运行¶
唯一的理由是 mod_wsgi-express
指定包含您的FlaskTM应用程序的脚本,必须调用该脚本 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可以作为根用户运行,以绑定到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