【发布时间】: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