同一台机器上有多个独立的 Apache 守护进程

同一台机器上有多个独立的 Apache 守护进程

我想问一个问题,关于是否可以在同一台机器上运行多个独立的 Apache 守护进程。我不是指多个 Apache 进程。我知道这是可行的。我说的是完全独立的守护进程。我熟悉 VirtualHosts 的概念,也知道如何在同一台机器上运行多个网站,但这不是我需要的。

具体来说,我在一台机器上运行一个 Web 应用程序。Apache 配置文件将 Web 请求定向到相关位置或 wsgi 应用程序。但是,我需要在同一台机器上设置反向代理。反向代理的配置文件将不断更新越来越多的条目。出于这个原因,我想有一个单独的 apache 守护进程来运行反向代理,这样反向代理的 Apache 配置文件上的任何可能的语法错误都不会影响/导致 Web 应用程序崩溃。首先,这是可行的方法吗?或者是否有另一种方法可以隔离这两个应用程序(Web 应用程序、反向代理),以便它们不会互相影响?如果是,怎么可能?

提前致谢。

答案1

您绝对可以这样做 - 每个守护进程都需要自己的配置文件和(非常重要的)它们监听的不同 TCP 端口。您不能让多个进程监听一个端口。

答案2

您不需要 2 个独立的守护进程,这可以通过基于端口的虚拟主机来完成。

答案3

抱歉,我疏忽了阅读你的问题。

如果从源代码安装 apache,只需在 2 个独立的目录中安装 2 个独立的安装:/opt/apache2_webapp 和 /opt/apache2_rproxy。

如果你想使用包管理器,最简单的方法是将其中一个服务器安装到 chroot 中。例如,在 Debian/Ubuntu 中,有非常方便的多带工具。

如果您想使用同一个包运行两个独立的服务器,您应该将初始化脚本、设置目录、pid 文件目录、日志目录、数据目录复制为其他名称,例如在 Debian/Ubuntu 中:

cp -r /etc/init.d/apache2 /etc/init.d/apache2_rproxy
cp -r /etc/apache2 /etc/apache2_rproxy
cp -r /etc/default/apache2 /etc/default/apache2_rproxy
cp -r /var/run/apache2 /var/run/apache2_rproxy
cp -r /var/log/apache2 /var/log/apache2_rproxy
cp -r /var/www /var/www_rproxy

然后更改新初始化脚本和配置文件中的所有路径,尝试启动/停止新初始化脚本以修复可能的错误,并将新初始化脚本添加到所需的运行级别。

PS 恕我直言,使用 2 个单独的守护进程有点过头了。您可以设置基于端口的虚拟主机解决方案,并创建脚本,该脚本将apache2ctl configtest在每次反向代理配置更改之前运行,并在测试失败时放弃此更改。

相关内容