Понятно, что при разработке всё равно, но в работающей системе как
обновляете фреймворк?
Интересен опыт и подходы.
Банально мне новичку кажется, что достаточно заменить код и перезапустить.
В моём случае uwsgi в режиме императора замечает touch ini вассалов и
перезапускает.
Но секунд 10 (на слабом vds, правда) получается перерыв. И это не
учитывая полуручную миграцию базы через south.
Что посоветуют профи?
--
Dmitry Agafonov ~ http://agafonov.pp.ru/
Меня не административная сторона интересует, а техническая :)
Более того, я уверен, что можно легко организовать плавное обновление
фреймворка в работающем приложении (как и плавное обновление самого
приложения) без перерывов в обслуживании.
Вопрос именно в том, насколько это уже проработанный и вообще насущный
ли вопрос.
1 августа 2012 г., 10:18 пользователь Pavel Reznikov
Таки, обновляем сам Django. Тогда основная задача - обеспечить
совместимость приложения с новой версией. Если апгрейд на новую
минорную версию, то, используя virtualenv, тупо:
1. pip install --upgrade Django<1.5 # предполагаем, что у нас 1.4.х,
на всякий случай ограничиваем, чтобы не установилась новая мажорная
2. рестарт wsgi или что у вас там, чтобы загрузить приложение с новым
фреймворком, у меня сие сильно меньше 10 секунд занимает
А вот, если мы обновляемся на новую мажорную версию, то для начала -
тестировать, тестировать, тестировать свое приложение, а потом уже
обновлять тем же путем примерно.
Само обновление приложения тоже не должно сильно занимать много времени.
1. Залили новый код (тут можно разными способами, сам справишься)
2. Обновили staticfiles
3. Рестарт wsgi.
Технически операции на сервере можно автоматизировать, например с
помощью fabric или сборкой своих deb-ок, например. В этих случаях
можно автоматизировать и шаги по выкладыванию "затычки" про "ой-ой-ой
у нас технические работы".
--
Serge Matveenko
se...@matveenko.ru
http://www.ohloh.net/accounts/lig
http://ru.linkedin.com/in/sergematveenko
Миграцию схемы, кстати, тоже вполне можно автоматизировать, только для
начала надо сделать ручками на тестовой машине, написать
соответствующие автоматизирующие процесс скрипты (тут инструметария
полно, тот же south), а потом и их протестировать, тогда миграция
должна пройти нормально в автоматическом режиме. По факту, так
получается не всегда, поэтому хорошо бы написать на это дело тестов и
запускать их на продакшене (можно так же автоматически) после
миграции.
Как оказывается, django+uwsgi+nginx [+mysql] живут на мааленьком VDS
очень неплохо и могут сделать очень много работы.
И, как говорится, зачем платить больше? :)
> именно. супервайзер не нужен
Это вы про режим императора или нет?
И динамику гонять напрямую в uwsgi или через nginx?
Напрямую, только через вебсервер, типа nginx:)
Я несколько педантичен, простите ;)
Типично: "обновляю код из git|svn"... У вас там рабочая копия или "экспорт"?
Если рабочая, то не плохо ли это?
Если экспорт, то не боитесь ли сбоя при замене кода (как вы это делаете в git?)
А что это такое, можно пояснить?
Если я правильно понял вопрос, то гит, например, не даст сделать push
в текущую активную ветку (с настройками по умолчанию). Поэтому я делаю
изменения в другой ветке, а потом обновляю активную ветку в продакшне.
Рабочая. Только отдельная специальная ветка, а не master, конечно.