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

Debian系统DigitalOcean虚拟机用Apache部署Django应用的问题与步骤

问题诊断与解决方案

核心原因:缺少WSGI配置

你看到文件列表,是因为Apache仅在做静态文件目录的遍历,没有把HTTP请求转发给Django的WSGI应用——这就是问题的关键,必须配置mod_wsgi来连接Apache和Django。

具体修复步骤

1. 安装mod_wsgi

Debian系统下先安装依赖模块:

sudo apt-get update
sudo apt-get install libapache2-mod-wsgi-py3

(注:如果你的Django用Python2,替换成libapache2-mod-wsgi,现在主流都是Python3)

2. 修改attendance.conf配置

更新你的VirtualHost配置,添加WSGI相关指令,示例如下:

<VirtualHost *:80>
    ServerAdmin admin@143.244.134.97
    ServerName 143.244.134.97
    ServerAlias 143.244.134.97

    # 设置WSGI应用运行环境
    WSGIDaemonProcess attendance python-path=/var/www/attendance:/home/your-user/.local/lib/python3.x/site-packages
    WSGIProcessGroup attendance
    # 将根路径请求转发到Django的wsgi.py
    WSGIScriptAlias / /var/www/attendance/attendance/wsgi.py

    # 允许Apache访问wsgi.py文件
    <Directory /var/www/attendance/attendance>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # 配置静态文件访问(需先执行collectstatic收集)
    Alias /static/ /var/www/attendance/static/
    <Directory /var/www/attendance/static>
        Require all granted
    </Directory>

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

说明:

  • WSGIDaemonProcess里的python-path要包含你的Django项目目录,以及Python包安装路径(如果用虚拟环境,替换成虚拟环境的site-packages路径)
  • 静态文件部分:先在Django项目里执行python manage.py collectstatic,把所有静态文件收集到指定目录(比如示例中的/var/www/attendance/static)

3. 调整文件权限

确保Apache进程(用户为www-data)能访问项目目录:

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

4. 重启Apache服务

sudo systemctl restart apache2

其他排查点

  • 检查Django项目的settings.py:必须设置DEBUG = False(上线要求),ALLOWED_HOSTS里要加你的公网IP143.244.134.97
  • 查看Apache错误日志定位问题:tail -f /var/log/apache2/error.log,比如依赖缺失、路径错误都会在这里显示
Apache部署Django上线的必要步骤
  1. 服务器环境准备

    • 更新系统包:sudo apt update && sudo apt upgrade
    • 安装Python、pip、Apache、mod_wsgi
    • 可选:创建Python虚拟环境,隔离项目依赖
  2. 项目部署

    • 将Django项目上传到服务器(比如/var/www/目录)
    • 安装项目依赖:pip install -r requirements.txt(用虚拟环境的话先激活)
  3. Django项目配置

    • 修改settings.py:关闭DEBUG模式,配置ALLOWED_HOSTS(域名/公网IP)
    • 配置数据库:如果用PostgreSQL/MySQL等,安装对应驱动并设置连接参数
    • 收集静态文件:python manage.py collectstatic
  4. Apache配置

    • 创建站点配置文件(如attendance.conf),配置VirtualHost,包含WSGI转发、静态文件别名
    • 启用站点:sudo a2ensite attendance.conf,禁用默认站点:sudo a2dissite 000-default.conf
    • 启用mod_wsgi:sudo a2enmod wsgi(安装后一般自动启用,可手动确认)
  5. 权限与服务启动

    • 设置项目目录权限,确保www-data用户可访问
    • 重启Apache,验证服务状态:sudo systemctl status apache2
  6. 上线验证

    • 用公网IP/域名访问,检查页面加载情况
    • 查看日志排查异常,确保功能正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:15:47