我已经开始在新工作中管理一批基于 CentOS 的网络服务器,在使用基于 Debian 的 Linux 服务器几年之后,我对 Apache 文件结构已经相当熟悉,如下所示:
/etc/apache2
apache2.conf
conf.d/
envvars
mods-available
mods-enabled
ports.conf
sites-available
sites-enabled
对我来说,这很有意义,我可以使用但不一定使用的模块位于 中mod-available
,而用户可以使用的模块位于 中mods-enabled
,直接使用也是如此sites
。当然,这些主要是符号链接,但我可以理解为什么这样做;刚进入系统时,通过查看相关*enabled
目录,我对系统的情况有一个大致的了解。
相比之下,CentOS 的设置如下:
/etc/httpd
conf
conf.d
logs -> ../../var/log/httpd
modules -> ../../usr/lib64/httpd/modules
run -> ../../var/run
我可以理解,通过调用,我可以看到哪些主机已启用apachectl -S
,并apachectl -M
查看模块,重命名/conf.d/example.conf
为conf.d/example.conf.disabled
也允许我相当简单地禁用网站,但我不明白为什么这些首先是不同的,现在,我不确定以这种或那种方式做这件事的好处。
是否有任何页面、博客文章或网站可以帮助解释两者之间的区别,以及可能解释为什么这样设置它们的一些想法?
现在,我盲目地遵循我在标准 CentOS 文件系统中看到的约定,而没有理解为什么,我不禁感觉到它会在我最意想不到的时候困扰我,比如当我偶然跨越 selinux 的权限层或类似的东西时。
答案1
只是思考方式不同。我认为您无需担心,只要您保持目录结构不变,就不会出现任何问题。显然,其他软件包会将其自己的 .conf 文件放入 conf.d 目录中,因此重命名或移动它不是一个好主意。modules-enabled/available 已被消除,但不要指望所有软件包的 conf.d 文件中都有 include 行。有些软件包仍通过 RPM 安装后例程将其添加到 httpd.conf 文件中。
答案2
每个发行版都有特定的偏好,它们遵循在创建时它们认为最好的模型。这是由于缺乏标准和开发人员的偏好造成的...
我认为没有什么可理解的,没有。