Redhat AWS EC2配置Apache mod_wsgi部署Django出现504网关超时
解决方案
清理重复加载的wsgi模块配置
你在httpd.conf末尾手动添加了LoadModule wsgi_module modules/mod_wsgi.so,而python3-mod_wsgi安装后会自动在conf.modules.d/目录下生成模块加载配置,两行重复导致了启动警告。删除httpd.conf末尾手动添加的那行LoadModule配置即可。修正WSGI进程的python路径配置
虚拟主机配置里的WSGIDaemonProcess行的python-path参数设置错误,当前配置指向了/var/www/public_html/main/,应该调整为项目根目录/var/www/public_html,这样Python才能正确识别main模块,修改后为:
WSGIDaemonProcess main python-path=/var/www/public_html python-home=/var/www/public_html/venv
- 补充public_html目录权限配置
在你的虚拟主机配置中添加/var/www/public_html目录的访问规则,避免权限拦截:
<Directory /var/www/public_html> Require all granted Options FollowSymLinks AllowOverride None </Directory>
- 调整项目目录权限
确认apache用户对项目目录和虚拟环境有读取执行权限,执行以下命令:
sudo chown -R apache:apache /var/www/public_html sudo chmod -R 755 /var/www/public_html
- 开放SELinux权限(Redhat系统必做)
Redhat默认启用的SELinux会拦截httpd对自定义站点目录的访问,执行以下命令开放权限:
sudo setsebool -P httpd_use_cgi on sudo setsebool -P httpd_can_network_connect on sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/public_html(/.*)?" sudo restorecon -Rv /var/www/public_html
- 重启服务生效
所有配置修改完成后重启httpd服务:
sudo systemctl restart httpd
内容的提问来源于stack exchange,提问作者Tech Orbeet
相关产品推荐
相关产品推荐

