【问题标题】:django staticfiles settings for production on AWSAWS 上生产的 django staticfiles 设置
【发布时间】:2014-05-11 17:00:23
【问题描述】:

我正在将一个 django 项目部署到 AWS。我需要帮助来设置正确的静态文件结构。

目前在我的本地开发环境中,我的 settings.py 中有以下内容:

STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'static')

STATIC_URL = '/static/'

我买了 Greenfeld 和 Roy 的“Two Scoops of Django”。他们并没有真正提到部署的静态文件策略。

我看到文档https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATICFILES_DIRS 中的一些示例使用了 STATICFILES_DIR,但是在运行“python manage.py collectstatic”之后,我在“资产”和“静态”目录中都有冗余文件,这似乎有点不必要。我可能没有正确使用 STATICFILES_DIR。

STATICFILES_DIRS = (
    ('assets','assets/',)
)

这是我的项目树,我已经压缩以显示相关部分:

mysite
|____assets
| |____css
| |____ico
| |____js
|____fish
| |______init__.py
| |____admin.py
| |____models.py
| |____templates
| | |____home.html
| |____tests.py
| |____views.py
|____manage.py
|____mysite
| |______init__.py
| |____settings.py
| |____urls.py
| |____views.py
| |____wsgi.py
|____static
| |____css
| |____ico
| |____js
|____requirements.txt

我正在使用Amazon's django deployment example,将 Elastic Beanstalks、EC2 和 RDS 与 MySQL5.6 结合使用。我不知道他们是否在使用 nginx、gunicorn 或其他东西。但我想这可能是题外话。

我真的不想在部署过程中搞砸这个。如果您在 AWS 中部署了 django 项目,我真的可以使用您的帮助。你能指导我如何设置静态文件进行部署吗?谢谢。

【问题讨论】:

    标签: django deployment amazon-web-services


    【解决方案1】:

    您没有过多提及您的生产环境以及如何部署 django。但理想情况下,在生产中,您根本不会让 django 为您的静态文件提供服务,而是让适当的 Web 服务器(如 nginx)直接提供静态文件。这要快得多,并且您不会得到让它为静态文件提供服务的所有“django 开销”。 collectstatic 在将静态文件与 django 应用程序文件(需要通过框架的文件)分离方面做得非常好。

    因此,您可以将 STATIC_ROOT 设置为您的 Web 服务器可以访问的路径,以便它可以直接提供文件,然后您运行 collectstatic 来填充它。然后,您将 STATIC_URL 设置为 django 在创建静态 url 时将使用的 url,并且该 url 也应该与您的 Web 服务器配置相匹配。

     STATIC_ROOT = '/some/path/to/static/'    
     STATIC_URL = '/static/'
    

    然后在一个 nginx conf 中,例如

     # set up url to serve static content
     location /static/ {
         autoindex on;
         alias /some/path/to/static;
     }
    
     # all other urls go to django
     location / {
         ... pass all other requests to django (uwsgi or fcgi or etc...)
     }
    

    我以前没有使用过 STATICFILES_DIRS,但这听起来像是一组额外的路径,将包含在 collectstatic 输出中。

    【讨论】:

    • 感谢您的解释。让我添加有关我的部署的其他信息。
    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    相关资源
    最近更新 更多