RHEL 4可以使用两个不同的configuration文件运行两个Apache httpd实例吗?

我们有一个红帽企业Linux 4实例在默认端口上运行Apache。 我们想要添加第二个Apache实例,我们可以重新启动与第一个实例完全分开。 我们能做到吗?

也许有另一个易于维护的Web服务器,可以在非标准的端口上运行非常简单的PHP脚本? 我们希望能够远程触发php脚本,而不使用在RHEL服务器上运行的Apache默认实例。 有任何想法吗?

在典型的环境中,您可以创build一个httpd.conf的副本,然后在新文件上修改以下属性。


 #pid文件
 PidFile运行/ httpd.pid

 #http监听端口
听80

 # 日志文件
 ErrorLog日志/ error_log
 CustomLog logs / access_log合并

 # 服务器名称
 ServerName的default_host_name

 #默认网站的文档根目录
 DocumentRoot“/ var / www / html”

根据您的实现,您可能需要修改其他属性,如LockFile(如果您正在NFS上运行)

和往常一样,如果您使用虚拟主机定义,您将不得不自定义虚拟主机定义。

控制新的实例

例如,如果新复制文件的名称是/etc/httpd/conf/instance1.conf,那么可以使用以下命令启动这个新实例

 httpd -f /etc/httpd/conf/instance1.conf -k start

httpd命令的另一个有用的选项是-t选项来testingconfiguration文件的错误。

 httpd -f /etc/httpd/conf/instance1.conf -t

有关如何使用httpd命令的更多信息,请参阅“man 8 httpd”。

正如其他人暗示的那样,您可以创build一个单独的init脚本来帮助您pipe理这个实例。 RH /etc/init.d/httpd脚本应该作为一个起点。

是的,这很简单。 你基本上只需要在命令行上用非默认configuration文件启动第二个实例。 如果你做一个networkingsearch“apache多个实例”,你应该find你所需要的。

创build2个init脚本,都指向不同的configuration文件(-f选项)。 记得做2个不同的PID文件。

有2个不同的configuration文件可以让你成为那里的一部分。 除了Kristaps提到的PID文件之外,您还需要监听不同的端口(80和443以外)或绑定到不同的接口。

将/ etc / httpd下的configuration文件复制到另一个目录。 修改它们,改变httpd.conf等中的ServerRoot,DocumentRoot和其他path相关的variables。 然后创build一个独立的初始化脚本,调用httpd -f

这是绝对可能的。 创build两个init.d脚本来分离这些实例将是实现这一目标的最佳方式,您可以使用提供的“httpd”脚本,并修改您的第二个实例中要使用的选项。

Initd脚本只是用首选项来运行服务。 您也可以随时通过命令行使用二进制启动其他实例。

/ usr / sbin目录/的apachectl

这是init.d脚本的全部function,除了填充语言,configuration文件和其他选项之外。 事实上,init.d脚本经常引用其他地方创build的variables,如/ etc / sysconfig / httpd。 该文件中的variables是用于使用二进制文件的init.d脚本的。 它只是一个简单的代码链。