http://iakov.davydov.name/blog/tag/mod_rewrite/Iakov Davydov blog blog posts with tag intersection mod_rewrite2008-09-14T15:53:41ZIakovdjango-atompubhttp://iakov.davydov.name/blog/2008/09/14/7-minutes/7 минут2008-09-14T15:53:41Z2008-09-14T15:08:50Z<p>Во время переезда на новый хостинг сервер не работал около семи минут.
На сервере находятся две версии <a href="http://xkcd.myths.ru">архива</a>: обычная и отладочная. Естественно, они используют разные базы данных. Поэтому можно довольно свободно экспериментировать с отладочной версией, не боясь поломать основную. Когда отладочная версия работает хорошо, можно сделать <code>hg pull path_to_dev && hg update</code>, и обычная версия обновится до отладочной.
</p>
<p>Процедура переезда была такова:
</p>
<ol>
<li>
Копирование исходников обеих версий на новый сервер.
</li>
<li>
Изменение исходников отладочной версии до рабочего состояния (в основном исправление путей к файлам и путей на сервере).
</li>
<li>
Отключение возможности записи в базу данных на старом сервере. Да, это довольно грубый хак, но в рассылке все были предупреждены. В <a href="http://www.mysql.com/">MySQL</a> это делается приблизительно так: <code>mysql> REVOKE INSERT,DELETE,UPDATE on db.* from 'usr'@'localhost'; flush privileges;</code>
</li>
<li>
Создание на новом домене (<span class="caps">DNS</span> запись которого была предусмотрительно переведена на новый сервер) новой рабочей копии архива. Для этого на старом сервере делаем: <code>python manage.py dumpdata > backup.json</code>. Затем на новом <code>python manage.py syncdb</code>, <code>python manage.py</code> (вывод передаём в ваш любимый клиент) и <code>python manage.py loaddata backup.json</code>.
</li>
<li>
Создание редиректа при помощи <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewrite</a> со старого сервера на новый (несколько простых правил). Собственно, на этом пункте и возник простой. Он длился точно не более 7 минут, а скорее всего меньше. Если бы я не поленился и отладил правила для mod_rewrite на другом сервере, то задержка составляла бы несколько секунд.
</li>
<li>
Поднятие виртуального хоста для старого домена на новом сервере.
</li>
<li>
Изменение <span class="caps">DNS</span> старого домена на новый сервер.
</li>
</ol>
<p>Вся процедура заняла около двух часов спокойной работы (включая не быстрое перекачивание всех картинок со старого сервера на новый).
</p>