【发布时间】:2017-07-16 17:11:36
【问题描述】:
昨天,我创建了这个帖子:DjangoRestFramework browsable api looks different locally vs when deployed on server?
基本上,当我执行python manage.py runserver 时,会显示:
但在我将其部署到 AWS (eb deploy) 后,我在访问该站点时看到的是:
上面帖子的答案提到这是因为我的静态文件丢失了。于是我搜索了如何在 AWS 上部署静态文件,偶然发现了这个教程:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-update-app
在“创建站点管理员”部分下,它提到为了提供静态文件,我必须首先在settings.py 中定义STATIC_ROOT(所以我做了:STATIC_ROOT = os.path.join(BASE_DIR, "ebdjangoapp/static/"))然后我做了eb deploy .但是,该站点看起来仍然与第二张图片相同(没有静态文件)。然后我尝试做python manage.py collectstatic(这创建了一个静态文件夹,其中包含rest_framework 目录,包含css 文件等),然后又做了eb deploy,但该站点看起来与第二张图像相同。
为什么静态文件还没有显示出来?
注意,我搜索了一下,发现了这个帖子:Django app deployment not loading static files,答案是:
“然后,您需要通过您选择的 Web 服务器为 settings.STATIC_URL 提供 settings.STATIC_ROOT,通常使用 nginx 作为 Apache-mod_wsgi 应用服务器后面的反向代理。”
但我不知道网络服务器(nginx、反向代理、Apache-mod_wsgi)是如何工作的。我有一个使用 python manage.py runserver 在本地运行的 Django 应用程序,并且我有 AWS 弹性 beanstalk。我通过 eb deploy 将我的 Django 应用程序部署到 AWS。为了让静态文件出现在部署中,我需要采取哪些步骤(假设我不知道如何配置 nginx、反向代理等)。?
【问题讨论】:
-
您是否随时运行
python manage.py collectstatic? -
@GrahamDumpleton 是的,我在
eb deploy之前就这样做了。 (基本上,我是在本地做的,所有的文件都放在静态文件夹中,然后我部署它)。
标签: django amazon-web-services django-rest-framework