You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04下Apache部署Django项目遇500内部服务器错误排查

解决Ubuntu 18.04下Apache部署Django出现ModuleNotFoundError: No module named 'django'的问题

问题背景

在Ubuntu 18.04系统部署Django项目时,本地通过python manage.py runserver 0.0.0.0:8000测试完全正常,但配置Apache后出现500内部服务器错误,日志提示ModuleNotFoundError: No module named 'django'。尝试修改wsgi.py和Apache虚拟主机配置后,错误依旧。

核心错误点

你在更新Apache配置时把所有关键的WSGI配置代码全部注释掉了,导致Apache无法识别Django项目的虚拟环境,只能使用系统默认的Python环境(该环境未安装Django),这是引发模块找不到错误的根本原因。

另外,手动在wsgi.py中添加虚拟环境site-packages路径的操作冗余,且不能替代Apache的WSGI守护进程配置。

具体修复步骤

1. 恢复并修正Apache虚拟主机配置

将修改后的Apache配置中被注释的关键部分取消注释,确保WSGIDaemonProcess的路径完整正确,以下是修正后的完整配置:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /static /home/user/project/static
        <Directory /home/user/project/static>
                Require all granted
        </Directory>

        Alias /media /home/user/project/media
        <Directory /home/user/project/media>
                Require all granted
        </Directory>

        <Directory /home/user/project/project>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIScriptAlias / /home/user/project/project/wsgi.py
        WSGIDaemonProcess project python-path=/home/user/project python-home=/home/user/project/venv
        WSGIProcessGroup project

        ServerName server_domain_name_or_IP
        <Directory /var/www/html/>
                AllowOverride All
        </Directory>
</VirtualHost>

注意:确保python-home=/home/user/project/venv是你的虚拟环境实际路径,路径不能出现截断(比如你之前配置中的/home/user$是错误的)。

2. 简化wsgi.py配置

不需要手动添加虚拟环境site-packages路径,因为WSGIDaemonProcess的python-home参数已经让Apache使用虚拟环境的Python解释器,自动加载虚拟环境内的所有包。简化后的wsgi.py如下:

import os
from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

application = get_wsgi_application()

3. 验证虚拟环境目录权限

确保www-data用户能访问虚拟环境目录,执行以下命令:

sudo chmod -R 755 /home/user/project/venv
sudo chown -R user:www-data /home/user/project/venv

4. 重启Apache服务

应用配置更改并重启Apache:

sudo systemctl restart apache2

验证修复

访问你的服务器域名或IP地址,查看是否能正常加载Django项目;如果仍有错误,查看Apache错误日志进一步排查:

tail -f /var/log/apache2/error.log

内容的提问来源于stack exchange,提问作者A_K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:42:31