Подтвердить что ты не робот

Переход от подрывной деятельности к веб-серверу

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

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

В 2009 году я хочу нарушить эту дурную привычку и на самом деле сделать все правильно. У меня есть SSH доступ к моему веб-серверу (я могу входить в систему и просматривать файлы), но на самом деле не знаю, что делать, чтобы вывести самые новые файлы из SVN на сервер.

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

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

Спасибо

4b9b3361

Ответ 1

Если у вас есть доступ к SSH, вы можете сделать:

svn export [url to repo] [web каталог]

Экспорт означает, что вы не получите багаж .svn, который поставляется с рабочей копией.

Ответ 2

просто - войдите на свою серверную машину и проверьте содержимое репозитория. Это нужно сделать только один раз.

$ svn checkout [http|svn|whatever_you_got_there]://{your_svn_repo} {checkout_directory}

Каждый раз, когда вам нужно обновить рабочую копию с помощью новейшей версии, выполните update:

$ cd {checkout_directory}
$ svn update

Ответ 3

Управление выпуском

вы можете создать задание/пакет, который экспортирует svn в локальную папку. после экспорта вы можете загрузить его с помощью rsync.

задание может автоматически выполняться с помощью привязок svn.

вы также можете использовать способы mtod, но имейте в виду: использование проверки на сервере является угрозой безопасности, если кто-то может получить доступ к папкам .svn! они могут получить доступ к php-коду и увидеть пароли или ошибки.

Ответ 4

Если ваша хостинговая компания не предоставила вам доступ к cron(1) или оболочке, это будет сложно, так как svn, централизованный VCS, не имеет возможности перетаскивать вещи в рабочий каталог, вы должны svn update.

Несколько способов сделать то, что вы хотите, в зависимости от доступных ресурсов:

  • определите запись crontab(5), которая делает cd $WEBSITE && svn update
  • используйте ssh для подключения к вашему веб-сайту и выполните ту же команду. ssh можно автоматизировать с помощью записи crontab на вашей стороне.
  • у вас есть специальный cgi на вашем сайте, который, надеюсь, защищен паролем, который может периодически запускаться (от cron на вашей стороне), который выполняет ту же команду.

Лучший способ для меня по-прежнему будет двигаться к децентрализованной VCS (например, Mercurial или git), но это гораздо больший проект.

Ответ 5

У меня было несколько похожее question некоторое время назад, однако у меня не было доступа SSH к моему серверу, поэтому я был довольно ограничен в своих вариантах.

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

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

Я предлагаю вам написать script, который вы размещаете на сервере. Вы можете сделать этот script настолько сложным, насколько вам хочется, но голова script сделает "обновление" на проверенной версии вашего сайта, экспортирует вашу базу данных в временную папку (ваша база данных конечно, также находится под контролем версий) и повторно импортирует базу данных (или объединяет ее, что бы она ни делала). С помощью одной команды вы можете развернуть свой сайт. Снова и снова.

Есть инструменты, которые могут помочь вам в такой автоматизации, например CruiseControl и Capistrano.

Ответ 6

Вы пытались использовать наш FTP-развертывание на Beanstalk? У нас также есть веб-крючки, что означает, что вы можете пинговать URL-адрес каждой фиксации, чтобы закодировать свои собственные вещи.

http://help.beanstalkapp.com/articles/17-deployment-and-releases

Ответ 7

Вы говорите "автоматически толкнуть". Это может быть достигнуто с помощью крюка после фиксации. Я был единоличным разработчиком и использовал настройку для PHP dev:

VPS Стек LAMP с Apache mod_dav_svn, выполняющий обязанности SVN хостинг "промежуточной" версии сайта. "Промежуточная" версия сайта была фактически рабочей копией, только что проверенной локально, в каталог, который Apache мог обслуживать из

локальная машина VMware запуск NetBeans и LAMP stack, с установкой xdebug для отладки PHP

Мой рабочий процесс прошел следующим образом:

Проверьте рабочую копию моего VPS на мою виртуальную машину VMware Получить дамп базы данных через PhpMyAdmin из VPS и импортировать в MySQL на виртуальной машине dev моя задница, все локально в конце или в день, экспортировать мою базу данных и загрузить ее в MySQL на VPS зафиксировать мои изменения в VPS

Ключ был крюком фиксации сообщения - все, что есть, является текстовым файлом в SVN, который анализируется после каждого события фиксации. Вы вызываете оболочку script, а оболочка script выполняет обновление svn для обновления рабочей копии, которая является вашим промежуточным сайтом, который обслуживает Apache.

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

Эти заметки довольно подтянуты, но это мой личный чит-лист, который я использую при настройке чего-то вроде этого:

http://random.siliconrockstar.com/dev_ShellScriptingAndNixAdmin/SVN.txt

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