【问题标题】:apache httpd runs fine with root user but fails with non-root userapache httpd 在 root 用户下运行良好,但在非 root 用户下运行失败
【发布时间】:2021-05-28 04:08:39
【问题描述】:

Apache httpd 在root 用户下运行良好。当我使用oracle 用户运行 apache 时,它​​无法运行并出现以下错误:

$ id
uid=600000014(oracle) gid=63855(oinstall)
oracle@myhost:...ache/2.4.43/https-api11/bin$ ls -ltr apachectl
-rwxr-xr-x   1 oracle   oinstall    3509 Nov 10 05:09 apachectl

./apachectl -k start
(13)Permission denied: AH00072: make_sock: could not bind to address 10.23.52.219:443
no listening sockets available, shutting down
AH00015: Unable to open logs

$ telnet 10.23.52.219 443
Trying 10.23.52.219...
telnet: Unable to connect to remote host: Connection refused
oracle@myhost:...ache/2.4.43/https-vwsapi11/bin$ nslookup 10.23.52.219
216.51.23.10.in-addr.arpa       name = myhost.myshop.com.

oracle@myhost:...ache/2.4.43/https-api11/bin$ telnet myhost.myshop.com 443
Trying 10.23.52.219...
telnet: Unable to connect to remote host: Connection refused

以下是 httpd.conf 中的一些条目

Listen 8080
User oracle
Group oinstall
ServerAdmin weblogic@myshop.com
ServerName myhost.myshop.com

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

最后在extra/httpd-ssl.com

SSLSessionCache        "shmcb:/u/home/apache/2.4.43/https-api11/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300

<VirtualHost myhost.myshop.com:443>
DocumentRoot "/u/home/apache/2.4.43/https-api11/htdocs"
ServerName myhost.myshop.com
SSLEngine on

<Directory "/u/home/apache/2.4.43/https-api11/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

CustomLog "/u/home/apache/2.4.43/https-api11/logs/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

ProxyPass /manager/ http://myhost.myshop.com:8443/manager/
ProxyPassReverse /manager/ http://myhost.myshop.com:8443/manager/

ProxyPass /api/ http://myhost.myshop.com:8443/api/ timeout=600
ProxyPassReverse /api/ http://myhost.myshop.com:8443/api/ timeout=600

SetEnv nokeepalive ssl-unclean-shutdown
</VirtualHost>

如果以上信息不够,我会分享整个配置。

请建议我如何让 apache httpd 与用于复制(安装)它的用户 oracle 用户一起运行。

【问题讨论】:

    标签: apache permissions root httpd.conf user-permissions


    【解决方案1】:

    Apache 首先需要以 root 身份运行才能将自身绑定到端口 80 和 443(或任何端口

    User oracle
    Group oinstall
    

    在 apache 启动后工作正常,需要生成子进程来处理请求(这些进程将作为 oracle:oinstall 运行)。

    Listen 8080
    

    表示 apache 正在侦听端口 8080 而不是端口 80 或 443,并且如果 apache 未以 root 身份运行,则可以正常工作。

    你也在运行 mod_ssl,它应该包含

    Listen 443
    

    默认情况下,除非您或其他人已经更改了配置,因此您需要将此值更改为其他值 (>1024),原因是我在上面写的。

    (13)Permission denied: AH00072: make_sock: could not bind to address 10.23.52.219:443
    no listening sockets available, shutting down
    

    表示虚拟主机正在尝试将自己绑定到端口 443,但由于 apache 未以 root 身份运行,因此该端口无法正常工作。

    恕我直言,您应该使用官方软件包安装 apache,让它以 root 身份运行并按照您发布的内容进行配置,以便处理请求的子进程以您喜欢的方式运行(首选本地用户)。

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 2017-07-08
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多