Enviando atualizações para o servidor ativo… O FTP não está cortando… um método melhor?

3

Sou o desenvolvedor líder em uma equipe de 2. Meu parceiro acabou de entrar no projeto e, apesar de usar o GIT para controle de versão, etc., ainda estamos presos na idade das trevas quando se trata de implantação de código.

Atualmente faço todas as atualizações do site via FTP (dessa forma eu tenho controle / responsabilidade sobre tudo que vai ao vivo), usando o Filezilla.

Eu fiz isso há anos, mas agora temos algumas grandes classes PHP (300KB) e muito tráfego.

Então, resumindo, toda vez que eu carrego uma classe-chave "geral", por exemplo, o site fica inativo até que o arquivo termine o upload. Isso é apenas 5/6 segundos por vez, mas isso é cada vez mais inaceitável.

Sei que posso fazer o upload do arquivo com um nome diferente e, em seguida, renomear os dois arquivos ... mas realmente deve haver uma maneira melhor?

Ouvi falar sobre o código rsyncing em outro servidor, mas não vejo como isso impede a migração para o novo arquivo durante o upload.

Temos apenas um servidor (para DB e Apache), mas também usamos alguns servidores em nuvem (para openx como exemplo).

    
por Jon M 30.06.2011 / 23:29

2 respostas

6

O rsync faz exatamente isso no modo de transferência padrão: cria um novo arquivo no destino durante a transmissão e o renomeia após a conclusão da transmissão.

No entanto, isso não ajuda em situações em que seu envio é "inconsistente", ou seja, você fez o upload de arquivos que dependem de outros arquivos, ainda não enviados. Se isso for uma preocupação, você precisará fazer o upload para uma estrutura de diretório totalmente diferente e alternar depois que toda a transferência for concluída.

    
por 30.06.2011 / 23:44
2

O WinSCP tem um recurso de "sincronização" de diretórios que será sincronizado automaticamente com um servidor FTP remoto, como o Filezilla Server. O cliente do Filezilla não possui esse recurso. Você pode obter um um servidor SFTP nessa lista . Se você escolher o servidor SFTP correto, um bloqueio de arquivo não será retido durante o upload até que o último bit seja transferido e o arquivo seja substituído.

Como alternativa, você pode manter um diretório FTP do servidor que não seja ao vivo para o qual faz upload e depois usar outro software local (como o WinSCP) para fazer uma sincronização instantânea para o diretório ativo no mesmo servidor. Dessa forma, você evita o bloqueio de arquivos durante a latência do envio.

    
por 30.06.2011 / 23:57