我正在尝试在同一域下的子目录中设置两个(或更多)Django 应用程序,例如:
http://example.com/site1/
http://example.com/site2/
我知道通过像这样设置 apache 虚拟主机通常可以正常工作:
<VirtualHost *:80>
...
WSGIScriptAlias /site1 /path/to/site1.wsgi
WSGIScriptAlias /site2 /path/to/site2.wsgi
</VirtualHost>
现在,我已经验证每个站点都可以单独运行。但是当我尝试同时运行两者时,apache 将我发送到工作进程首先加载的站点。例子:
- 重新启动配置为服务 6 个线程的 apache
- 加载example.com/site1/,得到正确的页面
- 加载example.com/site2/,得到正确的页面
- 再重复 2 和 3 2 次。
- 反复刷新 example.com/site1/,观察它在站点之间循环。
实际上,对于任何给定数量的工作进程,无论 WSGIScriptAlias 指令如何,它都会循环将请求发送到它首先命中的任何一个。无论我做什么(设置 WSGIProcessGroup、守护进程模式与嵌入式模式或指令),它都会继续表现出这种行为。
如果有人能指出我在这里做错了什么,那将是惊人的!
原文由 Gabriel Hurley 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经在单个 Apache 安装上运行了多个 WSGI 应用程序,并且发现最简单的事情就是拥有多个进程组——每个应用程序一个。
与实际尝试让一个进程运行两个(或更多)应用程序相比,一个缺点是这可能会使用比您可以逃脱的更多的驻留内存。但它使它们很好地分开并避免了麻烦。这对你来说可能不是问题(对我来说不是)。
(它可能也没有那么糟糕,他们可能能够共享很多文本页面?那只是无意义的猜测;我还没有以任何方式验证这一点,因为我的设置根本没有内存不足)
这是我的 httpd.conf 的一些片段,大约是: