运行collectstatic命令时权限被拒绝错误

时间:2019-10-05 06:24:37

标签: python django deployment digital-ocean

我在djangocean上部署了django项目。虽然该项目可以在我的开发机上正常运行,但在服务器上运行,但它不会显示静态文件。

not showing static files

我对静态文件的设置是

STATIC_URL = '/static/'
STATIC_ROOT='/home/gagan_sapora/myprojectdir/saporawebapp/static/'

为进行故障排除,我运行collectstatic命令,但显示权限被拒绝错误。

编辑1:- 相应的错误是;- Check error here 我尝试更改其所有权,但可以打印

No Such file or directory

我的项目的文件结构是

Project
|-Project
|-app
|-static
    |-fonts
    |-images
    |-js
    |-styles
|-manage.py

编辑2:-

我的settings.py文件是

STATIC_URL = '/static/'
STATIC_ROOT='../static/'

MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')

2 个答案:

答案 0 :(得分:0)

这里至少有2个独立问题。

DEBUG=True时,Django会自己提供静态文件-它不会通过collectstatic / STATIC_ROOT路径[0]进行传递。因此,它找不到smally.jpg的事实表明该文件不在服务器上。您可以再次检查文件在DigitalOcean服务器上是否确实存在吗?

运行collectstatic时出现此权限错误是另一个问题,很可能与STATIC_ROOT中指定的目录的所有者有关。用ls -l检查哪个用户拥有该目录,如果不是运行Django项目的用户(通常是www-data),则需要执行sudo chown -R www-data:www-data /path/to/static/root

[0] https://docs.djangoproject.com/en/2.2/howto/static-files/#serving-static-files-during-development

答案 1 :(得分:0)

浏览可能的错误和与@rsmoji的简短讨论之后,这是一个权限问题,因为我以sudo用户的身份执行命令,因此我需要使用来更改文件夹的权限,

sudo chmod 777 static

它将解决问题。希望将来对某人有帮助