无法安装libapache2-mod-wsgi-py3,Apache部署Django API遇阻
Apache部署Django API的WSGI问题解决方案
一、解决yum找不到libapache2-mod-wsgi-py3的问题
你用的是Amazon Linux 2,libapache2-mod-wsgi-py3是Debian/Ubuntu系统的包名,在Amazon Linux 2里对应的Python3版本WSGI模块包名为mod_wsgi-python3,执行以下命令安装:
sudo yum install mod_wsgi-python3
安装完成后,切换Apache使用的WSGI模块为Python3版本:
# 禁用Python2版本的wsgi模块 sudo a2dismod wsgi # 启用Python3版本的wsgi模块 sudo a2enmod wsgi_python3 # 重启Apache使配置生效 sudo systemctl restart httpd
二、修复TypeError: 'property' object is not callable错误
这个错误的核心原因是Apache加载的WSGI模块与Python3.6虚拟环境不兼容,或是Django版本与Python3.6不匹配:
- 验证WSGI模块版本:执行
mod_wsgi-express module-config,查看输出中的Python版本是否为3.6。如果显示Python2.x,说明模块切换未生效,重新执行上面的禁用/启用命令。 - 匹配Django与Python版本:Python3.6仅支持Django 1.11.x到3.2.x版本(Django 4.0及以上不再兼容Python3.6),若你的Django版本过高,执行以下命令降级:
source /path/to/your/venv/bin/activate pip install django==3.2.25
- 修正Apache配置:确保Apache虚拟主机配置中指定了正确的虚拟环境路径,示例配置片段:
WSGIDaemonProcess my_django_api python-home=/path/to/your/venv python-path=/path/to/your/project_root WSGIProcessGroup my_django_api WSGIScriptAlias / /path/to/your/project_root/project/wsgi.py process-group=my_django_api application-group=%{GLOBAL}
验证步骤
- 查看Apache错误日志确认问题是否解决:
sudo tail -f /var/log/httpd/error_log - 在虚拟环境中测试Django服务:
source /path/to/venv/bin/activate && python manage.py runserver 0.0.0.0:8000,确认服务能正常启动。
内容的提问来源于stack exchange,提问作者Johnson4996
相关产品推荐
相关产品推荐

