Среда разработки - VCS от разработки до промежуточного сервера и до производства

Я прочитал ряд тем, которые были примерно такими же, как эта, но, честно говоря, я все еще не совсем уверен в лучшем подходе (в качестве отправной точки). Я индивидуальный разработчик в небольшом офисе, и у меня около 30 веб-сайтов, размещенных на Linux VPS. Я хочу начать использовать контроль версий (возможно, SVN), а также настроить промежуточный сервер. На данный момент я занимаюсь разработкой либо локально на своей машине, прежде чем использовать FTP для загрузки на рабочий сервер, либо иногда, для небольших изменений, я редактирую удаленные файлы напрямую, что не является идеальным подходом.

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

Надеюсь, это имеет смысл!


person nicky77    schedule 14.12.2009    source источник


Ответы (3)


Вот чем мы занимаемся на работе:

У нас есть промежуточный сервер, на котором запущен Apache, и сервер Subversion. У нас есть ловушка post commit, которая обновляет рабочую копию в каталоге htdocs, таким образом, когда разработчик что-то фиксирует, он автоматически обновляется на промежуточном сервере, чтобы каждый мог видеть последний код.

На производственных серверах клиента (тех, которые мы можем контролировать) у нас установлен клиент Subversion, а веб-сайт является рабочей копией. Когда нам нужно обновить работающий сайт, мы входим в оболочку и запускаем svn up. Если вы сделаете что-то подобное, обязательно ограничьте доступ к каталогам .svn либо с помощью файлов .htaccess, либо из основной конфигурации Apache.

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

Мы никогда, никогда не редактируем файлы через FTP на действующем сайте. В целом мы используем эту установку почти 2 года, и, за исключением случайных конфликтов на промежуточном сервере, у нас никогда не было никаких проблем.

person Daniel Dinu    schedule 14.12.2009
comment
Из любопытства; №1. Вы также проверяете все файлы, например изображения? Веб-сайты, с которыми я работаю, часто размещаются в cms, которая при загрузке изображения сохраняет версию изображения с высоким разрешением, а также несколько меньших вариантов = ›могут быстро стать значительным объемом данных. # 2 Как решить бит базы данных. Работает ли промежуточный сервер с той же базой данных, что и рабочий, или вы также настраиваете промежуточную базу данных? - person Tommy; 16.12.2009
comment
1) Зависит от веб-сайта, на некоторых мы версируем изображения, на других - нет. У нас никогда не было проблем с размером репо даже по крупным проектам. 2) У нас есть промежуточная база данных, у нас есть открытый порт и тестовый пользователь, поэтому каждый разработчик подключается к промежуточной базе данных из своей локальной установки. Мы узнали из некоторого неудачного опыта, что нам никогда не следует разрабатывать в производственной системе, будь то изменения кода или базы данных, даже если контент ставится до того, как попадет в производственную среду. - person Daniel Dinu; 16.12.2009
comment
Спасибо за ответ, Дину :) Я могу полностью понять этот подход, но мне кажется обременительным делать все это, настраивать новую базу данных и все такое, когда нужно что-то очень маленькое. Если вы сделаете это для всех изменений, независимо от их размера, что звучит разумно, сколько времени потребуется на оценку, которую это добавит к внесению изменений? Было ли когда-нибудь проблемой заставить клиента согласиться с тем, что малейшее изменение потребует значительного количества времени? - person Tommy; 16.12.2009
comment
Настройка нового проекта занимает пару минут, база данных создается автоматически, мы просто импортируем таблицы. Клиенты не возражают, они чувствуют себя в большей безопасности, зная, что они могут предварительно просмотреть изменения до того, как они появятся. Конечно, для незначительного изменения контента или незначительного исправления кода мы не ждем, пока клиент даст свое согласие. С некоторыми хорошими хуками коммитов вы можете творить чудеса :), наши коммиты сразу переходят в стадию, так что это не займет больше времени, чем нажатие на коммит. Чтобы привыкнуть к этому, нужно время, но, поверьте, оно того стоит. - person Daniel Dinu; 16.12.2009

Фактически вы можете установить сервер SVN на свой локальный компьютер, что я бы рекомендовал вместо его установки на веб-сервере (при условии, что вы делаете резервные копии). Проще всего, поскольку его используете только вы, было бы использовать протокол file://, но использование svnserve является немного более надежным и предпочтительным методом, если вы хотите найти время для этого.

person Michael Hackner    schedule 14.12.2009
comment
Если вы собираетесь разместить репозиторий на своем сервере и в своем доме, почему бы просто не использовать что-то вроде git, которое было создано с нуля для выполнения подобных задач. - person Tyler Carter; 14.12.2009
comment
OP не предполагал, что он рассматривает возможность создания нескольких репозиториев. - person Michael Hackner; 14.12.2009

@Michael, я не согласен - я бы сказал, что лучше ставить на linux vps, особенно если вы уже платите за услугу хостинга. Мне очень полезно иметь возможность просматривать и загружать материалы из моего репозитория svn, где бы я ни находился, с любого компьютера, на котором я работаю.

@nicky, я начал с svn (и контроля версий) несколько лет назад, и я сделал маленькие шаги, которые упростили задачу.

Если бы мне пришлось сделать это снова, я бы для начала прочитал svn book. Книга написана очень хорошо, и на ее прочтение ушло не более 1-2 дней.

Пока вы читаете, установите svn на свой vps linux с помощью внешнего интерфейса apache.

После этого выберите один из своих веб-сайтов и импортируйте его в svn. Вот как я структурирую свое svn-репо. Например, предположим, что мое репо размещено на http://mysvn.mydomain.com/svn/. :

  mywebsite1
     - trunk
     - tags
     - branches 
  mywebsite2
     - trunk
     - tags
     - branches 

Не беспокойтесь о создании идеальной структуры. Это довольно легко реорганизовать, особенно когда вы только начинаете. После того, как вы импортируете несколько проектов в svn, вы начнете понимать, какие проекты должны иметь свою собственную структуру директорий «trunk / tags / branch», а какие можно комбинировать.

Для создания тестовых сред я делаю именно то, что вы описываете. Я использую сценарии сборки для проверки из svn и загрузки файлов в каталоги, которые сопоставлены с субдоменами, такими как "test.clientsite.com" (я работаю в основном на java и использую ant и maven, но я думаю, что вы можете использовать любой язык сценариев, на котором вы знаком с).

Как только вы привыкнете к управлению версиями, вы больше никогда не вернетесь, удачи!

person Upgradingdave    schedule 14.12.2009
comment
Справедливо; Я рекомендовал это только потому, что входной барьер немного ниже, и, как мы все знаем, самое важное при управлении версиями - как можно скорее начать его использовать! :-) - person Michael Hackner; 14.12.2009
comment
Да, хороший момент, хорошо встать и уйти как можно скорее, но все же думаю, что стоит попытаться установить удаленную установку. - person Upgradingdave; 15.12.2009
comment
Спасибо, Дэйв, это хорошее начало для меня. Я сначала настрою SVN на VPS, как вы предлагаете, а затем ознакомлюсь с ним на одном веб-сайте, прежде чем перейти к следующему шагу. Я потрачу некоторое время на изучение книги и надеюсь, что все пойдет по правильному пути! - person nicky77; 15.12.2009
comment
Я установил SVN на свой веб-сервер сейчас, и мне просто интересно, где было бы разумное место для размещения репозиториев, учитывая, что репозитории должны быть доступны через URL-адрес - создадите ли вы учетную запись пользователя, а затем получите к ней доступ, например, следующим образом - serverIP / ~ nicky / repos? - person nicky77; 22.12.2009