2008-09-26 2 views
10

У моего сервера Ubuntu установлены Apache и Subversion. Я использую этот сервер в качестве промежуточного сервера, исключительно для тестирования. Я использую Apache для размещения веб-приложения, а Subversion - для версий с версиями исходного кода.Как использовать привязки post-commit для копирования файлов, переданных в веб-каталог из SVN?

Мой текущий рабочий:

  • Внесение изменений в файл
  • Commit файл в хранилище Subversion
  • Загрузить файл нового по SFTP в общедоступном каталоге Apache
  • Просмотреть изменения мой веб-браузер

Я был бы намного счастливее, если бы мой рабочий процесс был таким:

  • Внесите изменения в файл
  • Commit файл в хранилище Subversion
  • На заднем плане, Subversion помещает копию совершенного файла в общедоступном каталоге Apache
  • Посмотреть изменения мой веб-браузер

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

Спасибо!

ответ

0

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

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

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

+0

Мое приложение проверяет схему базы данных при запуске и изящно отображает страницу «недоступно прямо сейчас», если что-то не в порядке. Не говоря уже о том, что это промежуточный сервер, поэтому я хочу, чтобы все было не так;). Спасибо за ответ. – rmh 2008-09-26 19:24:54

0

Я думаю, что реального, всеобъемлющий вопрос, который вы должны спросить себя --- которые вы, возможно, уже спрашивали себя, конечно --- это: «Как я могу проверить свой код наиболее легко перед развертыванием»

Я думаю, что хороший ответ - установить Apache на свой ящик разработки и запустить его как своего собственного пользователя, с помощью веб-кортежа и/или cgi-пути по адресу /home/richardhenry/src/mywebsite (или если вы посмотрите свой код).

Таким образом, вы можете протестировать свой код, даже не совершив. В результате вы не будете засорять свой багажник сломанными или бесполезными коммитами.В целом, независимость независимых вещей имеет тенденцию быть хорошей идеей (ТМ).

В качестве альтернативы, синхронизируйте веб-сервер с рабочим каталогом с помощью rsync или напишите сценарий, который выталкивает ваши файлы из окна dev на ваш промежуточный сервер и добавляет правило Makefile, которое запускает ваш скрипт (или вызывает rsync). Если вы хотите быть действительно fancy, используйте inotify или какой-либо другой монитор уведомлений о файлах, чтобы запустить ваш скрипт автоматически.

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