Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Практики при выпуске веб-приложений на основе 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.

pythonrubylinuxreleasescripting

Ответы

Ответ 1 · рейтинг 3 · gruszczy

Я бы создавал ветку в 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 потенциально могут стать общедоступными, поэтому осторожнее с разрешениями на веб-сервере.

Тем не менее, есть гораздо лучшие способы развертывания приложения, созданного с помощью динамических языков. В мире Rails Capistrano - это зрелый инструмент развертывания, а также Влад Деплойер. Capistrano можно легко использовать для развертываний без использования Rails.

Существует множество стратегий развертывания, основанных на контроле версий. Вы могли бы пройти через учебники и получить некоторые идеи.

Я также хотел бы добавить, что хотя мы не "строим" (компилируем) проект на динамических языках, мы "строим" (тестируем/интегрируем) их. Серьезный проект должен использовать сервер непрерывной интеграции для проверки интегрированной "сборки" проекта на каждом зафиксировать или интегрировать задолго до того, как он попадет в производство.

Ответ 4 · thekbb

Один недостаток обновления svn: хотя вы можете вернуться в прошлое, к какой версии вы вернетесь? Вы должны посмотреть его. Псевдоразвертывания обновления svn работают намного чище, если вы используете теги - в этом случае вы будете выполнять переключение svn на другой тег, а не обновление svn в той же ветке или магистрали.

Вы хотите пометить свое программное обеспечение номером версии, например, 1.1.4 , а затем иметь простой сценарий для его архивирования application-1.1.4, zip и развертывания - тогда у вас есть автоматизированные повторяющиеся выпуски и откаты, а также больше видимость изменений между релизами.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы