将静态媒体部署到与主环境分开的服务器

时间:2012-07-05 19:39:53

标签: django deployment fabric

我遇到了对结构部署脚本进行一些更改的问题。我们正在使用易于破解的NFS安装来托管我们的静态媒体,使用一个单独的网络服务器来托管和处理我们所有的静态媒体。

目标是无论我们正在部署的环境(测试,产品等),upload_static_content命令都只能在静态媒体服务器上运行。现在如果我们运行fab test upload_static_content一切都很完美。静态内容最终位于正确目录中的正确服务器上。但是,如果我们运行fad test deploy,静态内容最终会出现在测试网络服务器上,而不是目标服务器上。

def test():
    ...
    env.hosts=testhosts

def prod():
    ...
    env.hosts=prodhosts

def deploy():
    # Do some deployment stuff
    ...
    upload_static_content()
    ...

@hosts([static_server,])
@run_once
def upload_static_content()
    # Upload static content to a different server
    ...

1 个答案:

答案 0 :(得分:1)

您是否尝试过在Fabric 1.3中引入的执行功能?它应该尊重@hosts装饰。

def deploy():
    # Do some deployment stuff
    ...
    execute(upload_static_content)

这是文档:

http://docs.fabfile.org/en/1.4.2/usage/execution.html#intelligently-executing-tasks-with-execute