企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
**在产品环境中提供静态文件服务** 将静态文件部署在产品环境中的基本思路很简单:当静态文件改变时,就运行**collectstatic**命令,然后将整理后的静态文件目录(**STATIC_ROOT**)移动至静态文件服务器中并托管。基于**STATICFILES_STORAGE**的不同,文件可能需要手工移至新的位置,或者由**Storage**类的**post_process**方法做相应的处理 当然,和所有的部署任务一样,细节是各种复杂。每一个产品环境都有一些不同,所以你将这个基本思路调至符合你的需要。下面是一些常见情况,也许会有帮助。 **由专用服务器托管静态文件** 大多数大型Django网站,使用一个分离的Web服务器来托管静态文件 -- 这个服务器并不运行Django。这种服务器通常运行一个不同类型的Web服务 -- 更快,但是功能不全面。通常的选择就是: * Nginx * Apache的一个简易版本 配置这些服务器超出了本文档范围,可以查看各个服务器自己的文档介绍。 因为你的静态文件服务器并不运行Django,你需要改变部署策略,大概变成这样: * 当静态文件改变时,本地运行**collectstatic** * 将你本地的**STATIC_ROOT**目录推送至静态文件服务器的相应目录下。rsync是完成该步骤的常见选择,因为它每次只需要传输改变的部分。 下面是fabfile的大致处理过程: ~~~ from fabric.api import * from fabric.contrib import project # Where the static files get collected locally. Your STATIC_ROOT setting. env.local_static_root = '/path/to/static' # Where the static files should go remotely env.remote_static_root = '/home/www/static.example.com' @roles('static') def deploy_static(): local('./manage.py collectstatic') project.rsync_project( remote_dir=env.remote_static_root, local_dir=env.local_static_root, delete=True, ) ~~~