【问题标题】:Heroku Deployment - PermissionError: [Errno 13] Permission denied: '/etc/passwd-'Heroku 部署 - PermissionError: [Errno 13] Permission denied: '/etc/passwd-'
【发布时间】:2018-08-18 19:57:04
【问题描述】:

谁能帮我解决这个错误?我不知道代码有什么问题。是数据库凭据错误吗?是应用程序代码错误吗?是 Linux/Unix 相关的错误吗?

这是我第一次在 Heroku 上部署我的应用程序,但我收到以下错误消息:

PermissionError: [Errno 13] Permission denied: '/etc/passwd-'

   python ph_dorms/manage.py collectstatic --noinput
   Traceback (most recent call last):
     File "ph_dorms/manage.py", line 15, in <module>
       execute_from_command_line(sys.argv)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
       utility.execute()
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 365, in execute
       self.fetch_command(subcommand).run_from_argv(self.argv)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 288, in run_from_argv
       self.execute(*args, **cmd_options)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 335, in execute
       output = self.handle(*args, **options)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 189, in handle
       collected = self.collect()
     File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect
       handler(path, prefixed_path, storage)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 353, in copy_file
       with source_storage.open(path) as source_file:
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/files/storage.py", line 33, in open
       return self._open(name, mode)
     File "/app/.heroku/python/lib/python3.6/site-packages/django/core/files/storage.py", line 218, in _open
       return File(open(self.path(name), mode))
   PermissionError: [Errno 13] Permission denied: '/etc/passwd-'
   !     Error while running '$ python ph_dorms/manage.py collectstatic --noinput'.
   See traceback above for details.
   You may need to update application code to resolve this error.
   Or, you can disable collectstatic for this application:
      $ heroku config:set DISABLE_COLLECTSTATIC=1
   https://devcenter.heroku.com/articles/django-assets
  !     Push rejected, failed to compile Python app.
  !     Push failed

【问题讨论】:

  • @Norrius:我正在尝试从 github 存储库部署我的应用程序,但出现此错误。我需要在这里查看配置吗?这是我第一次使用 heroku,所以不知道去哪里解决这个错误。
  • 对不起,请随意忽略我之前的评论。 /etc/passwd- 是存储系统用户凭据的文件 /etc/passwd 的备份。

标签: python django heroku heroku-toolbelt


【解决方案1】:

您应该在 heroku 上禁用 collectstatic 并使用 whitenoise 在生产中提供静态文件。

在你的 cmd 中运行(安装 heroku cli)

heroku config:set DISABLE_COLLECTSTATIC = 1

或者将值为 1 的 DISABLE_COLLECTSTATIC 添加到 heroku 中的环境变量中。

然后,使用whitenoise 在生产环境中提供静态文件。

【讨论】:

    【解决方案2】:

    部署 django webapp 的复杂部分大部分时间都与 collectstatics 相关,前提是您没有正确设置所有内容以从同一服务器提供静态文件。

    首先禁用在终端或 cmd 中运行以下命令的 collectstatics:

    heroku config:set DISABLE_COLLECTSTATIC=1
    

    然后再次部署。

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 2019-07-31
      • 2016-08-17
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      相关资源
      最近更新 更多