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

配置Django与Apache时出现500内部服务器错误求助

Django + Apache2 500内部服务器错误排查方案

以下是针对你提供的VirtualHost配置,逐步排查500错误的步骤:

1. 优先查看错误日志

Apache的错误日志会给出具体故障原因,执行命令查看实时日志:

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

如果日志信息不足,临时修改Django项目的settings.py:

  • 设置DEBUG = True
  • 添加服务器IP或域名到ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx', 'your-domain.com']
    重启Apache后,浏览器会显示详细的Django错误栈。

2. 检查文件权限

Apache运行用户(默认是www-data)需要拥有项目目录的读取权限:

sudo chown -R www-data:www-data /var/www/isvr
sudo chmod -R 755 /var/www/isvr

确保虚拟环境目录/var/www/isvr/myprojectenv也能被www-data访问。

3. 验证虚拟环境配置

确认WSGIDaemonProcess中的python-home路径是否正确指向你的虚拟环境:

WSGIDaemonProcess myproject python-path=/var/www/isvr python-home=/var/www/isvr/myprojectenv

检查/var/www/isvr/myprojectenv/bin/python是否存在,若路径错误则修正。

4. 检查WSGI脚本路径

确认WSGIScriptAlias指向的wsgi.py文件存在且路径正确:

WSGIScriptAlias / /var/www/isvr/isvr_certs/wsgi.py

该路径应对应Django项目根目录下的wsgi.py文件,若目录结构不符则调整路径。

5. 静态文件配置验证

  • 确认/var/www/isvr/static目录已通过python manage.py collectstatic生成,且包含所有静态资源
  • 确保静态目录权限正确,www-data可读取

6. 其他基础检查

  • 确认Apache已启用mod_wsgi模块:执行a2enmod wsgi,然后重启Apache
  • 本地测试Django项目:进入虚拟环境,执行python manage.py runserver,确认项目能正常启动无报错

你的VirtualHost配置文件

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    #ServerName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    Alias /static /var/www/isvr/static
    <Directory /var/www/isvr/static>
        Require all granted
    </Directory>

    <Directory /var/www/isvr/isvr_certs>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/var/www/isvr python-home=/var/www/isvr/myprojectenv
    WSGIProcessGroup myproject
    WSGIScriptAlias / /var/www/isvr/isvr_certs/wsgi.py

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

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:40:25