Практика при выпуске веб-приложений на основе python / ruby ​​/ script на производстве - PullRequest
1 голос
/ 13 января 2010

Я просто программист Windows и провожу все свое время на взломе VC ++.

Недавно я возглавлял несколько веб-приложений и сам создавал приложения с python (/ pylons framework) и выполнял проекты на рельсах. Все веб-проекты размещены на Ubuntu Linux.

Процедуры и контрольный список RELEASE , которые мы использовали при создании и выпуске приложения Windows VC ++, просто более бесполезны, когда речь идет о языке на основе скриптов.

Так что мы сейчас не строим никаких двоичных файлов. Я скопировал asp / php файлы в папку IIS через ftp сервер при использовании приложений cms с открытым исходным кодом.

Таким образом, FTP - это один из способов размещения файлов на веб-сервере. Теперь нам лень или не очень хочется копировать файлы через ftp, вместо этого мы используем SVN checkout и просто делаем svn update , чтобы получить последнюю копию.

Являются ли SVN checkout и svn update правильными методами обновления последних файлов сборки на сервере? Есть ли недостатки в использовании svn update? Есть ли лучший способ выпустить сценарий / веб-сценарии на рабочий сервер?

PS: я использовал ssh-сервер на каком-то расширении на платформе linux.

Ответы [ 4 ]

3 голосов
/ 13 января 2010

Я бы создавал ветку в SVN для каждого выпуска веб-приложения, и когда выпуск готов там, я бы проверял его на сервере и устанавливал для запуска или перемещал на место старой версии.

2 голосов
/ 13 января 2010

Недостатком обновления svn для вашего корневого веб-сайта является то, что каталоги .svn потенциально можно сделать общедоступными, поэтому будьте осторожны с разрешениями на веб-сервере .

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

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

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

2 голосов
/ 13 января 2010

Являются ли SVN checkout и svn update верными методами обновления последних файлов сборки на сервере?

Очень, очень хорошие методы. Вы знаете, что у вас есть. Вы можете вернуться назад в любое время.

Есть ли недостатки в использовании svn update? Ни один.

Есть ли какой-нибудь лучший способ для выпуска скриптов / веб-скриптов на рабочий сервер?

Что мы делаем.

Мы не исчерпали каталоги проверки SVN. Каталог извлечения SVN - это «необработанный» источник, расположенный на сервере.

Мы используем Python setup.py install для создания приложения в дереве каталогов /opt/app/app-x.y. Каждая помеченная ветка SVN также является веткой в ​​окончательной установке.

В Ruby есть гемы и другие инструменты установки, которые, вероятно, похожи на Python.

Конфигурации Apache и mod_wsgi нашего веб-сайта ссылаются на конкретную /opt/app/app-x.y версию. Затем мы можем подготовить версию, провести тестирование, перенести данные из производства в следующий выпуск и, как правило, подготовиться.

Затем мы настраиваем нашу конфигурацию Apache и mod_wsgi для использования следующей версии.

Предыдущие версии все на месте. И оставил на месте. Мы удалим их когда-нибудь, когда они запутают нас.

0 голосов
/ 15 декабря 2010

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

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

...