我们有一个在默认端口上运行 Apache 的 Red Hat Enterprise Linux 4 实例。我们想添加第二个 Apache 实例,我们可以完全独立于第一个实例重新启动它。我们可以这样做吗?
也许还有另一个易于维护的 Web 服务器可以在非标准端口上运行非常简单的 PHP 脚本?我们希望能够在不使用 RHEL 服务器上运行的默认 Apache 实例的情况下远程触发 php 脚本。有任何想法吗?
我们有一个在默认端口上运行 Apache 的 Red Hat Enterprise Linux 4 实例。我们想添加第二个 Apache 实例,我们可以完全独立于第一个实例重新启动它。我们可以这样做吗?
也许还有另一个易于维护的 Web 服务器可以在非标准端口上运行非常简单的 PHP 脚本?我们希望能够在不使用 RHEL 服务器上运行的默认 Apache 实例的情况下远程触发 php 脚本。有任何想法吗?
在典型环境中,您可以创建 httpd.conf 的副本,然后在新文件上修改以下属性。
并且根据您的实现,您可能需要修改其他属性,例如 LockFile(如果您在 NFS 上运行)
与往常一样,如果您使用虚拟主机定义,您将不得不对其进行自定义。
控制新实例
例如,如果新复制的文件的名称是 /etc/httpd/conf/instance1.conf,那么您可以使用以下命令启动这个新实例
httpd 命令的另一个有用选项是 -t 选项,用于测试配置文件是否有错误。
有关如何使用 httpd 命令的更多信息,请参阅“man 8 httpd”。
正如其他人所暗示的那样,您应该创建一个单独的初始化脚本来帮助您管理此实例。库存 RH /etc/init.d/httpd 脚本应作为起点。
是的,这很简单。您基本上只需要在命令行上使用非默认配置文件启动第二个实例。如果您在网络上搜索“apache 多个实例”,您应该会找到您需要的内容。
创建 2 个初始化脚本,都指向不同的配置文件(-f 选项)。记得制作 2 个不同的 pid 文件。
拥有 2 个不同的配置文件可以帮助您实现目标。除了 Kristaps 提到的 PID 文件之外,您还需要侦听不同的端口(80 和 443 除外)或绑定到不同的接口。
将 /etc/httpd 下的配置文件复制到另一个目录。修改它们,更改 httpd.conf 等中的 ServerRoot、DocumentRoot 和其他路径相关变量。然后创建一个单独的初始化脚本,调用 httpd -f
这绝对是可能的。创建两个 init.d 脚本来分离这些实例将是最好的方法,您实际上可以使用提供的“httpd”脚本并修改它以供您在第二个实例中使用的选项。
Initd 脚本仅使用首选选项运行服务。您还可以随时使用二进制文件通过命令行启动其他实例。
/usr/sbin/apachectl
这就是 init.d 脚本所做的所有事情,只是它填充了诸如语言、配置文件和其他选项之类的选项。事实上,init.d 脚本经常引用在其他地方创建的变量,例如 /etc/sysconfig/httpd。更改该文件中的变量适用于使用二进制文件的 init.d 脚本。它只是一个适度简单的代码链。