2009-12-23 1 views
1

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

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

Когда придет время для фактического развертывания, я экспортирую версию trunk в подкаталог веб-сайта в реальном времени, в качестве промежуточной области и проведу некоторые тесты. Таким образом, я вижу, как он на самом деле ведет себя в живой среде, не изменяя ничего, что видят пользователи. Тогда, если все будет выглядеть хорошо, я сделаю еще один экспорт в свой корень учетной записи и измените символическую ссылку (и снова проверим!)

Это переусердство? Каковы другие способы сделать это?

ответ

3

Существует Capistrano, который поможет вам в этом процессе. Используя SSH и ключи, он делает процесс довольно бесшовным для развертывания изменений и т. Д. Хотя это рубиновое приложение, вы можете использовать его для развертывания PHP или других приложений, посмотрите here for some info

В этой статье рассказывается об этом, используя общую папку вместе с вашей папкой выпуска.Общая папка может содержать файлы конфигурации для вашего отдельного сервера развертывания (URL, соединение с БД и т. Д.), А также активы, которые загружаются в течение жизни веб-сайта и не находятся в svn. Вы можете также использовать Capistrano для вас.

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

И еще одна идея связать это с SVN или любым репозиторием. Использовать их крючки для выполнения этих развертываний. то есть каждая фиксация на соединительной линии будет обновлять сервер dev. И ветка подталкивает ее к вашей промежуточной среде.

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

Обновление:
Также я хотел бы отметить, что SVN может обрабатывать символические ссылки. Поэтому, если вы выполняете развертывания на серверах на базе Unix, вы можете просто добавить символические ссылки в свой репозиторий и использовать относительную символическую ссылку.

Так что если у вас есть

./releases/200912231043 
./shared/uploads 

Вы можете поставить символьную ссылку в

./releases/200912231043/uploads -> ../../shared/uploads 

Это даст вам простой способ управления активами не в SVN без использования много сценариев делать развертывают. Теперь вы можете просто использовать фиксацию для развертывания для своего разработчика и/или постановки.

0

Я думаю, что это именно то, что нужно. Для меня идеально подходит: обновления в реальном времени поступают как полностью протестированный релиз, изменения хорошо документируются с помощью сообщений фиксации, откатывание назад (и вперед) легко и переход от одной версии к другой является атомарным, поэтому нет простоев. Я стараюсь делать это одинаково с каждым проектом.

Что вы хотите сказать? Вы что-то не уверены? Разве это не работает для вас? Если да, то какая именно часть?

+0

«Это переусердство?» Каждая часть работает. Но есть ли лишние шаги? Я знаю парня, у которого есть многоразовый фильтр для кофе, и он покупает бумажные фильтры и помещает их в многоразовый. Он мог пропустить покупку бумажных фильтров и сэкономить деньги! – user151841

0

Это то, что я делал в течение последних двух лет для нескольких проектов, и никогда не испытывал ни одной проблемы с этим путем.

Возможность «откат» с символическими ссылками может рассматриваться как немного избыточная, да ... Но в тот день, когда вам нужно, чтобы сохранить веб-сайт, на котором вы развернули версию с критической ошибкой, вы действительно это способность!
Я использовал это что-то вроде 2 раза в 3-х лет - но, каждый раз, он действительно спас день ^^


Одна вещь кажется странным для меня, хотя: если я правильно понимаю, вы тестирование новой версии веб-сайта в живой (производственной) базе данных?

Если это так, если в приложении есть ошибка, вы можете уничтожить свою производственную базу данных, что, очевидно, было бы плохо.

Я бы использовал другую базу данных для этой тестовой среды, personnaly - как меру безопасности.


Также: вы проводите много испытаний, что хорошо ... Но почему бы не автоматизировать некоторые из них?

Это позволит вам проверить быстрее, чаще, и вы будете тратить меньше времени на тестирование, и больше времени developping ;-)

+0

Конечно, мы тестируем его на сайте разработки, который имеет копию базы данных в реальном времени, и может быть ранен без ущерба для нашего сайта. Но я думаю, что важно также протестировать в постановке, а затем снова проверить на производстве. Я бы не хотел разворачивать версию и просто предположить, что все прошло хорошо! Возможно, резервная копия базы данных на прямом сайте перед развертыванием - еще одна хорошая мера. – user151841

+0

Как вы автоматизируете тесты функциональности веб-сайта? Особенно функциональность ajax? – user151841

+0

Об автоматизации тестов, по крайней мере, когда речь заходит о тестировании приложения в целом (т. Е. Непосредственно в brower), мне очень нравится Selenium ;; в зависимости от вашего языка, вы также можете ознакомиться с инструментами для автоматизированных тестов, такими как jUnit, nUnit, PHPUnit, ... –

Смежные вопросы