将django部署到AWS的问题

时间:2017-11-01 21:52:41

标签: django amazon-web-services elastic-beanstalk

我试图使用弹性beanstalk将我的个人网站部署到aws。我的网站是django / python。 我一直遇到同样的问题。每次上传文件时,我都会在AWS控制台中收到以下错误:

Your requirements.txt is invalid. Snapshot your logs for details.

好的,所以我检查了日志,并从中注意到以下内容:

Error installing dependencies: Command '/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status 2Traceback (most recent call last):
File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 22, in main
  install_dependencies()

pip version 7.1.2, however version 9.0.1 is available.You should consider upgrading via the 'pip install --upgrade pip' command.

我用谷歌搜索,发现很多人都有这个问题。他们建议手动更新pip并安装依赖项。所以我登录到服务器并通过更新pip启动。繁荣,另一个问题。当我输入pip --version更新到pip 9.0.1后,我得到以下内容:

-bash: /usr/bin/pip: no such file or directory

我似乎无法继续这样做。我认为弹性豆茎应该很容易但我会继续做越来越多的事情。 在今天的所有测试之后,我的智慧结束了。我可以请求任何帮助吗?接下来我该怎么办? 我想AWS不会为这样的东西提供支持,是吗? 感谢。

编辑。我使用的是python 3.6和django 1.11.4。

编辑2:添加了requirements.txt和01_packages.config以及django.config

这是requirements.txt:

altgraph==0.14
argon2-cffi==16.3.0
awsebcli==3.12.0
botocore==1.7.36
cement==2.8.2
cffi==1.10.0
colorama==0.3.7
cx-Freeze==5.0.2
Django==1.11.4
django-bootstrap3==9.0.0
django-braces==1.11.0
dnspython==1.15.0
docker-py==1.7.2
dockerpty==0.4.1
docopt==0.6.2
docutils==0.14
et-xmlfile==1.0.1
future==0.16.0
idna==2.6
jdcal==1.3
jmespath==0.9.3
macholib==1.8
olefile==0.44
pathspec==0.5.0
pefile==2017.9.3
Pillow==4.2.1
python-dateutil==2.6.1
pytz==2017.2
PyYAML==3.12
requests==2.9.1
semantic-version==2.5.0
six==1.10.0
tabulate==0.7.5
termcolor==1.1.0
untangle==1.1.1
virtualenv==15.1.0
websocket-client==0.44.0

这里是01_packages.config文件:

packages:
  yum:
    altgraph: []
    argon2-cffi: []
    awsebcli: []
    botocore: []
    cement: []
    cffi: []
    colorama: []
    Django: []
    django-bootstrap3: []
    django-braces: []
    dnspython: []
    dockerpty: []
    docopt: []
    future: []
    idna: []
    macholib: []
    pathspec: []
    Pillow: []
    python-dateutil: []
    PyYAML: []
    untangle: []

这里是django.config:

option_settings:
 "aws:elasticbeanstalk:container:python":
   WSGIPath: "davidbiendotcom/wsgi.py"

1 个答案:

答案 0 :(得分:1)

要检查两件事。

首先,在运行pip之前,您需要键入以下内容进入正确的虚拟环境:

source /opt/python/run/venv/bin/activate
source /opt/python/current/env

其次,请检查您是否正在运行ebextensions文件右侧部分中的命令。如果您查看here,您可以看到我之前遇到的问题中不同命令部分的说明。如果你需要升级pip,则需要在container_commands部分完成。

回顾上面的附件我认为您正在尝试使用yum安装太多。

我建议像这样的django配置:

option_settings:
packages:
 yum:
  mysql-devel: []
  gcc: []
  make: []
  gcc-c++: []
  libjpeg-turbo-devel: []
  python26-devel: []
  postgresql94-devel: []
  libcurl-devel: []

container_commands:
  01_collectstatic:
      command: "django-admin.py generate_favicon static/img/email_logo.png"
      command: "find /opt/python/current/app/static -mmin -1440 | xargs touch"
      command: "django-admin.py collectstatic --noinput --clear"

  03_migrate:
    command: "django-admin.py migrate --noinput"
    leader_only: true

  04_wsgipass:
    command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'

其他软件包应该使用pip自动安装。

如果您仍然遇到pip版本的问题,那么您可能需要使用requirements.txt安装其他软件包,然后升级pip并使用其他容器命令安装最终软件包。

如果您还在苦苦挣扎,请发布您的ebextensions文件和您的要求.txt

相关问题