我正在为我的学校开设一个非常小规模的网站(每天不到100个用户),并且想知道是否有一种方法在django服务器上存储静态文件而不是部署第二台服务器来管理静态文件。谷歌的搜索结果如下:https://docs.djangoproject.com/en/dev/howto/static-files/,但我想知道在Django服务器上是否有一种更简单的方法可以做到这一点,即使效率不高。
答案 0 :(得分:3)
是的,使用同一台服务器提供静态文件当然是可能的。该文档给出了使用Apache / mod_wsgi https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/modwsgi/#serving-files
执行此操作的示例但是,如果您没有选择,只能在与Django相同的Apache VirtualHost上提供媒体文件,则可以将Apache设置为将某些URL作为静态媒体提供,而将其他URL设置为使用Django的mod_wsgi接口。
值得注意的是,当文档使用单独的Web服务器引用时,它并不一定意味着另一个框(虚拟或物理)只是为服务静态资源而优化的单独服务器。来自https://docs.djangoproject.com/en/1.4/howto/static-files/#serving-static-files-from-a-dedicated-server
大多数较大的Django应用程序使用单独的Web服务器 - 即,也不运行Django的服务器 - 用于提供静态文件。该服务器通常运行不同类型的Web服务器 - 速度更快但功能更少。
常见的设置是在Apache / mod_wsgi,Gunicorn或uWSGI前面为静态资源运行Nginx作为WSGI服务器,可以在一台服务器上完成小型站点。
答案 1 :(得分:2)
如果是“Django服务器”,则表示由python manage.py runserver
运行的开发服务器,我建议不要这样做。
在任何类型的生产环境中运行Django开发服务器以及通过它提供静态文件确实是一个坏主意。我不认为staticfiles应用程序甚至会让你DEBUG = FALSE
。
但是,如果您的意思是通过为Django应用程序提供服务的同一Web服务器(lighttpd,apache,nginx)提供静态内容,那么您可以通过在项目目录中运行python manage.py collectstatic
来轻松复制所有静态文件都放在一个目录中,并将Web服务器配置为从该目录提供服务,就像使用任何其他静态站点一样。