Я работаю с клиентом, у которого есть выделенный сервер Plesk на базе Linux. Веб-сайт (скажем, example.com) является живым, и поскольку обычно требуются огромные модификации, очень трудно заставить их работать непосредственно вживую. На сервере не было SVN, только FTP.

Я создал поддомен staging.example.com и поместил туда файлы через FTP, чтобы клиент мог видеть изменения до их запуска. Излишне говорить, что мне очень больно вспоминать каждый файл, связанный с каждой задачей, загружать и тестировать при постановке, а затем снова вспоминать, что это были за файлы, и снова делать это для живого сервера. Я "успешно провалился" несколько раз в этом безупречно.

Я хочу использовать SVN сейчас. Мне удалось установить SVN с использованием SSH (у меня есть полный доступ к нему) и репозитория (в /var/www/vhosts/example.com/svn/repos), но дальнейшие настройки кажутся мне неоднозначными. Я хочу, чтобы настройки были такими:

  1. SVN Server (работает на svn.example.com - уже сделано)
  2. ' основная ' копия на staging.example.com , на /var/www/vhosts/example.com/staging (не уверен, что 'master' имеет какие-то конкретные значения в SVN. Я просто имею в виду основную копию)
  3. Рабочий каталог по адресу www.example.com , по адресу /var/www/vhosts/example.com/httpdocs чтобы я мог выполнить svn update, чтобы мои изменения вступили в силу
  4. Еще один рабочий каталог на моем компьютере, где я буду выполнять реальную работу.

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

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

2 ответа2

0

Расширенная версия ред ответа

Предисловие

Вы должны получить некоторые административные навыки для Subversion, чтобы все работало правильно и понимало процессы под капотом.

Лицо

У тебя должно быть:

  • Один репозиторий
  • Две ветви (как минимум) в хранилище (например, STAGING и LIVE)
  • Хук после фиксации со встроенной бизнес-логикой "публикация на STAGE или LIVE target"
  • Три Четыре Рабочих Копии: DEV (ваше локальное рабочее место, привязанное к ветви STAGING), MERGE (ваше локальное рабочее место, привязанное к ветви LIVE), STAGING (на сервере STAGING, привязанное к ветви STAGING), LIVE (на сервере LIVE, привязанное к LIVE ветка)
  • Клиент SVN установлен на STAGING и LIVE

Процедура:

  • Редактировать код в DEV
  • Commit - ловушка после фиксации обновит WC на STAGING
  • Тестовые изменения на STAGING
  • Объединить в MERGE WC (проверено) изменения из ветви STAGING / объединить из STAGING в ветку LIVE /
  • Зафиксируйте изменения ветки LIVE - ловушка post-commit обновит WC на LIVE с объединенными изменениями (ловушка может обнаружить такой тип фиксации по ключевому слову в файле commit-message / svnlook log | grep KEYWORD / или по изменениям в ветке LIVE / svnlook dirs-changed /)

Примечание:

Вместо WCs на серверах и ssh & svn up вы можете использовать FTP или Subversion без scp, больше головной боли при обновлении сайтов (удаленные файлы не будут удалены через FTP | scp, а общий процесс кажется более сложным / для меня /)

0

Возможно, самое простое решение - просто проверить код (только ствол, без веток и т.д.) В трех местах. Тогда вам просто нужно убедиться, что вы делаете "svn up" в нужных папках в нужное время.

Итак, попробуйте следующее (комментарии описывают каждый бит).

#SSH to the server as a user who can modify /var/www/vhosts/...
...

cd /var/www/vhosts/ # Since this is a live server, we need to make the
                    # changeover fast, so work in a new folder. 
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository 
                                                    # into a new folder called
                                                    # "staging".(Change "website"
                                                    # to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"

# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...

cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.   
 # This will make the svn version of the staging site live. Check that it works
 # then do the same with the httpdocs folders.

Более сложным решением было бы использовать две ветви кода, одну для постановки, а другую для живого. Но это, вероятно, было бы излишним для этого ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .