Перемещение с подрывной деятельности на веб-сервер - PullRequest
20 голосов
/ 13 января 2009

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

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

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

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

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

Спасибо

Ответы [ 7 ]

29 голосов
/ 13 января 2009

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

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

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

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

просто - войдите на сервер и проверьте содержимое хранилища. Это должно быть сделано только один раз.

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

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

$ cd {checkout_directory}
$ svn update
1 голос
/ 13 января 2009

Управление релизами

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

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

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

0 голосов
/ 12 июля 2013

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

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

локальная машина VMware работающий стек NetBeans и LAMP с установленным xdebug для отладки PHP

Мой рабочий процесс прошел так:

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

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

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

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

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

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

0 голосов
/ 23 марта 2009

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

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

0 голосов
/ 14 января 2009

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

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

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

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

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

0 голосов
/ 13 января 2009

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

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

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

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

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