如何设置具有多个虚拟主机的 python Web 服务器?
我被告知 wsgi 是可行的方法,而不是 mod_python。 但更具体地说,您将如何设置多网站服务器环境? 网络服务器的选择等?
I've been told wsgi is the way to go and not mod_python. But more specifically, how would you set up your multi website server environment? Choice of web server, etc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Apache+mod_wsgi 是常见的选择。
这是一个简单的虚拟主机示例,设置为将对 /wsgi/something 的任何请求映射到应用程序(然后可以查看 PATH_INFO 来选择操作,或者无论您如何进行调度)。 根 URL“/”也被路由到 WSGI 应用程序。
如果您愿意,可以使用 WSGIProcessGroup 指令来分隔不同虚拟主机的处理程序。 如果您需要虚拟主机的脚本在不同用户下运行,则需要使用 WSGIDaemonProcess 而不是嵌入式 Python 解释器。
application.py 在运行时会将 WSGI 保留在全局“application”变量中可调用。 您还可以添加一个 run-as-main 页脚以与老式 CGI 兼容:
Apache+mod_wsgi is a common choice.
Here's a simple example vhost, setup up to map any requests for /wsgi/something to the application (which can then look at PATH_INFO to choose an action, or however you are doing your dispatching). The root URL '/' is also routed to the WSGI application.
You can use the WSGIProcessGroup directive to separate handlers for different vhosts if you like. If you need vhosts' scripts to be run under different users you'll need to use WSGIDaemonProcess instead of the embedded Python interpreter.
application.py would, when run, leave your WSGI callable in the global ‘application’ variable. You can also add a run-as-main footer for compatibility with old-school CGI:
我推荐使用 Nginx 作为 Web 服务器。 设置快速且简单。
您可能希望每个虚拟主机有一个 UNIX 用户 - 因此每个主目录都拥有自己的应用程序、Python 环境和服务器配置。 这允许您安全地重新启动特定应用程序,只需杀死您的虚拟主机拥有的工作进程即可。
只是一个提示,希望有帮助。
I'd recommend Nginx for the web server. Fast and easy to set up.
You'd probably want to have one unix user per vhost - so every home directory holds its own application, python environment and server configuration. This allows you to restart a particular app safely, simply by killing worker processes that your vhost owns.
Just a tip, hope it helps.
您可以使用 Apache 和 mod_wsgi。 这样,您仍然可以使用 Apache 对虚拟主机的内置支持。
You could use Apache and mod_wsgi. That way, you can still use Apache's built-in support for vhosts.