AWS Elasticbeanstalk上的Django:命令02_createadmin失败

2024-09-27 23:20:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试部署我的第一个django应用程序,并选择了带有弹性beanstalk的AWS,因为这似乎是最直接的方法。我一直在犹豫着(过时的)official docs,但我完全无法配置管理站点(步骤7)。我还使用了this blog post和附带的肉鸡板代码。 我使用的是python2.7、Django 1.6.1(本地)windows8和Powershell。在

当我尝试部署我的应用程序时,我收到错误:

[Instance: i-03f98f2d Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command 02_createadmin failed.

以下是(我认为)日志的相关部分是什么样子的,如果这还不够,我很乐意更新更多:

2014-02-10 19:07:17,373 [INFO] (25971 MainThread) [command.py-130] [root command execute] Command returned: (code: 1, stdout: Error occurred during build: Command 02_createadmin failed
, stderr: None)
2014-02-10 19:07:17,375 [DEBUG] (25971 MainThread) [commandWrapper.py-60] [root commandWrapper main] Command result: {'status': 'FAILURE', 'results': [{'status': 'FAILURE', 'config_sets': ['Infra-WriteRuntimeConfig', 'Infra-WriteApplication1', 'Infra-WriteApplication2', 'Infra-EmbeddedPreBuild', 'Hook-PreAppDeploy', 'Infra-EmbeddedPostBuild', 'Hook-EnactAppDeploy', 'Hook-PostAppDeploy'], 'returncode': 1, 'events': [], 'msg': 'Error occurred during build: Command 02_createadmin failed\n'}], 'api_version': '1.0'}

。。。在

^{pr2}$

我的文件:

legi_轨道_产品配置公司名称:

container_commands:
  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:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: legi_track_prod/wsgi.py
  - namespace: aws:elasticbeanstalk:container:python:staticfiles
    option_name: /static/
    value: static/
  - option_name: DJANGO_SETTINGS_MODULE
    value: legi_track_prod.settings
  - option_name: AWS_SECRET_KEY
    value: key
  - option_name: AWS_ACCESS_KEY_ID
    value: key

/脚本/创建管理.py(我试过好几个版本,似乎都不管用):

#!/usr/bin/env python

from django.contrib.auth.models import User
if User.objects.count() == 0:
    admin = User.objects.create_superuser('admin', 'test@example.com', 'passwd')
    admin.save()

也尝试过:

#!/usr/bin/env python

from django.contrib.auth.models import User
if User.objects.count() == 0:
    admin = User.objects.create(username='admin')
    admin.set_password('admin')
    admin.is_superuser = True
    admin.is_staff = True
    admin.save()

文件结构:

+---.ebextensions
+---.elasticbeanstalk
+---legi_track_prod
+---scripts
\---tracker
    +---api
    +---static
    |   \---tracker
    \---templates
        \---admin

我所做的:

  • 就像医生说的,我跑 chmod+x脚本/创建管理.py 我一直在这样做,每次我保存文件以确保安全,我不知道重新保存它是否会覆盖现有的权限。 我还尝试在.config文件中插入另一个命令来执行相同的操作。我不确定这是否是问题所在,但有那条线 2014-02-10 19:07:17341[调试]命令02_createadmin输出:/bin/sh:scripts/创建管理.py:权限被拒绝 在日志里。

  • 我看过很多不同版本的台词: "#!/usr/bin/env python”,并尝试将其更改为“#!/usr/bin/env/python“,”#!/usr/bin/env/python2.7“,”\!/usr/bin/env python管理.py“,等等。

  • 在本地开发应用程序时,运行“syncdb”并响应提示将自动设置管理员用户。有没有办法让01-u-syncdb命令帮我解决这个问题?

  • 在学习本教程时,我实际上跳过了shell中的一个步骤: alias eb=“python2.7../AWS-ElasticBeanstalk-CLI-2.4.0/eb/linux/python2.7/eb” 我无法找到与该命令等效的powershell,而且所有的“eb init”和“eb start”命令在没有设置别名的情况下都可以正常工作。我不认为这是问题所在,但我也不太确定这条线的作用。

如果可以的话,我会跳过这一步,但我想不出任何其他方法来访问应用程序的数据库。我头撞到这堵墙已经有两天了,我真的很感激你的帮助。我不可能是唯一一个有这个问题的人,但是互联网告诉我的是命令01\u syncdb和03_collectstatics的问题/解决方案。有什么建议可以让这个设置工作,或者(或者)不用编写创建管理员的脚本就可以了?在

更新

我正在运行它,没有任何错误。该命令的文件路径看起来像来自git,所以我不确定它是否与bash chmod执行相同的操作。谷歌搜索“powershell chmod”会发现一个相当复杂的解决方法,所以我会试试。但是当我使用GUI查看文件的权限时,系统、管理员和普通用户(本地)都拥有创建管理.py,所以我不是权限设置不正确,至少在本地。我将尝试使用powershell版本的chmod,然后我猜ssh会进入aws服务器(目前我真的不知道该怎么做)并用结果进行更新。在


Tags: 文件djangopy命令envbinadminusr

热门问题