2017-04-02 4 views
1

Ich versuche scipy auf einer blanken Django App zu installieren, die auf Amazon Elastic Beanstalk läuft, aber ich kann es nicht zum Laufen bringen.Elastic Beanstalk scipy installieren

Hier sind die Schritte, um mein Problem zu reproduzieren:

Das regelmäßige Material von the guide:

# Create a new virtual environment 
mkvirtualenv -p python2.7 django_eb 

# Install Django on it 
pip install django==1.9.12 
# pip freeze should now show Django==1.9.12 and some other things 

# Start a new Django project 
# This creates a directory that has everything you need for Django 
django-admin startproject django_eb 
cd django_eb 

# Optionally check that the site works 
python manage.py runserver 
Ctrl-C 

# Store the pip requirements so that the remote host can install them 
pip freeze > requirements.txt 

# Tell the remote server where our wsgi file is 
mkdir .ebextensions 
cat <<EOT >> .ebextensions/django.config 
option_settings: 
    aws:elasticbeanstalk:container:python: 
    WSGIPath: django_eb/wsgi.py 
EOT 

# Allow any host for our project 
# If this is unset, you'll get a 404 on the deployed site 
set ALLOWED_HOSTS = ['*'] in settings.py 

# Create an EB project 
# Will need AWS EB CLI for this 
eb init -p python2.7 django_eb 
# Choose some region 
eb init 
# choose Y so we can SSH and check logs 

# Create a deployment environment 
eb create django-eb-env 
# This step takes around 5 minutes 
# If it fails and you need to restart run 'eb deploy' 

# Open the website in your OS's default browser 
eb open 
# If you get DisallowedHost at/error 
# double check that ALLOWED_HOSTS = ['*'] 

Installation scipy:

# Now we'll install scipy and watch how it doesn't work remotely 
pip install scipy==0.19.0 
pip freeze > requirements.txt 
eb deploy 
# Should take forever and then finally print 
# 'ERROR: Failed to deploy application.' 

eb ssh 
cat /var/log/eb-activity.log 
# Should print 
# numpy.distutils.system_info.NotFoundError: no lapack/blas resources found 

# After reading this blog post 
# https://medium.com/@DaveJMcKeown/deploying-scipy-into-aws-elastic-beanstalk-2e5e481155de 
# I added this to .ebextensions/django.config: 
packages: 
    yum: 
    make: [] 
    gcc-c++: [] 
    gcc-gfortran: [] 
    python27-devel: [] # I used python27-devel instead of python-devel 
    atlas-sse3-devel: [] 
    lapack-devel: [] 
    libpng-devel: [] 
    freetype-devel: [] 
    zlib-devel: [] 
container_commands: 
    AddGlobalWSGIGroupAccess: 
    command: "if ! grep -q 'WSGIApplicationGroup %{GLOBAL}' ../wsgi.conf ; then echo 'WSGIApplicationGroup %{GLOBAL}' >> ../wsgi.conf; fi;" 

# Unfortunately, this leads to an our of memory error 
# Running dmesg now looks like the following: 
# http://stackoverflow.com/a/35011967/2770572 

ich hier bei einem Verlust bin. Es scheint, als könnte ich das vielleicht an einer EC2-Instanz mit mehr RAM arbeiten lassen, aber das kann ich nicht wirklich machen, weil es mich aus der freien Schicht herausholt. Gibt es eine Möglichkeit, den make-Befehl auszuführen, sodass er nicht so viel Speicher oder eine andere Lösung benötigt?

+0

Das gleiche hier. Ich habe diesen Weg gefunden, um dem EB zu sagen, dass er meine Pip - Version hochladen soll: 'commands: 00_update_pip: Befehl:"/opt/python/run/vend/bin/pip install --upgrade pip "'. Ich würde gerne wissen, ob es eine Möglichkeit gibt, dem EB etwas wie 'pip install - no-cache-dir -r requirements.txt' zu sagen. Ich erinnere mich, dass ich es mehrmals hatte, als ich Pakete * direkt * auf der EB-Instanz installierte, und ich löste es auf diese Weise. –

+0

Hat meine Antwort für Sie funktioniert? –

+0

@MattiaPaterna Ich habe aufgehört zu arbeiten, als Sie so IDK beantwortet haben – michaelsnowden

Antwort

1

Sie können versuchen, diese hinzufügen, um Ihre .ebextensions/django.config:

commands: 
    01_no_cache: 
    command: "/opt/python/run/venv/bin/pip install --no-cache-dir -r /opt/python/current/app/requirements.txt" 

Wenn Sie inspizieren /var/log/eb-activity.log (oder nur eb logs eingeben, wenn Sie die EB CLI installiert haben), können Sie den Fehler sehen hier:

MemoryError 
2017-08-10 11:40:25,557 ERROR Error installing dependencies: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 2 

Soweit ich sehen kann, können Sie Ihren EB mit bestimmten Befehlen versorgen, wenn Sie sie in der django.config einschließen. Wie geschrieben here, können Sie den Cache deaktivieren.

Das hat für mich funktioniert.

Verwandte Themen