У меня есть проект Django, работающий внутри virtualenv без пакетов сайтов. Когда дело доходит до ввода моих новых изменений на сервер, я хотел бы создать новый каталог virtualenv, установить мой проект и все его зависимости, а затем быстро переименовать два каталога virtualenv ТОЛЬКО, если новый код будет успешно развернут.django + virtualenv = атомное обновление - возможно ли это?
Все отлично работает на бумаге, пока вы не переименуете каталог virtualevn. Параметр Relocate на virtualenv не является надежным в соответствии с его документацией.
Как вы предлагаете модернизировать мой проект ТОЛЬКО, если новый код окажется пригодным для развертывания.
Вот шаги:
# fab update_server to run the following:
cd /srv/myvenv # existing instance
cd ../
virtualenv myenv-1
source myenv-1/bin/activate
git co http://my.com/project
pip install -r project/req.txt
# all worked
mv myenv myenv-2; mv myenv-1 myenv
touch /path/proj.wsgi # have apache to reload us
выше совершенен, но переименование или перемещение virtualenv не является надежным.
Обновление сайта в режиме myvenv требует времени и может также сломать сайт.
Как вы это сделаете? Строить?
* Опция relocate для virtualenv не надежна в соответствии с ее документацией * извините, не могли бы вы объяснить это заявление? Что конкретно не является надежным? '--relocatable' звучит точно так, как вам нужно. –
--relocatable отмечен как экспериментальный. Я не могу полагаться на это на производстве. – un33k