Você está em uma máquina Linux / BSD? Nesse caso, você pode facilmente usar links simbólicos para atingir esse objetivo.
Crie a versão 1 do site aqui:
/var/www/www.example.org.v1
Crie um link simbólico apontando para este diretório
cd /var/www
ln -s www.example.com.v1 www.example.com
Isso deve fornecer uma listagem de diretório ( ls -la
) parecida com esta:
lrwxr-xr-x 1 userid users 18 Aug 3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x 2 userid users 512 Aug 3 03:35 www.example.com.v1
Defina seu servidor da Web para usar /var/www/www.example.com
como raiz do documento. Você nunca terá que mudar isso; todo o apontamento será feito no nível do sistema de arquivos.
Agora, quando você deseja trocar a versão 2 do site, basta colocar a nova versão em:
/var/www/www.example.org.v2
E atualize o link simbólico para apontar para esta versão:
ln -sfh www.example.com.v2 www.example.com
O que deixará a saída do diretório assim:
lrwxr-xr-x 1 userid users 18 Aug 3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x 2 userid users 512 Aug 3 03:42 www.example.com.v1
drwxr-xr-x 2 userid users 512 Aug 3 03:41 www.example.com.v2
Como você pode ver, o link simbólico www.example.com agora está apontando para a versão 2 do seu site. Essa é uma operação atômica e não deve causar indisponibilidade relacionada a arquivos indisponíveis.
Obviamente, ainda é necessária uma complexidade considerável para garantir que as estruturas do banco de dados sejam atualizadas, quaisquer recursos estáticos estejam disponíveis (e vinculados à versão correta) etc. etc. Um novo site está disponível instantaneamente.
O Windows Vista e o Server 2008 também oferecem suporte a links simbólicos usando o mklink
comando, embora eu não tenha nenhuma experiência direta com eles.