Apache配置磁盘缓存时Permission denied的解决

   最近,对网站完整性进行评估时,发现生产机现有的Apache存在一些漏洞需要修补。前两天,开始着手进行修补,考虑之后,还是觉得重新安装新版Apache比较稳妥,一方面把版本更新到我们需要的版本,另一方面,可以保留原版本,万一升级后出现问题,可以快速地恢复。

      原版本是2.0.59,我们的目标是升级到2.2.10,没有别的原因,2.2.10是Sun官方的最新版本,呵呵。

      安装过程就不必多说了,无非是 ./configuration ,make,make install。安装好之后,在apache安装目录下建了一个cache目录作为磁盘缓存的目录。在httpd.conf文件中增加了配置项来启用缓存功能:

<IfModule mod_cache.c>
  CacheDefaultExpire 3600
   CacheMaxExpire 86400
   CacheLastModifiedFactor 0.1

  <IfModule mod_disk_cache.c>
     CacheRoot /usr/local/apache2.2.10/cache
     CacheMaxFileSize 10000000
     CacheMinFileSize 1
   CacheEnable disk /
     CacheDirLevels 5
     CacheDirLength 3
  </IfModule> 

  #<IfModule mod_mem_cache>
  #   CacheEnable mem /
  #   MCacheSize 4096
  #   MCacheMaxObjectCount 100
  #   MCacheMinObjectSize 1
  #   MCacheMaxObjectSize 2048
  #</IfModule>
</IfModule>


按照文档(官方和非官方)说明,前面的配置无误的话,启动Apache就应该能实现缓存功能了。

      满心欢喜地敲入 bin/apachectl start ,启动没有报错,看来有戏。

      先进入cache目录看看,有没有跟预想的一样有缓存文件产生.....咦!啥也没有啊,难道缓存没有生效吗?再看看日志:tail -f logs/error_4.log,发现日志有如下内容:

[Wed Nov 12 16:02:32 2008] [debug] mod_cache.c(131): Adding CACHE_SAVE filter for /content/9162.shtml
[Wed Nov 12 16:02:32 2008] [debug] mod_cache.c(138): Adding CACHE_REMOVE_URL filter for /content/9162.shtml
[Wed Nov 12 16:02:32 2008] [debug] mod_cache.c(639): cache: Caching url: /content/9162.shtml
[Wed Nov 12 16:02:32 2008] [debug] mod_cache.c(645): cache: Removing CACHE_REMOVE_URL filter.

看样子,缓存应该生效了呀,怎么在cache目录下没有文件生成呢?想既然日志中已有缓存日志,缓存应该生效了,就这样就可以了。后来想想还是不踏实,再找找原因。

      再仔细看看日志,发现下面还有这样的内容:

[Wed Nov 12 16:02:32 2008] [debug] mod_cache.c(830): (13)Permission denied: cache: store_headers failed

原来是这里的鬼,缓存目录没有权限,把缓存目录先授权再说:

chmod -R 777 cahce

再看目录属性,已经由原来的:

drwxr-xr-x   2 root     other        512 Nov 12 14:53 cache

变成

drwxrwxrwx 934 root     root       11776 Nov 13 10:45 cache

 

再重启apache,没有报错,查看日志, (13)Permission denied: cache: 也不再报,进入cache目录,有文件生成!

OK,这样才算大功告成。

 


当你在操作系统中遇到"Permission denied"错误,这意味着你没有足够的权限执行特定的操作。这通常发生在以下几种情况下: 1. 文件或目录权限不足:你可能没有读取、写入或执行特定文件或目录的权限。解决方法是使用chmod命令更改文件或目录的权限,例如使用"chmod 755 filename"将文件的权限更改为755。 2. 用户权限不足:你可能没有足够的权限执行特定操作,例如安装软件或修改系统设置。解决方法是使用管理员权限登录或使用sudo命令来执行需要特权的操作。 3. 文件或目录所属用户/组不匹配:如果文件或目录的所有者是其他用户或组,而你没有相应的权限,你将无法访问或执行它们。解决方法是使用chown命令更改文件或目录的所有者,例如使用"chown username:groupname filename"将文件的所有者更改为指定的用户和组。 4. SELinux或AppArmor限制:某些Linux发行版使用SELinux或AppArmor等安全模块来限制进程的访问权限。如果你遇到"Permission denied"错误,可能是由于这些安全模块的限制。解决方法是修改安全模块的策略,以允许特定操作。 5. 磁盘空间不足:如果磁盘空间不足,你可能无法创建新文件或写入数据。解决方法是释放磁盘空间或扩展磁盘容量。 这些是常见的"Permission denied"错误解决办法。如果你遇到特定的问题,请提供更多详细信息,以便我能够给出更具体的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值