Вы на машине Linux / BSD? Если это так, вы можете легко использовать символические ссылки для достижения этой цели.
Создайте версию 1 сайта здесь:
/var/www/www.example.org.v1
Создайте символическую ссылку, указывающую на этот каталог
cd /var/www
ln -s www.example.com.v1 www.example.com
Это должно дать вам каталог list ( ls -la
), который выглядит примерно так:
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
Настройте свой веб-сервер для использования в /var/www/www.example.com
качестве корневого документа. Вам никогда не придется менять это; все перенаправление будет выполнено на уровне файловой системы.
Теперь, когда вы хотите поменять местами версию 2 сайта, все, что вам нужно сделать, это поместить новую версию в:
/var/www/www.example.org.v2
И обновите символическую ссылку, чтобы указать на эту версию:
ln -sfh www.example.com.v2 www.example.com
Из-за чего вывод вашего каталога будет выглядеть так:
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
Как видите, символическая ссылка www.example.com теперь указывает на версию 2 вашего сайта. Это атомарная операция, которая не должна вызывать простоев, связанных с недоступностью файлов.
Конечно, все еще существует значительная сложность, необходимая для обеспечения обновления структур базы данных, наличия любых статических ресурсов (и привязки к правильной версии) и т. Д., Но по крайней мере для этого необходимо убедиться, что все нужные ресурсы для новый сайт доступен мгновенно.
Windows Vista и Server 2008 также поддерживают символические ссылки с помощью mklink
команды, хотя у меня нет прямого опыта работы с ними.