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
相关产品推荐
相关产品推荐

