Amazon web services AWS Elastic Beanstalk,生成过程中出错:命令01\u syncdb

Amazon web services AWS Elastic Beanstalk,生成过程中出错:命令01\u syncdb,amazon-web-services,amazon-elastic-beanstalk,django-deployment,Amazon Web Services,Amazon Elastic Beanstalk,Django Deployment,我需要帮助将django web应用程序部署到AWS EB。我的本地开发环境是MacOS maverick。我正在使用django 1.6和virtualenv 1.11.4。如果您能够使用AWS说明进行部署,我真的希望您能够分享您的经验以及您为克服这些障碍所做的不同工作 [django aws] 我被困在第6步:更新应用程序 我尝试了几个配置文件,但都不起作用: dgeneric.config: container_commands: 01_syncdb: command:

我需要帮助将django web应用程序部署到AWS EB。我的本地开发环境是MacOS maverick。我正在使用django 1.6和virtualenv 1.11.4。如果您能够使用AWS说明进行部署,我真的希望您能够分享您的经验以及您为克服这些障碍所做的不同工作

[django aws]

我被困在第6步:更新应用程序

我尝试了几个配置文件,但都不起作用:

dgeneric.config:

container_commands:
  01_syncdb:    
    command: "django-admin.py syncdb --noinput"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: django_generic/wsgi.py
  - option_name: DJANGO_SETTINGS_MODULE
    value: django_generic.settings
  - option_name: AWS_SECRET_KEY
    value: SAMPLESECRETxMkk7DTME37PgiEnzA8toans
  - option_name: AWS_ACCESS_KEY_ID
    value: SAMPLEACCESSDAHRD7A
dgeneric.config版本2:

container_commands:
  collectstatic:
    command: "django-admin.py collectstatic --noinput"
  01syncdb:
    command: "django-admin.py syncdb --noinput"
    leader_only: true
  02migrate:
    command: "django-admin.py migrate"
    leader_only: true
  99customize:
    command: "scripts/customize.sh"

 You can specify any key-value pairs in the aws:elasticbeanstalk:application:environment namespace and it will be 
 passed in as environment variables on your EC2 instances
option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "django_generic.settings"
    "application_stage": "staging"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: django_generic/wsgi.py
    NumProcesses: 3
    NumThreads: 20
  "aws:elasticbeanstalk:container:python:staticfiles":
    "/static/": "static/"
dgeneric.config版本3:

container_commands:
 00_make_executable:
  command: "chmod +x scripts/createadmin.py"
  leader_only: true
 01_syncdb:
  command: "django-admin.py syncdb --noinput"
  leader_only: true
 02_createadmin:
  command: "scripts/createadmin.py"
  leader_only: true
 03_collectstatic:
  command: "django-admin.py collectstatic --noinput"
option_settings:
 "aws:elasticbeanstalk:container:python:environment":
  DJANGO_SETTINGS_MODULE: "django_generic.settings"
 "aws:elasticbeanstalk:container:python":
  WSGIPath: "django_generic/wsgi.py"
 "aws:elasticbeanstalk:container:python:staticfiles":
  "/static/": "static/"
我收到的错误有:

2014-03-19 16:30:09 UTC-0400    INFO    Environment update completed successfully.
2014-03-19 16:30:09 UTC-0400    INFO    New application version was deployed to running EC2 instances.
2014-03-19 16:30:08 UTC-0400    INFO    Command execution completed. Summary: [Successful: 0, Failed: 1].
2014-03-19 16:30:08 UTC-0400    ERROR   [Instance: i-3311f412 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command 02_createadmin failed .
2014-03-19 16:28:59 UTC-0400    INFO    Deploying new version to instance(s).
下面是另一个错误片段,它来自对配置文件仅做了微小更改的不同尝试:

2014-03-19 16:02:57 UTC-0400    INFO    Environment update completed successfully.
2014-03-19 16:02:57 UTC-0400    INFO    New application version was deployed to running EC2 instances.
2014-03-19 16:02:56 UTC-0400    INFO    Command execution completed. Summary: [Successful: 0, Failed: 1].
2014-03-19 16:02:56 UTC-0400    ERROR   [Instance: i-3311f412 Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command 01_syncdb failed .
2014-03-19 16:02:49 UTC-0400    INFO    Deploying new version to instance(s).
2014-03-19 16:01:52 UTC-0400    INFO    Environment update is starting.
本质上,这些错误来自配置文件配置错误。您能否分享您的成功故事,或者您是如何在部署中通过此步骤的?在我看来,遵循amazon文档是行不通的。顺便说一句,我也试过下面的例子,它似乎也不适合我。


我真的很感谢你的帮助

我在通过.config文件设置环境变量时遇到问题。因此,我所做的只是使用一个最小的选项\u设置:

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: django_generic/wsgi.py
然后在wsgi.py中有以下行

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_generic.settings")
以及在EB环境配置->软件配置->环境属性的设置中设置所有环境变量,如AWS访问密钥。这也是您可以设置允许的\u主机设置和您的DB\u名称等的地方


有时,问题也可能与使用django-admin.py vs manage.py有关,请参阅此问题:

我在通过.config文件设置环境变量时遇到问题。因此,我所做的只是使用一个最小的选项\u设置:

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: django_generic/wsgi.py
然后在wsgi.py中有以下行

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_generic.settings")
以及在EB环境配置->软件配置->环境属性的设置中设置所有环境变量,如AWS访问密钥。这也是您可以设置允许的\u主机设置和您的DB\u名称等的地方

有时,该问题也可能与使用django-admin.py与manage.py有关,请参见以下问题:

我使用manage.py而不是django-admin.py,因为,如中所述:

此外,manage.py会在每个Django中自动创建 项目manage.py是一个围绕django-admin.py的薄包装,它需要 在授权给django-admin.py之前,请注意两件事:

它将项目的包放在sys.path上。它设定了 DJANGO_SETTINGS_模块环境变量,使其指向您的 项目的settings.py文件。它调用django.setup进行初始化 Django的各种内部结构

因此,我的工作配置是:

container_commands:
  01_syncdb:
    command: "python manage.py syncdb --noinput"
    leader_only: true
...
ps:不要在配置文件中传递aws凭据!改用环境变量

我没有使用django-admin.py,而是使用manage.py,因为,如中所述:

此外,manage.py会在每个Django中自动创建 项目manage.py是一个围绕django-admin.py的薄包装,它需要 在授权给django-admin.py之前,请注意两件事:

它将项目的包放在sys.path上。它设定了 DJANGO_SETTINGS_模块环境变量,使其指向您的 项目的settings.py文件。它调用django.setup进行初始化 Django的各种内部结构

因此,我的工作配置是:

container_commands:
  01_syncdb:
    command: "python manage.py syncdb --noinput"
    leader_only: true
...
ps:不要在配置文件中传递aws凭据!改用环境变量

我感觉到你的痛苦

我发现使用部署命令行中的eb日志每次都会返回必要的堆栈跟踪以解决此问题。搜索返回的01_syncdb日志,您将找到找到解决方案所需的位。对我来说,这已经发生过很多次了,曾经的原因是让我的本地_settings.py进入git repo。然后我在eb日志中发现我的应用程序正试图连接到127.0.0.1的数据库。我从git中删除了那个文件,并重新部署了它!应用程序已修复

您可以在本地捕获日志:eb logs>eb_logs.txt

不幸的是,来自eb status命令的响应非常简短。阅读完整的日志是真正了解那里发生了什么的唯一途径。好的一面™ 使用eb日志,您不需要连接到实例。

我感觉到了您的痛苦

我发现使用部署命令行中的eb日志每次都会返回必要的堆栈跟踪以解决此问题。搜索返回的01_syncdb日志,您将找到找到解决方案所需的位。对我来说,这已经发生过很多次了,曾经的原因是让我的本地_settings.py进入git repo。然后我在eb日志中发现我的应用程序正试图连接到127.0.0.1的数据库。我从git中删除了那个文件,并重新部署了它!应用程序已修复

您可以这样做以在本地捕获日志 :eb logs>eb_logs.txt

不幸的是,来自eb status命令的响应非常简短。阅读完整的日志是真正了解那里发生了什么的唯一途径。好的一面™ 使用eb日志,您不需要连接到实例。

如果您无法通过与教程完全相同的方式检查配置文件来解决01_syncdb failed问题,则应检查可能导致此错误的其他文件

例如,在我的例子中,应用程序第一次构建成功,然后使用01_sycndb失败。在我仔细检查日志文件后,我发现这个错误是由settings.py中的一个输入错误引起的

查看日志,你可能会发现一些糖果

如果无法通过与教程完全相同的方式检查配置文件来解决01_syncdb failed问题,则应检查可能导致此错误的其他文件

例如,在我的例子中,应用程序第一次构建成功,然后使用01_sycndb失败。在我仔细检查日志文件后,我发现这个错误是由settings.py中的一个输入错误引起的

查看日志,你可能会发现一些糖果


当您部署新应用而忘记创建RDS实例时也会发生这种情况。

当您部署新应用而忘记创建RDS实例时也会发生这种情况。

谢谢,eb日志非常有用。这应该通过benastalk应用程序中的官方django python进行更好的记录。取而代之的是,它只是说,请参阅AWS的疑难解答。请参阅疑难解答的意思是:用谷歌搜索它,然后阅读StackExchange;有时,尽管错误非常严重,eb日志不会返回任何内容,控制台的下载日志也不会返回任何内容。服务器也不返回任何回复。当我切换到一个支持geodjango的旧实例时,我遇到了这个问题。当这种情况发生时,您必须手动ssh到EC2实例以检查日志。是的,我以前在部署中肯定遇到过这种问题。由于这个原因,在部署任何EC2实例时都可以使用一个键。我将很快发布一个指南,介绍所有问题。但不确定为什么不能使用新实例通过yum安装gdal。对于geodjango appsThanks来说,eb日志非常有用。这应该通过benastalk应用程序中的官方django python进行更好的记录。取而代之的是,它只是说,请参阅AWS的疑难解答。请参阅疑难解答的意思是:用谷歌搜索它,然后阅读StackExchange;有时,尽管错误非常严重,eb日志不会返回任何内容,控制台的下载日志也不会返回任何内容。服务器也不返回任何回复。当我切换到一个支持geodjango的旧实例时,我遇到了这个问题。当这种情况发生时,您必须手动ssh到EC2实例以检查日志。是的,我以前在部署中肯定遇到过这种问题。由于这个原因,在部署任何EC2实例时都可以使用一个键。我将很快发布一个指南,介绍所有问题。但不确定为什么不能使用新实例通过yum安装gdal。geodjango应用的巨大痛苦