django - 502 Bad Gateway,我弄乱了用于 django 部署的 digitalocean ubuntu 上的用户和组权限
问题描述
- 我在 digitalocen 上成功创建了一个 droplet,一个 ubuntu 18.04 服务器。
- 按照安装 digitalocean 的指南运行 gunicorn、nginx、django 等,并使用我的 ip 地址(即防火墙、gunicorn 和 nginx)在浏览器上成功运行网站,并且一切都配置正确。
- 在将图像上传到媒体文件夹的测试期间,我收到错误“权限被拒绝”(POST 错误)。
- 在谷歌上找到以下代码并认为它解决了权限相关问题:https ://www.semicolonworld.com/question/55551/django-errno-13-permission-denied-39-var-www-media-animals-用户上传-39
sudo groupadd varwwwusers
sudo adduser www-data varwwwusers
sudo chgrp -R varwwwusers /var/www/
sudo chmod -R 760 /var/www/
但是上面的代码搞砸了一切并遇到了“502 Bad Gateway”。
我对 Linux 部署不是很熟悉。有人可以帮我调查和解决这个问题。我想我搞砸了用户,组权限。
我怎样才能解决这个问题,或者我怎样才能恢复我所做的事情,或者是否有任何我可以查看和调查的活动日志。
我检查了error.log并能够看到'connect() to unix:/run/gunicorn.sock failed (111: Connection refused) while connection to upstream'
我在这里先向您的帮助表示感谢。
解决方案
我想问题在于,通过运行,sudo chmod -R 760 /var/www/
您已经禁止该文件夹的非所有者从该目录读取、写入和执行文件。然后,由于 uwsgi 进程不属于 www-data 组(通常),uwsgi 连接被拒绝。
解决此问题的最简单方法是运行sudo chmod -R 766 /var/www/
- 这将授予任何人写入和读取权限(chmod -R 764
也应该工作并且更安全 - 它只允许为非所有者读取文件)。或者,您可以找出运行 uwsgi 的用户的名称,并授予他从目录中读取文件的权限。请参阅chmod
手册(或谷歌它)以供参考。
推荐阅读
- c++ - 以固定频率切换 Raspberry Pi 的 GPIO
- javascript - 如何使用 axios 从 servlet 中获取数据,然后对其进行交叉过滤并通过 highcharts 显示
- javascript - 表中列的总和值
- python - 蟒蛇预测
- python - 在 pythonanywhere 上部署网站会出现与 Numpy 相关的错误
- postgresql - 节点 pg.connect 从不调用它的回调,如何调试?
- python - PIL 将文本放在像素的中心
- asp.net-core - 在我的电脑上托管 Asp.Net Web Api 服务以远程访问
- python - 如何分组和聚合具有多列的熊猫数据框
- c# - 通过 IDbCommandInterceptor 检测或传递 Entity Framework 6 和 Entity Framework Core 中的调用方法