2014-02-10 88 views
5

我試圖部署我的第一個django應用程序,並選擇AWS與彈性beanstalk,因爲它似乎是最直接的方式。我一直在努力通過(過時的)official docs,但我完全停留在嘗試配置管理站點(步驟7)。我也一直在使用this blog post和伴隨的broilerplate代碼。 我使用Python 2.7,Django 1.6.1,(本地)Windows 8與Powershell。AWS上的Django Elasticbeanstalk:命令02_createadmin失敗

當我嘗試部署我的應用程序,我得到的錯誤:

[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'} 

...

2014-02-10 19:07:17,234 [DEBUG] Running command 02_createadmin 
2014-02-10 19:07:17,235 [DEBUG] Generating defaults for command 02_createadmin 
<<< 

2014-02-10 19:07:17,319 [DEBUG] Running test for command 02_createadmin 
2014-02-10 19:07:17,330 [DEBUG] Test command output: 
2014-02-10 19:07:17,331 [DEBUG] Test for command 02_createadmin passed 
2014-02-10 19:07:17,340 [ERROR] Command 02_createadmin (scripts/createadmin.py) failed 
2014-02-10 19:07:17,341 [DEBUG] Command 02_createadmin output: /bin/sh: scripts/createadmin.py: Permission denied 

2014-02-10 19:07:17,341 [ERROR] Error encountered during build of postbuild_0_legi_track_prod: Command 02_createadmin failed 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 511, in run_config 
    CloudFormationCarpenter(config, self._auth_config).build(worklog) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 247, in build 
    changes['commands'] = CommandTool().apply(self._config.commands) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py", line 113, in apply 
    raise ToolError(u"Command %s failed" % name) 
ToolError: Command 02_createadmin failed 
2014-02-10 19:07:17,342 [ERROR] Unhandled exception during build: Command 02_createadmin failed 
Traceback (most recent call last): 
    File "/opt/aws/bin/cfn-init", line 122, in <module> 
    worklog.build(detail.metadata, configSets) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 117, in build 
    Contractor(metadata).build(configSets, self) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 502, in build 
    self.run_config(config, worklog) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 511, in run_config 
    CloudFormationCarpenter(config, self._auth_config).build(worklog) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py", line 247, in build 
    changes['commands'] = CommandTool().apply(self._config.commands) 
    File "/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py", line 113, in apply 
    raise ToolError(u"Command %s failed" % name) 
ToolError: Command 02_createadmin failed 

我的文件:

legi_track_prod.config:

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 

/scripts/createadmin.py(我試過這幾個版本,他們都不上班):

#!/usr/bin/env python 

from django.contrib.auth.models import User 
if User.objects.count() == 0: 
    admin = User.objects.create_superuser('admin', '[email protected]', '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腳本/ createadmin.py 我已經做了我每次保存文件是安全的,我不知道是否重新保存它會覆蓋現有的權限。 我也嘗試在.config文件中插入另一個命令來做同樣的事情。我不確定這是否是問題,但是存在該行 2014-02-10 19:07:17,341 [DEBUG]命令02_createadmin輸出:/ bin/sh:scripts/createadmin.py:權限被拒絕 日誌。我試過把它改爲「#!/ usr/bin/env/python」,我試過把它改成「#!/ usr/bin/env python」 「#!/ usr/bin/env/python2.7」,「#!/ usr/bin/env python manage.py」等等。響應提示會自動設置管理員用戶。有沒有辦法讓命令01_syncdb爲我照顧?

  • 在學習本教程時,我確實跳過了shell中的一個步驟: alias eb =「python2.7 ../AWS-ElasticBeanstalk-CLI-2.4.0/eb/linux/python2.7/ eb「 我無法弄清楚命令的powershell等價物,並且所有的」eb init「和」eb start「命令都可以正常工作,無需設置別名。我不認爲這是問題,但我也不太確定這條線是幹什麼的。

我只是跳過這一步,如果我可以,但我想不出任何其他方式來訪問應用程序的數據庫。我已經在這個特定的牆上撞了兩天了,並且非常感謝任何幫助。我不能成爲唯一一個遇到這個問題的人,但是所有的互聯網對我來說都是01_syncdb和03_collectstatics命令的問題/解決方案。有關如何使此設置正常工作的任何建議,或者(或者)不通過編寫腳本創建管理員的建議?

更新

我確切地運行它,並沒有得到任何錯誤。該命令的文件路徑看起來像來自git,所以我不知道它是否與bash chmod做同樣的事情。谷歌搜索「powershell chmod」變成了一個相當複雜的解決方法,所以我會嘗試。但是,當我使用GUI查看文件的權限時,SYSTEM,admin和普通用戶(本地)都具有createadmin.py的所有權限,所以我沒有權限未正確設置,至少在本地。我會嘗試chmod的powershell版本,然後我猜ssh進入aws服務器(我現在真的不知道該怎麼做)並更新結果。

+0

您正在運行'chmod + x scripts/createadmin.py',還是與PowerShell等效?如果你正在運行它,它會給你一個錯誤?我傾向於認爲它確實歸結爲該文件的權限,但由於我不知道PowerShell,所以我不知道它是否是導致您的問題的原因。 – senordev

+0

謝謝,我的回覆太長了以至於無法評論,因此我已將它添加到上面。 –

回答

4
container_commands: 
    00_make_executable: 
     command: "chmod +x scripts/createadmin.py" 
    01_... 
+0

我在發佈之前嘗試過類似的東西,但沒有奏效。我不確定相關的區別是什麼(在第一個命令中沒有「僅限領隊」的標籤似乎很可能),但是這有效,謝謝! –

+0

@ J.Necker:我很高興它爲你工作! – kukido