IT-Expert
  IT-Expert / Веблог / Использование CVS при разработке сайта
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2024 год
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

      Использование CVS при разработке сайта

      11:14, 5 декабря 2005 ( Web Development FreeBSD  )

      Думаю, что не ошибусь, если скажу что рано или поздно при разработке сайтов возникает вопрос контроля версий, синхронизации, да и просто хранения и синхронизации последних изменений в файлах кода. А если еще и разработка ведется из разных мест, к примеру, с работы и из дома, а еще и разными людьми, дизайнером, кодером, то, безусловно, без CVS не обойтись.

      Что же такое CVS и с чем его едят?


       

      CVS - concurrent versioning system представляет собой систему контроля версий и позволяет иметь последний работающий вариант кода, позволяет вернуться на любой момент работающего кода, откатить изменения, редактировать "монопольно" и многое другое.

      Я покажу на своем примере как можно использовать CVS для разработки сайта.

      Первое что нам потребуется - это CVS сервер, представляющий собой удаленное хранилище сайта, в терминах CVS - репозитарий.

      В моем случае это сервер под управлением FreeBSD, в котором демон cvs будет запускаться через inetd, т.е. в момент обращения на порт cvs, в обычном состоянии cvs, таким образом, загружать систему своими процесссами не будет.

      Настройка cvs демона.
      CVS как правило уже входит в систему при установке по умолчанию, нам остается лишь настроить репозитарий, права, и запуск самого демона. Оговорюсь, что необходимо cvs настраивать на сервере, который должен быть доступен из всех тех мест, где необходимо иметь к нему доступ, в моем случае было удобно настроить на сервере с честным ip.

      Добавляем строку в /etc/inetd.conf

      cvspserver      stream  tcp     nowait  root    /usr/bin/cvs    cvs --allow-root=/home/cvsroot pserver

      надо заметить, что cvspserver - номер порта, который определен в /etc/protocols, обычно это 2401, а опция --allow-root задает размещение репозитария, который будет создан в /home/cvsroot

      убедитесь что inetd в вашей системе запущен, и виден в процессах:

      ps -ax | grep inetd
       129  ??  IWs    0:00,00 /usr/sbin/inetd -wW

      Следующим шагом мы проинициализируем наше cvs хранилище, так скть подготовим его для работы.
      Для этого зайдем в шелл, создадим дир-рию cvsroot в home

      cd /home
      mkdir cvsroot

      cvs init -D /home/cvsroot ## проинициализируем хранилище

      Это создаст пустой репозитарий и заполнит его служебной информацией, успешным созданием мы будем считать наличие CVSROOT в /home/cvsroot.

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

      Используюя утилиту htpasswd из комплекта apache сгенерируем md5 пароль для нового пользователя в файл /home/cvsroot/CVSROOT/passwd. В моем случае это nexus, с паролем pas$word:

      cd /home/cvsroot/CVSROOT
      htpasswd passwd nexus
      pas$word
      pas$word # повтор пароля

      Теперь мы сможем соединиться с сервером под именем nexus и создать новый модель в репозитарии.

      Для того что бы можно было использовать cvs сервер нам потребуется cvs клиент. Разрабатываю сайты под OS Windows, для меня удобно использовать бесплатный windows cvs клиент Tortoise CVS, который удобно встраивается в windows explorer в качестве плагина.

      Доступен по правому клику по папке в explorer.

      Нашей целью будет создание нашего сайта как модуля в репозитарии cvs.
      Для этого обратимся в explorer к нужной директории с сайтом, правый клик, CVS->Make new module.

      Задаем необходимые папаметры соединения с сервером:

      адрес сервера, имя пользователя, месторасположение репозитария и название создаваемого модуля, в моем случае rating - каталог с сайтом.

      В случае успеха у нас будет создан модуль в репозитарии, который мы сможем увидеть в шелле сервера /home/cvsroot/rating.

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

      И это еще не все, для сохранения изменений нам необходимо "зафиксировать" исходные тексты, файлы, каталоги командой commit.

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

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

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

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

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

      В первом случае при помощи все того же Tortoise CVS мы выполняем получение свежей копии исходников через checkout.

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

      В дальнейшем работа аналогична вышеописанной, не забываем делать commit.

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

      Заходим в шелл хостинга. обычно я использую отдельную копию cvs, и отдельную копию самого сайта. Ниже я приведу свой скрипт для синхронизации исходных текстов сайта на хостинге:

      ### -------------- checkout rating --------------------

      export CVSROOT=:pserver:nexus@gate-vasil.it.group:/home/cvsroot
      ## строка подключения с указанием сервера, пользователя и cvsroot
      cvs login ## заходим, вводим свой пароль
      cd /www/ ## дир-рия для сайтов на хостинге
      cvs co -r HEAD rating ## получение той самой release копии
      chown -R rating:suwww rating ## выставляем правильного пользователя и группу
      cp -R /www/rating/* /www/rating.com.ua/ ## копируем в рабочее пространство сайта
      chmod -R 775 /www/rating.com.ua/www/img/ ## для аплода картинок необходимы спец права
      ### ------------------------------------------------------

      Если все шаги выполнены правильно, то мы будем всегда без проблем и избыточного трафика (будут скачаны только обновленные компоненты) иметь самую свежую копию сайта в любом, нужном нам месте. Кроме того рекомендую выбрать для себя подходящего cvs клиента, и изучить advanced темы по использованию cvs, среди которых:

      * генерация changelog
      * автогенерация версионной информации в исходных кодах (см. $Exp$)

      и многое другое!

      Желаю творческих успехов в создании нужных, красивых и удобных сайтов.

      Комментариев: 2
      © Максим Прокопов 2005-2024 О сервере