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

Ubuntu 18.04上Apache2部署Django权限问题求助

解决Apache + Django部署的权限拒绝问题

从你的错误日志和配置来看,核心问题是Apache的www-data用户没有权限访问/root目录。虽然你修改了/root/myproject的所有者,但/root目录的默认权限是drwx------(仅root用户可访问),www-data作为普通系统用户根本无法进入/root目录,自然也就无法读取虚拟环境和Django项目文件,导致Python初始化失败。

下面是一步步的解决方案:

1. 将项目移出/root目录

把项目和虚拟环境迁移到Apache的默认网站目录(比如/var/www/),这个目录的权限配置更适合Web服务:

sudo mv /root/myproject /var/www/

2. 修复项目目录权限

确保www-data用户对项目目录有完整的访问权限:

sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 755 /var/www/myproject
  • chown设置所有者为www-data用户和组
  • chmod 755保证目录可被读取和遍历,文件可被读取

3. 修改Apache虚拟主机配置

编辑/etc/apache2/sites-available/000-default.conf,把所有/root/myproject路径替换为/var/www/myproject,修改后的配置如下:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/myproject
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

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

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

    WSGIDaemonProcess myproject python-home=/var/www/myproject/myprojectenv python-path=/var/www/myproject
    WSGIProcessGroup myproject
    WSGIScriptAlias / /var/www/myproject/myproject/wsgi.py process-group=myproject
</VirtualHost>

4. 验证Django配置(可选)

检查/var/www/myproject/myproject/settings.py中的BASE_DIR,因为项目路径变更,不过它是动态生成的通常无需修改:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

确保ALLOWED_HOSTS包含你的服务器IP,DEBUG在生产环境建议关闭(不过现在调试阶段可以保持True)。

5. 重启Apache服务

应用所有配置变更:

sudo systemctl restart apache2

完成以上步骤后,再访问你的服务器IP,应该就能正常加载Django项目了。如果还有问题,可以再检查/var/log/apache2/error.log的最新日志信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:10:43