【问题标题】:EBS container-commands: wrong django-admin working directory?EBS 容器命令:错误的 django-admin 工作目录?
【发布时间】:2015-10-20 13:46:48
【问题描述】:

我有一个相当简单的 django 应用程序,我部署在弹性 beanstalk 环境中。我为部署过程创建了许多自定义项,包括容器命令中的经典“collectstatic”脚本。这是我的配置的一部分:

container_commands:
    01_replace_wsgi_config:
        command: cp .ebextensions/wsgi.conf /opt/python/ondeck/wsgi.conf
    02_collect_static:
        command: django-admin.py collectstatic --noinput

如您所见,我使用 ondeck 文件夹自定义 wsgi.conf 文件,因为自动生成的文件对我来说不够好。

现在我偶然发现的问题是,上面的 django-admin.py 调用正在处理旧的“当前”目录,一旦“ondeck”目录变为“当前”目录,它的结果就看不到了——这种情况发生了,显然,container_commands 被执行之后。对于来自 django 安装的应用程序的我的 javascript 文件,这看起来是 404。我发现的方法是查看 /var/log/eb-actions.log 输出:

  ...
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/jquery/static/js/jquery.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax.min.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax-plugin.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax-plugin.min.js'

  0 static files copied to '/opt/python/current/app/dashboard/dashboard/static', 74 unmodified.

我找到了一个适合我的解决方案:

02_collect_static:
    command: python dashboard/manage.py collectstatic --noinput

此命令确保 collectstatic 在“ondeck” forder 上运行,即将变为“current”:

  ...
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/jquery/static/js/jquery.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax.min.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax-plugin.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax.js'
  Copying '/opt/python/run/venv/local/lib/python2.7/site-packages/django_ajax/static/django_ajax/js/jquery.ajax-plugin.min.js'

  67 static files copied to '/opt/python/bundle/15/app/dashboard/dashboard/static', 7 unmodified.

让我担心的是,我不得不改变一些应该按照official documentation 工作的东西。

我怀疑我的问题可能隐藏在这里(app.config):

option_settings:
  "aws:elasticbeanstalk:application:environment":
    DJANGO_SETTINGS_MODULE: "dashboard.settings"
    PYTHONPATH: "/opt/python/current/app/dashboard:$PYTHONPATH"

PYTHONPATH 设置为“current”,这可能会在处理 container_commands 时强制 django-admin.py 看那里而不是“ondeck”。 如果是这样,这个设置应该如何才能让正确的经典部署工作?我采用这种格式from documentation...

【问题讨论】:

  • 你最后是怎么解决这个问题的?

标签: python django django-admin amazon-elastic-beanstalk


【解决方案1】:

我在很多项目中都使用过它,效果很好。

02_collectstatic:
  command: "source /opt/python/run/venv/bin/activate && python manage.py collectstatic --noinput"

option_settings 看起来不错。

【讨论】:

    猜你喜欢
    • 2016-05-29
    • 1970-01-01
    • 2021-02-25
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2020-02-26
    • 2020-05-18
    相关资源
    最近更新 更多