Gabriël
Gabriël

Reputation: 1315

Can't deploy Django application on Elastic Beanstalk

After a lot of hurdles I'm finally uploading my code to AWS Beanstalk, I hope someone can help me with the next hurdle for which I don't see to get a solution.

After I upload (using 'git aws.push') it will always fail. Then I looked at the logs and it seems (as a noob) that the issue is this:

'Target WSGI script not found or unable to stat: /opt/python/current/app/topdish'

Which I think is indeed in correct, I would expect it should be at: '/opt/python/ondeck/app/topdish/wsgi.py'

I don't know how to configure this as I thought I already did it correct in: 'topdish.config' in '.ebextensions'.

container_commands:
  01_migrate:    
    command: "python manage.py syncdb --noinput"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: topdish/wsgi.py
  - option_name: DJANGO_SETTINGS_MODULE
    value: topdish.settings

Another issue I see in the logs is:

'[2014-11-26T23:11:00.070Z] INFO  [4168]  - [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] : Activity execution failed, because: command failed with error code 1: Error occurred during build: Command 01_migrate failed (Executor::NonZeroExitStatus)'

Which might be related, or not.

Relevant logs:


/var/log/eb-activity.log

inflating: /opt/python/ondeck/app/surveys/static/surveys/css/normalize.css  
inflating: /opt/python/ondeck/app/surveys/static/surveys/css/normalize.min.css  
 creating: /opt/python/ondeck/app/surveys/static/surveys/img/
inflating: /opt/python/ondeck/app/surveys/static/surveys/img/star-empty.png  
inflating: /opt/python/ondeck/app/surveys/static/surveys/img/star-filled.png  
 creating: /opt/python/ondeck/app/surveys/static/surveys/js/
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/data-access-layer.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/gklib.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/main.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/plugins.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/polyfils.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/tools.js  
 creating: /opt/python/ondeck/app/surveys/static/surveys/js/vendor/
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/vendor/jquery-1.11.0.min.js  
inflating: /opt/python/ondeck/app/surveys/static/surveys/js/vendor/modernizr-2.6.2.min.js  
 creating: /opt/python/ondeck/app/surveys/templates/
 creating: /opt/python/ondeck/app/surveys/templates/surveys/
inflating: /opt/python/ondeck/app/surveys/templates/surveys/index.html  
inflating: /opt/python/ondeck/app/surveys/templates/surveys/menu_detail.html  
inflating: /opt/python/ondeck/app/surveys/templates/surveys/venue_detail.html  
inflating: /opt/python/ondeck/app/surveys/tests.py  
inflating: /opt/python/ondeck/app/surveys/urls.py  
inflating: /opt/python/ondeck/app/surveys/views.py  
 creating: /opt/python/ondeck/app/templates/
 creating: /opt/python/ondeck/app/templates/admin/
inflating: /opt/python/ondeck/app/templates/admin/base_site.html  
 creating: /opt/python/ondeck/app/topdish/
extracting: /opt/python/ondeck/app/topdish/__init__.py  
inflating: /opt/python/ondeck/app/topdish/app.yaml  
inflating: /opt/python/ondeck/app/topdish/settings.py  
inflating: /opt/python/ondeck/app/topdish/urls.py  
inflating: /opt/python/ondeck/app/topdish/wsgi.py  
[2014-11-26T22:56:31.220Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/03deploy.py] : Starting activity...
[2014-11-26T22:56:35.097Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/03deploy.py] : Completed activity. Result:
  New python executable in /opt/python/run/venv/bin/python26
  Not overwriting existing python script /opt/python/run/venv/bin/python (you must use /opt/python/run/venv/bin/python26)
  Installing setuptools, pip...done.
  --use-mirrors has been deprecated and will be removed in the future. Explicit uses of --index-url and/or --extra-index-url is suggested.
  Requirement already satisfied (use --upgrade to upgrade): Django==1.7.1 in /opt/python/run/venv/lib/python2.6/site-packages (from -r /opt/python/ondeck/app/requirements.txt (line 1))
  Requirement already satisfied (use --upgrade to upgrade): django-uuidfield==0.5.0 in /opt/python/run/venv/lib/python2.6/site-packages (from -r /opt/python/ondeck/app/requirements.txt (line 2))
  Requirement already satisfied (use --upgrade to upgrade): djangorestframework==2.4.4 in /opt/python/run/venv/lib/python2.6/site-packages (from -r /opt/python/ondeck/app/requirements.txt (line 3))
  Requirement already satisfied (use --upgrade to upgrade): mysql-python==1.2.5 in /opt/python/run/venv/lib/python2.6/site-packages (from -r /opt/python/ondeck/app/requirements.txt (line 4))
  Cleaning up...
[2014-11-26T22:56:35.097Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04configen.py] : Starting activity...
[2014-11-26T22:56:37.788Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04configen.py] : Completed activity.
[2014-11-26T22:56:37.788Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook] : Completed activity. Result:
  Successfully execute directory: /opt/elasticbeanstalk/hooks/appdeploy/pre.
[2014-11-26T22:56:37.789Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] : Starting activity...
[2014-11-26T22:56:40.111Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] : Activity execution failed, because: command failed with error code 1: Error occurred during build: Command 01_migrate failed (Executor::NonZeroExitStatus)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor/exec.rb:81:in `sh'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/executor-1.0/lib/executor/exec.rb:24:in `sh'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/cfn-wrapper.rb:51:in `call_cfn_script'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/cfn-wrapper.rb:28:in `run_config_sets'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/infrahooks/infra-embeddedpostbuild.rb:20:in `execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/executable.rb:56:in `instance_eval'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/executable.rb:56:in `execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:213:in `block (3 levels) in exec_stage'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `call'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:126:in `timeout_exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:110:in `block in create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `instance_eval'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:209:in `block (2 levels) in exec_stage'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:207:in `each'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:207:in `each_with_index'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:207:in `block in exec_stage'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `call'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:126:in `timeout_exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:110:in `block in create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `instance_eval'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:204:in `exec_stage'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:158:in `execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command.rb:68:in `run'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command-processor.rb:64:in `block (2 levels) in execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `call'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:169:in `exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:126:in `timeout_exec'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:110:in `block in create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `instance_eval'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/activity.rb:109:in `create'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command-processor.rb:62:in `block in execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command-processor.rb:106:in `execute_command'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/lib/elasticbeanstalk/command-processor.rb:60:in `execute!'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.1.0/gems/beanstalk-core-1.0/bin/command-processor:46:in `<top (required)>'
from /opt/elasticbeanstalk/lib/ruby/bin/command-processor:23:in `load'
from /opt/elasticbeanstalk/lib/ruby/bin/command-processor:23:in `<main>'

[2014-11-26T22:56:40.112Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0/EbExtensionPostBuild] : Activity failed.
[2014-11-26T22:56:40.112Z] INFO  [3842]  - [CMD-AppDeploy/AppDeployStage0] : Activity failed.
[2014-11-26T22:56:40.112Z] INFO  [3842]  - [CMD-AppDeploy] : Completed activity. Result:
  Command CMD-AppDeploy failed. 

/var/log/httpd/error_log

(...)
[Wed Nov 26 22:21:56.819829 2014] [:error] [pid 2320] [client 127.0.0.1:59071] Target WSGI script not found or unable to stat: /opt/python/current/app/topdish
[Wed Nov 26 22:38:28.545144 2014] [:error] [pid 2321] [client 62.45.238.167:54585] Target WSGI script not found or unable to stat: /opt/python/current/app/topdish
[Wed Nov 26 22:38:32.716143 2014] [:error] [pid 2321] [client 62.45.238.167:54585] Target WSGI script not found or unable to stat: /opt/python/current/app/topdish
[Wed Nov 26 22:38:35.218074 2014] [:error] [pid 2321] [client 62.45.238.167:54585] Target WSGI script not found or unable to stat: /opt/python/current/app/topdish
[Wed Nov 26 22:38:39.976764 2014] [:error] [pid 2321] [client 62.45.238.167:54585] Target WSGI script not found or unable to stat: /opt/python/current/app/topdish

Upvotes: 2

Views: 2471

Answers (2)

Gabri&#235;l
Gabri&#235;l

Reputation: 1315

Unfortunately in the end I've changed to much at the same time to discover the actual issue. I've re-created an AWS Elastic Beanstalk App, and tried again, now it seems to work.

It's might have been the white space line before 'option_settings', but not sure.

Upvotes: -1

transcranial
transcranial

Reputation: 381

I think the 'Target WSGI script not found or unable to stat: /opt/python/current/app/topdish' error message is because your container_commands were unsuccessful; the deploy hooks copies the app from /ondeck to /current only after successful completion of all the container_commands.

As a test, try adding ignoreErrors: true in a new line following leader_only: true for your 01_migrate container command. Your app should deploy, but of course syncdb will not have run.

container_commands:
  01_migrate:    
    command: "python manage.py syncdb --noinput"
    leader_only: true
    ignoreErrors: true

Then try entering the full paths to python and manage.py, without ignoreErrors:

container_commands:
  01_migrate:    
    command: "/opt/python/run/venv/bin/python /opt/python/ondeck/app/manage.py syncdb --noinput"
    leader_only: true

or possibly:

container_commands:
  01_migrate:    
    command: "/opt/python/run/venv/bin/python26 /opt/python/ondeck/app/manage.py syncdb --noinput"
    leader_only: true

Upvotes: 4

Related Questions