部署Django到AWS时出现“命令钩子失败”

1 投票
1 回答
934 浏览
提问于 2025-04-18 12:01

我正在尝试在亚马逊的Elastic Beanstalk上部署一个Django应用。按照亚马逊的指南,我把数据库设置改成了RDS,并且写了一个配置文件。

这段代码在Django的settings.py文件里:

'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': os.environ['RDS_DB_NAME'],
    'USER': os.environ['RDS_USERNAME'],
    'PASSWORD': os.environ['RDS_PASSWORD'],
    'HOST': os.environ['RDS_HOSTNAME'],
    'PORT': os.environ['RDS_PORT'],
}

这是我为Elastic Beanstalk写的配置文件:

container_commands:
  01_syncdb:    
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02_createadmin:
    command: "scripts/createadmin.py"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: myapp/wsgi.py
  - namespace: aws:elasticbeanstalk:container:python:staticfiles
    option_name: /static/
    value: static/
  - option_name: DJANGO_SETTINGS_MODULE
    value: myapp.settings
  - option_name: AWS_SECRET_KEY
    value: *my secret key*
  - option_name: AWS_ACCESS_KEY_ID
    value: *my access key*

我使用eb命令来部署。通过“eb init”和“eb start”,我可以成功创建应用和它的环境,然后用git aws.push把我最新的提交推送到服务器上。

但是,更新后我遇到了这个错误:

2014-07-03 13:41:27 UTC-0300    ERROR   [Instance: i-4b1aef3e Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed .
2014-07-03 13:41:25 UTC-0300    ERROR   Script /opt/elasticbeanstalk/hooks/appdeploy/pre/01new.py failed with returncode 1
2014-07-03 13:41:25 UTC-0300    ERROR   Application version failed to deploy.

我哪里做错了呢?

更新:

这是一次部署的日志

1 个回答

0

你应该检查一下你是不是在你的虚拟环境或者安装了Python的地方尝试使用:git aws.push。另外,你也可以试着重启一下支持你ElasticBeanstalk应用的EC2机器。

撰写回答