python - 一台虚拟主机上的多个 mod_wsgi 应用程序指向错误的应用程序

标签 python apache apache2 mod-wsgi wsgi

我正在尝试在同一域下的子目录中设置两个(或更多)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 会将我发送到工作进程首先加载的任何站点。示例:

  1. 重启配置为服务 6 个线程的 apache
  2. 加载 example.com/site1/,获取正确的页面
  3. 加载 example.com/site2/,获取正确的页面
  4. 再重复 2 和 3 2 次。
  5. 反复刷新 example.com/site1/,观察它从一个站点到另一个站点的循环。

实际上,对于任何给定数量的工作进程,无论 WSGIScriptAlias 指令如何,它都会循环遍历将请求发送到它首先遇到的任何一个的工作进程的总数。无论我做什么(设置 WSGIProcessGroup、守护程序模式与嵌入式模式或指令),它都会继续表现出这种行为。

如果有人能指出我在这里做错了什么,那就太棒了!

最佳答案

我在单个 Apache 安装上运行了多个 WSGI 应用程序,发现最简单的方法就是拥有多个进程组——每个应用程序一个。

与实际尝试让单个进程运行两个(或更多)应用程序相比,一个缺点是,这可能会使用比其他方式更多的常驻内存。但它使它们很好地分开并避免了麻烦。这对你来说可能不是问题(不是我)。

(也可能没那么糟糕,他们可能能够共享很多文本页面?这只是空想;我还没有以任何方式验证这一点,因为我的设置根本没有内存不足)

这是我的 httpd.conf 的一些片段,大致如下:

WSGIDaemonProcess khdx_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /khdx /home/galdosd/khdxweb/rel/khdx/apache/django.wsgi
<Location /khdx>
WSGIProcessGroup khdx_wsgi
</Location>

WSGIDaemonProcess sauron_wsgi user=galdosd group=galdosd maximum-requests=10000
WSGIScriptAlias /sauron /home/galdosd/finalsauronweb/django-root/apache/django.wsgi
<Location /sauron>
WSGIProcessGroup sauron_wsgi
</Location>

关于python - 一台虚拟主机上的多个 mod_wsgi 应用程序指向错误的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590587/

相关文章:

php - Lightsail Wordpress 实例重新启动 Apache

apache2 - 配置apache监听80以外的端口

CSS 不工作?

python - 我们如何在 python 中的重复非数字列值之间绘制包含两列以上信息的折线图?

python - 使用 Vim 编辑 python 时出错

django - 如何为 apache 和 django 设置 mod_wsgi?

python - 无法通过网络浏览器访问 pi 相机

Python:数据到文件然后数据从文本文件到列表 - TypeError:必须是 str,而不是字节

python - 我无法在 raspbian linux 上安装 python sabyenc

perl - Apache mod_perl 进程卡在 futex_wait 状态