При обновлении программного кода сайта — а это происходит довольно часто, итерационно, я бы сказал — часто возникают ошибки («А-а-а!!! У нас всё работает, на сайте все умерло!»). Ошибки эти неприятны именно тем, что всё приходится чинить быстро, в авральном режиме. Все нервничают, хватаются за голову и торопят друг друга. Если всё починили быстро, то народ потом отпаивается кофием. А если не чинится или чинится очень долго, то нужно записываться на приём к психотерапевту.
НУ И КОМУ ЭТО ТАКИ НУЖНО?
Есть простой и надёжный метод обновления сайта, основанный на символических ссылках, или симлинках. Допустим, у нас есть *nix-система, на которой работает наш мегапортал. Пусть основной код сайта лежит в некой папке site/www. Перенесём весь код сайта в папку site/version1, а папку www заменим на символическую ссылку, перстом своим указующую на site/version1:
cd siteln -s ./version1 www
Итак, теперь при обращении к папке www мы перескакиваем в папку version1. Едем дальше. Создадим папку site/version2 и скопируем туда весь код из site/version1. Это будет наша тестовая версия. Теперь создадим симлинк site/www_test, ссылающийся на site/version2.
ln -s ./version2 www_test
Далее надо настроить виртуальный хост test.example.org так, чтобы его DocumentRoot был site/www_test.
Далее пишется скрипт на php, который меняет симлинки местами так, чтобы www -> site/version2, www_test -> site/version1.
И В ЧЁМ ЗДЕСЬ СОЛЬ?
А вот в чем. Когда надо обновить версию сайта, вы смотрите, куда ссылается симлинк www_test, и заливаете изменения именно туда — на тестовую версию сайта. Если что-то сломалось, то можно все чинить не спеша, без нервотрепки и обгрызания и без того обгрызенных губ. Итак вкратце процедура обновления сайта:
- Заливаем все изменения в www_test
- Смотрим сайт test.example.org, чиним то, что поломалось
- Запускаем скрипт, который меняет симлинки местами
- Посмеиваясь, идём пить чай
Привет!