CentOS7下Django+mod_wsgi间歇性出现AH01630错误求助
针对你遇到的每隔10-12天出现AH01630: client denied by server configuration: /tmp/mod_wsgi-localhost:8080:1999/htdocs错误(对应目录消失,重启恢复),给出以下排查方向:
检查系统tmp目录自动清理规则
CentOS7默认通过systemd-tmpfiles定期清理/tmp目录,默认配置文件为/usr/lib/tmpfiles.d/tmp.conf。查看文件中的清理规则,比如是否存在D /tmp 1777 root root 10d这样的配置——这里的10d表示删除10天未访问的文件/目录,刚好匹配你遇到的10-12天周期。
解决方法:在/etc/tmpfiles.d/下新建自定义配置文件(比如mod_wsgi.conf),添加规则x /tmp/mod_wsgi-*,让系统跳过对mod_wsgi临时目录的清理;或者延长tmp目录的清理周期。手动指定mod_wsgi的临时目录
避免使用系统默认的/tmp目录,手动指定一个不会被自动清理的目录。运行django manage.py runmodwsgi时添加--server-root参数,比如:python manage.py runmodwsgi --server-root /var/run/mod_wsgi/app1 --port 8080确保指定的目录权限正确(apache运行用户需拥有读写权限),且该目录不在系统自动清理的范围内。
排查mod_wsgi进程异常情况
检查mod_wsgi进程是否存在意外退出的情况:- 用
ps aux | grep mod_wsgi查看进程状态,确认是否有进程频繁重启或消失; - 查看系统服务日志(
journalctl -u httpd或对应应用的服务日志),是否有进程崩溃、资源耗尽的记录。
- 用
检查文件系统状态
定期检查/tmp所在分区的空间和inode使用情况:df -h /tmp df -i /tmp排除因空间不足、inode耗尽导致的目录创建失败或被清理的情况。
启用mod_wsgi调试日志
运行runmodwsgi时添加--debug-mode参数,或调整日志级别为debug,捕获目录消失前的详细操作记录,比如是否有进程主动删除目录、权限变更等异常行为。
内容的提问来源于stack exchange,提问作者Emma Birath

