如何使用非标准端口以非 root 身份运行 apache?

tri*_*id3 5 apache localhost centos7

我需要让 apache 以非 root 用户身份运行,监听端口 8443,以便在 CentOS 7.3 系统上有一个新网站(在 localhost:8443 上)可用于内部安全扫描。我只了解 apache(在 Ubuntu 上)的基础知识,而且我不是 Web 管理员,因此不熟悉使其正常工作所需的许多选项/配置设置。

我有一个包含我的网站内容(需要 php)的目录(/webcontent),并且可以在那里托管各种必要的conf文件。但我在正确设置 httpd.conf 以使 apache 以本地用户身份运行时遇到了困难,启动时使用:

httpd -f /webcontent/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)

并已将日志设置为写入 /webcontent/logs (通过 ErrorLog 参数),但它随后抱怨没有对 /run/httpd 的写访问权限,因此实际上不会启动:

[Thu Feb 23 11:59:51.289587 2017] [auth_digest:error] [pid 25464] (13)权限被拒绝:AH01762:无法在文件 /run/httpd/authdigest_shm.25464 上创建共享内存段

我想这只是我可能必须让它运行的许多问题中的第一个,所以如果有人可以指出 httpd.conf (或其他地方?) 中所需的特定配置设置以使此方案正常工作,那就太好了赞赏。或者对运行 apache 的非 root 实例进行测试有任何其他建议。

小智 3

有点晚了,但我发现到目前为止还没有答案。我自己刚刚遇到这个问题。我的解决方案如下。

使用该DefaultRuntimeDir指令覆盖默认的“/run/httpd”目录。这位于 httpd.conf 中。例如:

DefaultRuntimeDir  "/my/local/rundir"
Run Code Online (Sandbox Code Playgroud)

这将导致 apache 创建“/my/local/rundir/authdigest_shm.1234”

由于某种原因,这也不会覆盖默认的 pid 文件目录,因此请使用指令进行设置PidFile,例如:

PidFile "/my/local/rundir/httpd.pid"
Run Code Online (Sandbox Code Playgroud)

您可能还想查看该ServerRoot指令。