部署 heroku - 推送失败

时间:2021-05-17 08:50:57

标签: python django heroku

我需要一些帮助来解决这个问题。我对 Heroku 没有太多经验,这是我第一次这样做,但我需要非常快速地部署一些应用程序。我试图用

禁用collectstatic <块引用>

heroku 配置:设置 DEBUG_COLLECTSTATIC=1 -a name_of_app

但它没有做任何改变。 任何人都可以帮助我吗?以下是日志:

Parameters:
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance
    Type: 'AWS::EC2::KeyPair::KeyName'
    ConstraintDescription: must be the name of an existing EC2 KeyPair.

  MySubnet:
    Description: My subnet from my VPC
    Type: 'AWS::EC2::Subnet::Id'
    Default: subnet-YYYYYYYY
  
  MySG:
    Description: My Security Group from my VPC
    Type: 'AWS::EC2::SecurityGroup::GroupName'
    Default: SG-YYYYYYYY
   
Resources:

  Ec2Instance:
    Type: AWS::EC2::Instance
    Properties:
      InstanceType: t2.micro
      ImageId: ami-09e67e426f25ce0d7

      SecurityGroups: !Ref MySG

      SubnetId: !Ref MySubnet
      
      KeyName: !Ref KeyName
  
      

1 个答案:

答案 0 :(得分:1)

在您的 Heroku 终端中运行 heroku config:set DISABLE_COLLECTSTATIC=1,以禁用静态收集。默认情况下,Heroku 将在每次部署时运行 collectstatic

注意:禁用 collectstatic 是一个临时解决方案。

对于永久解决方案,您必须在settings.py中配置静态root,例如

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

之后,您必须在本地运行 python manage.py collectstatic 以确保一切都在本地运行。

然后你可以禁用收集静态

heroku config:unset DISABLE_COLLECTSTATIC

并且您可以使用

将代码推送到heroku
git push heroku master