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

Ubuntu服务器Apache部署Django时的权限与Python模块问题

解决Ubuntu上Apache部署Django的权限与Python模块问题

从错误日志看,核心问题是Apache运行用户(www-data)没有权限访问虚拟环境目录,导致无法初始化Python解释器,进而找不到encodings模块,最终引发403错误。以下是具体解决步骤:

1. 修复用户主目录的访问权限

你的/home/robch目录权限为drwxr-x---,仅允许robch用户和组访问,www-data用户无法进入该目录。执行以下命令添加其他用户的执行权限:

sudo chmod o+x /home/robch

更安全的方式是将www-data加入robch用户组,再调整组权限:

sudo usermod -aG robch www-data
sudo chmod g+x /home/robch

2. 确保虚拟环境及项目目录的权限正确

让www-data能读取并执行虚拟环境内的文件:

# 给虚拟环境目录递归设置读取和执行权限
sudo chmod -R g+rX /home/robch/TestSite/django_env
# 确保WSGI脚本和项目目录有正确权限
sudo chmod o+x /home/robch/TestSite/Soundrise
sudo chmod 644 /home/robch/TestSite/Soundrise/wsgi.py

3. 验证虚拟环境的Python完整性

encodings是Python核心模块,正常虚拟环境都会存在,执行命令确认:

ls -la /home/robch/TestSite/django_env/lib/python*/encodings

如果目录不存在,说明虚拟环境损坏,需重新创建:

# 删除现有虚拟环境
rm -rf /home/robch/TestSite/django_env
# 重新创建并安装依赖
python3 -m venv /home/robch/TestSite/django_env
source /home/robch/TestSite/django_env/bin/activate
pip install django mod-wsgi
pip install -r /home/robch/TestSite/requirements.txt

4. 调整Apache配置(可选但建议)

确保WSGIDaemonProcess路径正确,同时将DocumentRoot改为项目根目录避免冲突:

<VirtualHost *:80>
    ServerName 85.215.209.167
    ServerAdmin webmaster@localhost
    DocumentRoot /home/robch/TestSite

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

    Alias /static /home/robch/TestSite/static
    <Directory /home/robch/TestSite/static>
        Require all granted
    </Directory>

    Alias /media /home/robch/TestSite/files/media
    <Directory /home/robch/TestSite/files/media>
        Require all granted
    </Directory>

    <Directory /home/robch/TestSite/Soundrise>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIScriptAlias / /home/robch/TestSite/Soundrise/wsgi.py
    WSGIDaemonProcess django_app python-home=/home/robch/TestSite/django_env python-path=/home/robch/TestSite
    WSGIProcessGroup django_app
</VirtualHost>

5. 重启Apache并验证

执行命令重启服务:

sudo systemctl restart apache2

访问服务器IP查看是否正常加载,若仍有问题,查看错误日志排查:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:24:52