Назад |
Перейти на главную страницу
Развертывание веб-приложения - оформить заказ или нет
При развертывании веб-приложения Python, каковы преимущества и недостатки использования следующих методов для развертывания приложения:
- Используйте VCS для оформления заказа на сервере
- Используйте FTP / SSH / rsync для передачи копии локальной кассы
- Создайте правильный пакет и передайте его на сервер
(Примечание 1 - в настоящее время я использую метод 1. Однако мой репозиторий может содержать много других артефактов, связанных с проектом, а также фактическое приложение, поэтому, похоже, это лучше всего работает с SVN, где я могу проверить только соответствующую папку - с DVCS all или ничего не подходить это похоже не такая уж хорошая идея). (Примечание 2 - в настоящее время я перехожу на DVCS)
Я выбираю 4: создайте клон на сервере, а затем создайте его архив и разверните (как показано в моем инструмент развертывания git push, Giddyup).
По моему опыту, проблемы с другими методами следующие:
- Проверка VCS: ваша проверка включает метаданные управления версиями, которые (если вы не позаботитесь о надлежащей защите с помощью конфигурации веб-сервера) могут раскрыть ваш исходный код для злоумышленников или неизлечимо любопытных.
- FTP / rsync: в этом методе нет ничего особенно плохого, хотя простая реализация (FTP или rsync в пустой каталог) требует гораздо больше времени и пропускной способности для передачи всего. Также имеет неприятную привычку развертывать вещи, которые не были зарегистрированы (всегда приключение для диагностики который one), потому что он просто лежал в вашей локальной рабочей копии. (Вы можете обойти это, но в основном они сводятся к «локальной проверке», которая переходит в (1).
- Пока я упаковочная гайка, Я обнаружил, что упаковка большинства (TM) веб-приложений является излишней - это данные, а не программа (с точки зрения сервера), поэтому упаковка их в пакет оказывается ненужной (при условии, что вы получил хороший механизм развертывания, включающий ведение журнала ваших развертываний, исчерпывающий контроль над ними и т. д.).