在Apache上部署Django遇504网关超时问题求助
解决Apache部署Django时的504 Gateway Timeout问题
从你给出的配置和环境信息来看,有几个关键配置错误和排查方向可以帮你解决这个超时问题:
1. 修正WSGIDaemonProcess的python-home路径
你的配置里python-home=/var/www/html/orounds_pro/venv/bin/python3是错误的——python-home需要指向虚拟环境的根目录,而不是Python可执行文件的路径。正确的写法应该是:
WSGIDaemonProcess orounds processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/html/orounds_pro/venv
路径错误会导致mod_wsgi无法找到虚拟环境中的Django依赖,直接引发WSGI进程启动失败或初始化超时,这是504错误的常见诱因。
2. 检查目录权限
Apache的运行用户(默认是www-data)需要对项目目录拥有足够的访问权限:
- 给项目根目录和虚拟环境目录添加对应权限:
sudo chown -R www-data:www-data /var/www/html/orounds_pro sudo chmod -R 755 /var/www/html/orounds_pro - 虽然你已经给静态文件目录配置了
Require all granted,但也要确保文件系统层面www-data能读取静态文件。
3. 验证WSGI脚本的正确性
确认/var/www/html/orounds_pro/orounds_pro/wsgi.py路径无误后,打开该文件检查:
- 确保Django settings模块的路径设置正确:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "orounds_pro.settings") - 如果你的
settings.py中设置了DEBUG=False,一定要把orounds.localhost加入ALLOWED_HOSTS列表,否则Django会拒绝请求,也可能导致超时。
4. 查看Apache错误日志定位具体问题
504超时本质是后端进程无响应,查看Apache错误日志能获取最直接的故障线索:
sudo tail -f /var/log/apache2/error.log
日志里通常会显示模块导入失败、权限不足、虚拟环境加载异常等具体信息,是排查问题的核心依据。
5. 确认mod_wsgi已正确加载
检查mod_wsgi是否成功挂载到Apache:
apache2ctl -M | grep wsgi
如果输出包含wsgi_module (shared)说明加载正常;如果没有,需要重新启用模块并重启Apache:
sudo a2enmod wsgi sudo systemctl restart apache2
6. 重启Apache并测试
修正所有配置后,一定要重启Apache让配置生效:
sudo systemctl restart apache2
之后访问http://orounds.localhost测试,如果仍有问题,再结合错误日志进一步排查。
内容的提问来源于stack exchange,提问作者Wafula Samuel
相关产品推荐
相关产品推荐

