zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Apache httpd 几个报错的解决记录

2023-04-18 14:08:16 时间

文章目录

Apache httpd 几个报错的解决记录

一 背景

今天在测试环境的 centos7.4 上使用 Docker 部署 httpd 服务时,遇到了以下3个报错:

  1. AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName’ directive globally to suppress this message.
  2. curl: (33) HTTP server doesn’t seem to support byte ranges. Cannot resume.
  3. AH00035: access to / denied (filesystem path ‘/usr/local/apache2/htdocs/info.tar.gz’) because search permissions are missing on a component of the path.

第一个和第三个是在 Apache httpd 的标准输出日志里的报错,第二个是在客户端访问时报错。

二 解决步骤

2.1 查资料

按照通常思路,上网搜一波,网上绝大部分解决思路都是从 SELinux,我也尝试着从 SELinux 入手,发现本机的 SELinux已禁用,问题应该不在这。期间还检查了主机的内核配置,包括 IPv4 和 IPv6 转发配置等,但都不是问题的关键点。看了好几篇 stackoverflow 的文章,仍未解决。

2.2 手动变更配置,寻找突破口

查看了原主机目录下的文件 index.html,权限是 644,不做任何挂载时,该文件是能够正常被访问到的。又看了我在主机上创建的主机目录的权限,发现主机被挂载的 volume 上一层目录的权限是:750,被挂载的文件的权限是640,忽然灵机一动,问题可能在 umask。查看该用户的 umask,果然是0027。一般情况下,某些公司出于安全考虑,可能将用户的 umask 设置为 0027。将 umask 改回常规默认值,重新创建 www 目录和放置被访问的资源,一切恢复正常。相关命令:

umask 0022

这种方式并不能永久变更 umask 的值,如需配置永久生效,可以系统启动脚本内进行配置,此处不再赘述。