AWS上用于生产的django静态文件设置

AWS上用于生产的django静态文件设置,django,deployment,amazon-web-services,Django,Deployment,Amazon Web Services,我正在向AWS部署一个django项目。我需要帮助设置正确的静态文件结构 目前在我的本地开发环境中,我的settings.py中有以下内容: STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'static') STATIC_URL = '/static/' 我买了格林菲尔德和罗伊的“两勺德扬戈”。他们并没有提到太多关于静态文件部署策略的内容 我看到文档中的一些示例使

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

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

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

STATIC_URL = '/static/'
我买了格林菲尔德和罗伊的“两勺德扬戈”。他们并没有提到太多关于静态文件部署策略的内容

我看到文档中的一些示例使用STATICFILES\u DIR,但在运行“python manage.py collectstatic”之后,我在“assets”和“static”目录中都有冗余文件,这似乎有点不必要。我可能没有正确使用STATICFILES\u 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
我正在MySQL5.6中使用Elastic Beanstalks、EC2和RDS。我不知道他们是否在使用nginx、gunicorn或其他东西。但我想这可能是离题了


我真的不想在部署过程中把这件事搞砸。如果您已经在AWS中部署了django项目,我真的需要您的帮助。你能指导我如何设置静态文件进行部署吗?谢谢。

关于您的生产环境以及如何部署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配置为例

 # 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\u DIRS,但它听起来像是一组额外的路径,将包含在collectstatic输出中。

感谢您的解释。让我添加有关部署的其他信息。