2017-04-02 19 views
1

私はAmazon Elastic Beanstalkで動作しているベアボーンDjangoアプリケーションにscipyをインストールしようとしていますが、動作させることはできません。ここでElastic Beanstalkインストールscipy

は私の問題を再現する手順は、次のとおりです

the guideからの定期的なもの:

scipyのダウンロードインストール
# 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 = ['*'] 

# 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 

を、私はここで途方に暮れてよ。おそらく、もっと多くのRAMを搭載したEC2インスタンスで動作するようになるかもしれないようですが、本当にそれを行うことはできません。なぜなら、私が自由な層から私を引き抜くからです。あまりにも多くのメモリや他の解決策を取らないようにmakeコマンドを実行する方法はありますか?

+0

ここに同じです。この方法で私のピップバージョンをアップロードするようにEBに指示しました: 'コマンド: 00_update_pip: コマンド:"/opt/python/run/venv/bin/pip install --upgrade pip "' EBに 'pip install --no-cache-dir -r requirements.txt'のようなものを伝える方法があるかどうかを知りたいです。 EBインスタンスにパッケージ* directiy *をインストールしていたのを何度か覚えていました。この方法で解決しました。 –

+0

私の答えはあなたのために働いたのですか? –

+0

@MattiaPaternaあなたがそう答えたときに私はそれに取り組んでいませんidk – michaelsnowden

答えて

1

あなたの.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" 

あなたが/var/log/eb-activity.logを検査(またはあなたがEB CLIがインストールされている場合だけeb logsを入力する)場合は、ここでエラーを見ることができます:

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 

django.configにEBを組み込むと、特定のコマンドをEBに提供することができます。 hereのように、キャッシュを無効にすることができます。

これは私のために働いています。

関連する問題