Ошибка Python Fabric - PullRequest
       7

Ошибка Python Fabric

2 голосов
/ 18 апреля 2010

Я работаю с фабрикой (развертывание Django в apache), и, кажется, все работает нормально, пока я не дохожу до задачи по установке сайта:

def install_site():
    "Add the virtualhost file to apache"
    require('release', provided_by=[deploy, setup])
    sudo('cd %(path)/releases/%(release)/%(release); cp %(project_name)/%(virtualhost_path)/%(project_domain) /etc/apache2/sites-available/%(project_domain)s')
    sudo('cd /etc/apache2/sites-available; a2ensite %(project_domain)') 

Я получаю эту ошибку:

[173.203.124.16] sudo: cd %(path)/releases/%(release)/%(release);
[173.203.124.16] err: /bin/bash: -c: line 0: syntax error near unexpected token
`('
[173.203.124.16] err: /bin/bash: -c: line 0: `cd %(path)/releases/%(release)/%(r
elease);'

Warning: sudo() encountered an error (return code 2) while executing 'cd %(path)
/releases/%(release)/%(release);'

Я перебираю fabfile.py снова и снова, и я не могу понять, почему появляется ошибка ... есть идеи?

Ответы [ 3 ]

4 голосов
/ 18 апреля 2010
def install_site():
    "Add the virtualhost file to apache"
    require('release', provided_by=[deploy, setup])

    with cd('%(path)s/releases/%(release)s/%(release)s' % env):
        sudo('cp %(project_name)s/%(virtualhost_path)s/%(project_domain)s '
                 '/etc/apache2/sites-available/%(project_domain)s' % env)
    with cd('/etc/apache2/sites-available'):
         sudo('a2ensite %(project_domain)s' % env) 
2 голосов
/ 18 апреля 2010

Возможно, вы захотите попробовать использовать менеджер контекста CD . Возможно, у вас также есть проблемы с интерполяцией строк .

def install_site():
    # Add the virtualhost file to apache
    require('release', provided_by=[deploy, setup])

    with cd('%s/releases/%s/%s' % (path, release, release)):
        sudo('cp %s/%s/%s /etc/apache2/sites-available/%s' % (project_name, virtualhost_path, project_domain, project_domain))

    with cd('/etc/apache2/sites-available'):
        sudo('a2ensite %s' % project_domain)
0 голосов
/ 18 апреля 2010

проблема исправлена, что-то замечая с помощью команды "hg archive ..", она копирует / копирует репо 2 уровня глубиной

local('hg archive --type=tgz %(release)s.tar.gz' % {'release': env.release})

приводит к 20100418105144.tar.gz, который при открытии имеет следующую структуру:

20100418105144.tar.gz
/ 20100418105144
/ Репо

...