Практики при выпуске веб-приложений на основе python/ruby/script в производство
Автор вопроса: CommunityОтветов: 4
Я чисто Windows-программист и трачу все свое время на взлом VC++.
Недавно я руководил несколькими веб-приложениями и сам создавал приложения с помощью python (/pylons framework) и выполнял проекты на рельсах. Все веб-проекты размещены на Ubuntu Linux.
Процедуры RELEASE и контрольный список, которым мы следовали при создании и выпуске оконного приложения VC++, просто бесполезны, когда речь идет о языке, основанном на сценариях.
Так что сейчас мы не создаем двоичные файлы. Я скопировал файлы asp/php в папку IIS через сервер ftp при использовании приложений cms с открытым исходным кодом.
Таким образом, FTP - это один из способов размещения файлов на веб-сервере. Теперь нам лень или не очень хочется копировать файлы через ftp, вместо этого мы используем SVN checkout и просто делаем svn update, чтобы получить последнюю копию.
Является ли проверка SVN и обновление svn правильными методами для обновления последних файлов сборки на сервере? Есть ли недостатки в использовании svn update? Есть ли лучший способ выпуска сценариев/веб-сценариев на производственный сервер?
PS: я использовал ssh-сервер с некоторым расширением на платформе Linux.
Я бы создавал ветку в SVN для каждого релиза веб-приложения и когда релиз там был бы готов, я бы проверял его на сервере и ставил на запуск или перемещал на место старой версии.
Ответ 2 · рейтинг 2 · S.Lott
Является ли проверка SVN и обновление svn правильными методами для обновления последних файлов сборки на сервере?
Очень, очень хорошие методы. Вы знаете, что у вас есть. Вы можете вернуться назад в любой момент.
Есть ли недостатки в использовании svn update? Никто.
Есть ли лучший способ выпуска сценариев/веб-сценариев на производственный сервер?
Что мы делаем.
У нас не заканчиваются каталоги проверки SVN. Каталог проверки SVN является "сырым" исходным кодом, расположенным на сервере.
Мы используем setup.py install Python для создания приложения в дереве каталогов /opt/app/app-x.y. Каждая помеченная ветвь SVN также является ветвью в окончательной установке.
У Ruby есть гемы и другие инструменты установки, которые, вероятно, похожи на Python.
Конфигурации Apache и mod_wsgi нашего веб-сайта относятся к конкретной /opt/app/app-x.y версии. Затем мы можем подготовить версию, провести тестирование, выполнить такие действия, как перенос данных из рабочей среды в следующую версию, и в целом подготовиться.
Затем мы настраиваем нашу конфигурацию Apache и mod_wsgi для использования следующей версии.
Предыдущие версии все на месте. И оставил на месте. Когда-нибудь мы их удалим, когда они нас смутят.
Ответ 3 · рейтинг 2 · hgmnz
Единственным недостатком обновления svn в корневом каталоге вашего веб-сайта является то, что каталоги .svn потенциально могут стать общедоступными, поэтому осторожнее с разрешениями на веб-сервере.
Существует множество стратегий развертывания, основанных на контроле версий. Вы могли бы пройти через учебники и получить некоторые идеи.
Я также хотел бы добавить, что хотя мы не "строим" (компилируем) проект на динамических языках, мы "строим" (тестируем/интегрируем) их. Серьезный проект должен использовать сервер непрерывной интеграции для проверки интегрированной "сборки" проекта на каждом зафиксировать или интегрировать задолго до того, как он попадет в производство.
Ответ 4 · thekbb
Один недостаток обновления svn: хотя вы можете вернуться в прошлое, к какой версии вы вернетесь? Вы должны посмотреть его. Псевдоразвертывания обновления svn работают намного чище, если вы используете теги - в этом случае вы будете выполнять переключение svn на другой тег, а не обновление svn в той же ветке или магистрали.
Вы хотите пометить свое программное обеспечение номером версии, например, 1.1.4 , а затем иметь простой сценарий для его архивирования application-1.1.4, zip и развертывания - тогда у вас есть автоматизированные повторяющиеся выпуски и откаты, а также больше видимость изменений между релизами.