5

所以我最近按照此处规定的说明下载了 Apache 服务器及其所有文件(httpd、apr、apr-util、pcre):http ://httpd.apache.org/docs/2.4/install.html

但是,在设置之后,当我尝试启动位于 usr/local/bin/ 中的 Apache 服务器时,系统会提示我以下消息:

[allen@allen-lnx ~]$ /usr/local/bin/apachectl start
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/logs/error_log.
AH00015: Unable to open logs

经过一些研究,我发现我需要编辑我的 httpd.conf 文件,我之前这样做是为了允许正确的 ServerName 和 Listen 选项。但是,我不确定如何编辑我的 conf 文件以允许访问“日志”目录。

值得注意的是,当我使用“sudo”命令时,该命令将运行,但我宁愿不要总是使用它,因为它似乎是一种解决方法。

任何帮助将不胜感激。谢谢!

编辑:我实际上注意到我可能有两个 httpd.conf 文件,这被证明有点麻烦。另一个位于我的根 /etc/ 目录 (etc/httpd/conf/httpd.conf) 中。我想我现在修改后的问题是……我应该保留哪一个?/etc/ 版本是内置的吗,如下 faff 的评论所示?

当前解决方案:我想我会接受这样一个事实,即在编辑此文件时我需要使用 sudo,因为我需要成为 root。稍后我可能会更改它,以便我始终以 root 身份运行,但现在sudo就足够了。

4

3 回答 3

5

这看起来像是文件系统权限的问题。确保该/usr/local/logs/目录存在并且可由您运行 Apache 的用户写入。

如果您不想让logs普通用户写入您的目录,您可以创建日志文件:

sudo touch /usr/local/logs/error_log

然后将文件的所有者更改为正确的用户:

sudo chown allen /usr/local/logs/error_log

假设您想以用户身份运行 Apache allen

如果要更改 Apache 日志文件的位置,请ErrorLog在 httpd.conf 文件中查找指令(如果不存在,则必须添加它):

ErrorLog path/to/logfile
于 2013-06-15T21:21:16.077 回答
3

对于使用 SELinux 的每个人,如果您删除了该文件夹或遇到类似问题,您可能需要做几件事。

重新链接文件夹ln -s /var/log/httpd /etc/httpd/logs 默认情况下,日志保存在 var 文件夹下,但在 /etc/httpd/logs 文件夹中引用

应用 SELinux 安全权限chcon system_u:object_r:httpd_config_t:s0 /etc/httpd/logs

当然,以管理员身份运行所有内容

于 2015-03-12T04:30:59.590 回答
0

将 SELinux 安全策略更改为许可解决了我的问题。

在修复我的 SELinux 之前使用强制模式:

$ sestatus -v
sestatus -v
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      30

我在 SELinux 配置文件和系统中更改了安全策略。

#/etc/selinux/config
SELINUX=permissive

# In terminal set SELinux to run in permissive mode.
$ setenforce 0

修复后,我的 SELinux 使用强制模式:

$ sestatus -v
SELinux status:                 enabled
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      30
于 2016-12-19T11:00:09.980 回答