Как использовать SVN на живом сервере Apache? - PullRequest
8 голосов
/ 13 января 2011

Я новичок в SVN и есть кое-что, на чем я застрял. Долгое время я разрабатывал веб-сайты локально (настройка MAMP), а затем работал по всему сайту, когда он будет готов. Любые небольшие дополнительные изменения, которые я делаю непосредственно на живом сайте, и каждый раз я буду повторно загружать все файлы на живом сервере на мой локальный хост (так как я никогда не могу вспомнить все файлы, которые я изменил). Очевидно, что это не лучший способ делать вещи. Мне было любопытно, как я могу настроить SVN на живом веб-сервере, поэтому каждое изменение, которое я делаю локально, попадает на сайт, когда я говорю об этом. Где я могу создать репозиторий SVN? /domain.com/www/svn? Могу ли я создать каталог www как реальное хранилище, и если да, то это плохая практика?

Ответы [ 2 ]

7 голосов
/ 14 января 2011

Не создавайте хранилище в каталоге веб-сервера! Это первая часть вашего номера.

Ваш репозиторий может жить где угодно, только не помещайте его в каталог веб-сервера.

Когда вы устанавливаете Apache httpd (если это то, что вы используете), настройте его так, чтобы игнорировать папки .svn, например:

<DirectoryMatch \.svn>
   Order allow,deny
   Deny from all
</DirectoryMatch>

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

Как только вы это сделаете, вы можете перейти в каталог вашего веб-сервера, где вы хотите, чтобы эти файлы появлялись, и сделать заказ.

У вас должно быть три вещи:

  1. Репозиторий Subversion, который не находится в каталоге вашего веб-сервера .
  2. Рабочий каталог, содержащий все ваши файлы на вашем веб-сайте, который не находится в каталоге вашего веб-сервера .
  3. Рабочий каталог, который находится в каталоге вашего веб-сервера.

План такой: вы вносите изменения в рабочий каталог, который не находится в каталоге вашего веб-сервера. Вы можете провести тестирование здесь и зафиксировать свои изменения здесь. Вы также проводите здесь все свои испытания.

Как только вы все будете удовлетворены, вы можете сделать svn update в рабочем каталоге Subversion, который находится в каталоге вашего веб-сервера. Итак, вы выполняете свою работу вне веб-сервера, тестируете, а затем делаете svn update в каталоге веб-сервера.

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

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

1 голос
/ 13 января 2011

Я бы настроил структуру в вашей svn checkout (на вашем локальном ящике), которая соответствует файлам, которые вам нужно хранить (и не обязательно соответствуют структуре сервера), например:

my-project
my-project/docs/README.txt     (any documentation you want to write)
my-project/www/index.html    (etc)

и так далее.Затем,

(1) Если у вас есть доступ к запущенным командам на сервере, я войду в систему и сделаю, например:

cd /domain.com
rm -rf www
svn co https://svn.myserver.com/my-project/www www

(2) В противном случае я проверю файлына локальном компьютере и перенесите их по FTP на сервер.

Опция (1) лучше, но даже с опцией (2) у вас есть преимущества по сравнению с текущей настройкой.Если вы изменяете файлы на сервере, вы можете перенести весь каталог обратно в локальный ящик в новый каталог, а затем «зафиксировать» файлы на сервере Subversion.Subversion (с каталогами .svn, которые необходимо скопировать на сервер или с сервера) будет знать, какие файлы вы изменили.

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