我有一个 apache 配置文件,当它直接放在 /etc/httpd/conf.d/foo.conf 中时,它工作正常。但是,当我将同一个文件移动到其他地方(例如,将其移动到 /tmp/foo.conf)然后创建符号链接时,ln -s /tmp/foo.conf /etc/httpd/conf.d
apache 启动失败,如下所示:
httpd: could not open document config file /etc/httpd/conf.d/foo.conf
我尝试将文件和符号链接模式设为 777,并尝试将它们更改为由 apache 用户拥有。
似乎 apache 无法加载文件纯粹是因为它是一个符号链接,但我确信我在其他机器上成功使用了符号链接。我是不是漏掉了什么?如果配置文件是符号链接,apache 是否有拒绝加载它们的选项?
操作系统为CentOS 4.4,apache版本2.0.52。
答案1
此服务器上启用了 SELinux 吗?我想知道这是否会阻止 apache 正确加载此符号链接?
答案2
apache 用户的权限无关紧要,因为通常 apache 以 root 身份运行,然后以 apache 用户身份启动 web 服务器(或任何指令user
)。我相信这必须在配置文件加载之后进行。
您能 cat 该符号链接吗?
答案3
您无需创建从 conf.d 到其所在位置的符号链接,可以将文件保留在 conf.d 目录中,然后创建指向 conf.d 中文件的符号链接。示例语法:ln -s /etc/httpd/conf.d/foo.conf /tmp/foo.conf
或者,使用硬链接,这样它在两个位置都是常规文件。一个文件位于两个位置。示例语法:ln /tmp/foo.conf /etc/httpd/conf.d
请注意,这仅在两个位置位于同一文件系统上时才有效。