【问题标题】:Issue deploying django to AWS将 django 部署到 AWS 的问题
【发布时间】:2018-04-14 07:51:27
【问题描述】:

我正在尝试使用弹性 beantalk 将我的个人网站部署到 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"

【问题讨论】:

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


    【解决方案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 文件和您的 requirements.txt

    【讨论】:

    • 我添加了有关 requirements.txt、django.config 和 packages.config 的更多详细信息。运行此软件包文件时,我收到一条错误消息,提示 yum 找不到/安装 awsebcli。
    • 刚刚编辑回复:我认为您尝试使用 yum 安装太多
    • 我明天试试。如果这不起作用,那么我将在虚拟环境中创建一个新项目并从头开始尝试(无论如何我得到了代码)。完成后,我会将您的消息标记为答案。感谢您的帮助。
    • 还是没有运气。我创建了一个虚拟环境,我只安装了 django,这就是我的 requirements.txt 文件里面的内容。我还添加了 django 进行预安装。我将暂时手动尝试。我对弹性豆茎的第一印象并不是最好的。
    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 2020-03-24
    • 2021-11-16
    • 2015-06-28
    • 1970-01-01
    • 2022-01-22
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多