Как вы обновляете свое веб-приложение на сервере?

Я знаю о Capistrano, но для меня это слишком тяжеловесно. Лично я установил два репозитория Mercurial, один на производственном сервере, а другой на моем локальном компьютере разработчика. . Обычно, когда новая функция готова, я отправляю изменения из репозитория на моем локальном компьютере в репозиторий на сервере, а затем обновляю их на сервере. Это довольно простой и быстрый способ синхронизировать файлы на нескольких компьютерах, но он не помогает обновлять базу данных.

Каково ваше решение проблемы?


person caustic    schedule 01.09.2008    source источник


Ответы (5)


Раньше я использовал git push для публикации на моем веб-сервере, но в последнее время я просто использую rsync. Я стараюсь сделать свой сайт максимально независимым от того, где он работает (используя относительные пути и т. Д.), И до сих пор он работал довольно хорошо. Единственная проблема - поддерживать синхронизацию баз данных, и для этого я обычно использую производственную базу данных в качестве главной и регулярно делаю резервные копии и импортирую в свою тестовую базу данных.

person Kyle Cronin    schedule 01.09.2008
comment
Я делаю то же самое, но в последнее время я подумал, что это действительно не атомарно. Не оптимально для постоянно используемого веб-сайта (люди могут получить к нему доступ на неработающей стадии, когда еще не все файлы были синхронизированы). - person Gilles; 03.10.2008
comment
Я добавлю, что более оптимальный способ сделать это - выполнить rsync с папкой A, в то время как папка B содержит ваш действующий веб-сайт, а затем выполнить переключение с формы A на B, перезаписав символическую ссылку, которая указывает на текущую действующую версию. А затем в следующий раз rsync с B. - person Gilles; 03.10.2008

Или Fabric, если вы предпочитаете Python.

person Community    schedule 08.10.2008
comment
Подробнее о ткани: stackoverflow.com/questions/1233655/ - person hughdbrown; 05.08.2009

что такое тяжеловес в капистрано? если вы хотите синхронизировать файлы, то rsync - отличный вариант. но если вам нужно будет делать обновления базы данных, может быть, cap не так уж и плохо?

person mat kelcey    schedule 29.11.2008

Я предполагаю, что вы говорите о Ruby on Rails.

Загляните в вики HowTo:

http://wiki.rubyonrails.com/rails/pages/Howtos#deployment

person Steve Klabnik    schedule 03.10.2008
comment
ссылка 404 сейчас - person NamNamNam; 18.12.2018

@Андрей

Чтобы использовать git push для развертывания вашего сайта, вам необходимо сначала настроить удаленный сервер в вашем файле .git / config, на который будет выполняться отправка. Затем вам нужно настроить ловушку, которая будет в основном выполнять git reset --hard для копирования кода, который вы только что скопировали в репозиторий, в рабочий каталог.

Я знаю, что это немного расплывчато, но на самом деле я удалил серверную папку .git, как только переключился на rsync, поэтому у меня нет точных сценариев, которые я использовал, чтобы совершить волшебство. Это может быть хорошим кандидатом на полный вопрос, так что таким образом вы можете получить больше ответов.

edit: Я знаю, что прошло какое-то время, но в конце концов я снова нашел то, что использовал:

Развертывание проекта с помощью Git push

person Kyle Cronin    schedule 01.09.2008