Denwer и SVN. Дружим!

    Intro.

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

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

    Что нужно?


    Denwer.
    www.denwer.ru

    SVN (Tigris)
    subversion.tigris.org
    svn-win32-1.x.x.zip

    Устанавливаем, настраиваем


    1. Устанавливаем Денвер (Для тех, у кого он установлен, данный пункт смело опускается).
      Будем считать, что папка, в которую был установлен денвер будет в дальнейшем именоваться, как [Папка Денвера]
    2. Создаем в папку для бинарников SVN (я считаю, что будет лучше, если она будет храниться со всем скарбом джентльменского набора).
      Пусть это будет [Папка Денвера]\usr\local\svn.
      Распаковываем содержимое архива svn-win32-1.x.x.zip в созданную папку.
    3. Копируем из папки [Папка Денвера]\usr\local\svn\bin файлы mod_dav_svn.so, mod_authz_svn.so в папку модулей Apache ([Папка Денвера]\usr\local\apache\modules) и файлы intl3_svn.dll, libdb44.dll в папку к бинарникам Apache ([Папка Денвера]\usr\local\apache\bin)
    4. Создаем еще одну папку для нашего будущего репозитория.
      Пусть это будет [Папка Денвера]\repository.
    5. Добавляем требуемые переменные среды.
      PATH=%PATH%; [Папка Денвера]\usr\local\svn\bin
      APR_ICONV_PATH= [Папка Денвера]\usr\local\svn\iconv
    6. Создаем репозиторий. В командной строке в папке [Папка Денвера]\repository выполняем следующую команду:
      >svnadmin create [Имя репозитория]
      Можно создать таким образом несколько различных проектов.
    7. Настраиваем репозиторий для работы в несколько рук или иных конечностей.
      1. Создаем пользователей репозитория.

        htpasswd.exe -cm [Папка Денвера]\usr\local\svn\svn-auth [имя пользователя]
        htpasswd.exe -m [Папка Денвера]\usr\local\svn\svn-auth [еще одно имя пользователя]

      2. Настраиваем права доступа.
        Создаем файлик [Папка Денвера]\usr\local\svn\svn-acl
        Будем считать, что у нас созданы пользователи (п. 7.1.) user1, user2, user3, user4 и проекты project1 и project2. Первые 2 пользователя работают в команде над первым, закрытым проектом, остальные — над открытым для просмотра вторым проектом.

        #---- svn-acl ----
        #Группы доступа.
        [groups]
        team1 = user1, user2
        team2 = user3, user4

        # доступ только для первой группы – RW (чтение, запись)
        [project1:/]
        @team1 = rw

        #доступ для второй группы – RW (чтение, запись) и для всех остальных – R (чтение)
        [project2:/]
        @team2 = rw
        *=r
        #--------
      3. Создаем файл конфигурации для APACHE2
        [Папка Денвера]\usr\local\svn\subversion.conf
        #---- subversion.conf ----
        # модули для работы SVN
        LoadModule dav_module modules/mod_dav.so
        LoadModule dav_fs_module modules/mod_dav_fs.so
        LoadModule dav_svn_module modules/mod_dav_svn.so
        LoadModule authz_svn_module modules/mod_authz_svn.so

        # Наш репозиторий одного из проектов будет располагаться по адресу
        # localhost/svn1, второй - localhost/svn2.
        # Для удаленных хостов данные репозитории будут доступны по IP адресу хоста,
        # на которой запущен #denwer (http://192.168.0.1/svn1)
        #
        <Location /svn1>
        DAV svn
        SVNListParentPath on
        SVNPath [Папка Денвера]/svn/project1
        AuthType Basic
        AuthName "Subversion repository"
        AuthUserFile [Папка Денвера]/usr/local/svn/svn-auth
        Require valid-user
        AuthzSVNAccessFile [Папка Денвера] /usr/local/svn/svn-acl

        <Location /svn2>
        DAV svn
        SVNListParentPath on
        SVNPath [Папка Денвера]/svn/project2
        AuthType Basic
        AuthName «Subversion repository»
        AuthUserFile [Папка Денвера]/usr/local/svn/svn-auth
        Require valid-user
        AuthzSVNAccessFile [Папка Денвера] /usr/local/svn/svn-acl


    Добавляем конфигурацию в Apache, в конце файла httpd.conf дописываем строчку:
    Include ../../svn/subversion.conf
    Запускаем денвер и пробуем зайти по адресу localhost/svn1
    Вуа-ля!
    Поделиться публикацией

    Похожие публикации

    Комментарии 62

      –4
      А зачем такое извращение? Denwer и SVN я имею ввиду. Вот не понимаю жизненной необходимости использовать обрезанные дистрибутивы, в которых даже PDO нормально не впаяешь, не говоря уже о других модулях, которые просто-напросто выкинуты оттуда.
        0
        Ну, вообще все эти манипуляции - использование нескольких проектов, и постоянное перетаскивание всего сервера с места на место. Такое бывает.
          –1
          Если уже все и так на SVN, что и куда Вы перетягиваете?
            0
            Представь себе такую ситуацию: работа происходит в разных офисах в закрытых интранет сетях. То в одном, то в другом.

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

            Не суди строго. У меня есть целый ряд причин, почему я избрал именно Денвер, и очень благодарен разработчикам.
              –3
              Надеюсь, что начинали не с Денвера и хотя бы пару раз собрали все руками, отдельно.
                0
                :) пожалуй, моего опыта достаточно. Собран и работает не один сервер. К сожалению пока что не успел столкнуться лицом к лицу с PDO.
                  0
                  У Вас сервера - на винде чтоли? PDO - это удобно. Освойте, советую.
                    0
                    :)) Спасибо, при случае и нужде обязательно попробую!
                  0
                  Почему это начинать с денвера это моветон? Скажем, профессиональные гонщики начинают с картинга, паращютисты сначала тренируются на земле и т.д. Что собрать своими руками сервер полезно я согласен, но что начинать с этого - нет. Имхо, это всё равно что начинать знакомиться с компьютером со сборки ядра линукса. Познавательно, но вот это время можно потратить с большей пользой.
                  0
                  полностью поддержу автора статьи. С выходом denwer 3 он стал очень корректно работать и в практике как быстрое приложение без заморочек и настройки зарекомендовал себя на 5+. Например вам нужно срочно проверить работу скрипта, зачем изобретать велосипед? :) Далее про репозитории, они плотно вошли в моду. Я практикую их уже более года и таки был период в жизни, когда захотелось свой портативный. Собирал руками и в принципе остался доволен за исключения портативности, т.е. ставил phyton и кучу запорочек (не буду подробно :) ). Данное решение простое и уверен, что оно будет многим полезно. Автору спасибо!
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      да SVNу тоже не нужен, он прекрасно без http-доступа работает
                0
                а что, сложно скачать нужную версию РНР и развернуть туда? или скачать дополнение к дистру денвера?
                  –2
                  Ну разверните PDO на Денвере. Я что-то не слышал, чтобы кому-то это удалось.
                    0
                    А проблема то в чем? Объясните несведущему.
                      –2
                      Разверните - посмотрите.
                        –2
                        P.S. Я могу пояснить почему, но я хочу, чтобы Вы сами приобрели этот скилл и поняли, что Денвер и PDO несовместимые вещи.
                          0
                          К сожалению, у меня не так что бы много времени, именно для этого я и задал данный вопрос. И мне действительно любопытно, по какой такой причине данная операция не возможна?

                          Либо вы тут мне пудрите мозг, либо не совсем понимаете, зачем был написан пост: Для экономии драгоценного времени разработчиков. Любого опыта и любого уровня.
                            –2
                            См. ниже. Возможно уже исправили, по-крайней мере я не нашел поиском по багам в их форуме.

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

                            Насчет Вашего поста я не спорю - меня заинтересовало почему Вы используете Денвер.

                            А вот насчет экономии времени для разработчиков любого уровня - спорное утверждение. Я не знаю ни одного гуру, который бы использовал Денвер для разработки. Делайте выводы.
                              0
                              >меня заинтересовало почему
                              >Вы используете Денвер.

                              Потому что я счастливый пользователь Виндоус! :)
                              Потому что в локальной сети, прежде чем проект попадет на непорочную *nix платформу гораздо быстрее разрабатывать. Предложите альтернативы или доводы, почему не следует использовать данный продукт, против которого вы так отрицательно настроены. Может быть я и новичок по сравнению с вами, но мои проекты себя чувствуют прекрасно, будучи первоначально разработанными и протестированными на Денвере.
                                –2
                                1) Я тоже пользователь Windows
                                2) Это не отменяет того, что на винде у меня все установлено раздельно
                                3) Это не отменяет того, что у меня есть сервер под FreeBSD, где также все собрано руками.

                                Теперь почему не следует использовать данный продукт:

                                1) Читаем список багов
                                2) Смотрим какие проблемы имеют люди, впаивая элементарное php_pdo_sqlite, когда оно на любом пхп, установленном раздельно с апачем заводится с полпинка.
                                3) думаем о том, что не всегда у Вас сервера будут на винде и какие проблемы будут там ожидать, если все сделано и заточено под Денвер.

                                Список можно продолжать.
                                  +1
                                  Денвер, это не продукт отдельный, а всего лишь сборка сервера Apache, Mysql и PHP с определенной конфигурацией. Своими словами "глючный, не работает" вы говорите всего лишь о неправильной конфигурации. Все конфигурируется. Это в буквальном смысле тоже самое, что и поставить каждый из данных сервисов отдельно. Но с минимальными дисковыми потерями.

                                  Говоря "не работает" подразумеваете, что "PHP | Apache | MySQL" под виндоус написан не правильно и не совместимы друг с другом? :)
                                    –3
                                    О боже. Нет, я не буду больше продолжать. Вы не пытаетесь думать.

                                    Опыт Вас научит, желаю, чтобы он был по-мягче, чтобы Вам было проще на этом пути.

                                    На этом откланиваюсь, не имею времени и желания прописные истины рассказывать. С опытом прийдет само к Вам.
                                      0
                                      "с определенной конфигурацией" это очень важно. Как программист вы должны понимать что магически около 50 мб упаковать в 5 мб нельзя.
                                        0
                                        ну вообще когда у всех уже валяются жесткие по 500ГБ забитые всяким видео и музыкой экономить какие-то 40 мб кажется странным.
                                        Зачем вам денвер кстати? Когда AMP есть скомпилированный для windows, с собственными инсталяторами, сервер можно поднять так же быстро.
                                          0
                                          А зачем мне ставить отдельно Apache, MySQL и т.п. если я свою машину не использую для хостинга?
                                          Я поставил Денвер. Все быстро и без заморочек.
                                          Тем более что очень легко все это дело из дома таскать на работу и обратно.
                                          Кстати, его глюков на себе ни разу не ощутил. И добиваться их искусственно не собираюсь.
                                          А SVN, туда очень даже кстати придется. Обязательно попробую как вернусь из отпуска.
                                          Автору - спасибо!
                                            +1
                                            У Денвера есть одна неповторимая просто фича: доменное имя за 10 секунд. Создал 2 папки: "My.own.domain.name/www". >Restart.

                                            zaooza!
                                            Я от этой фичи в восторге.
                                              0
                                              Кстати по поводу винтов в 400 мегабайт :)
                                              Жто еще не оправдание. Таскаю сборку "сервера" на флешке. И там мегабайты имеют роль. Пусть я жлоб, но на флешке место играет роль :) Пока что будет так.
                                                0
                                                в случае с флешкой объем влияет больше не сам по себе, а в пересчете на время копирования.
                                                  0
                                                  Ну да, и как обычно каждый из проетов состоит их нескольких тыщ маленьких файлов...
                                0
                                у меня работает, этого достаточно?
                                  –1
                                  Возможно уже исправили. Ранее такая проблема точно была.

                                  Но даже если не брать в учет это - можно посмотреть сюда http://forum.dklab.ru/denwer/bugs/ - там же море багов..

                                  Да и тут - http://forum.dklab.ru/denwer/todo/

                                  Первое, что кинулось в глаза - нельзя из конфига управлять AddDefaultCharset. http://forum.dklab.ru/denwer/todo/Sdelat…

                                  Вы любите дистрибо-зависимые баги? Я - нет. Мне намного приятнее юзать апач и знать, что то, что я в нем пропишу - будет работать, чем каждый раз думать "а заведется ли то, что мне нужно".
                                    0
                                    AddDefaultCharset работает у меня :) Использовал совсем недавно. Перенес один проект в UTF-8. Дописал .htaccess и все.

                                    Вот признайся чесно - тебе просто нужно доказать собственную правоту. :)
                                      –1
                                      http://forum.dklab.ru/denwer/todo/Sdelat… - тут же у людей проблемы и записано в ToDo, значит проблема таки существует.

                                      То, что у Вас работает - может говорить только о том, что у Вас другая версия, а сама зависимость от версии - это уже лично меня, как разработчика - очень смущает.

                                      PS. Я не пытаюсь доказать ничью правоту, я призываю к разуму и логике, что никогда кастомный продукт не будет лучше и удобнее, чем несколько официально разрабатываемых, которые можно завести вместе с полпинка, при этом не издеваясь над собой с решением очередных проблем с кастомным продуктом.
                                      0
                                      я обычно предпочитаю работать, а не тратить время на настройку чего-либо.
                                        –1
                                        А я предпочитаю не тратить время изучая баги кастомного продукта и ищя их решение. Не логично?
                                          0
                                          Все продукты "кастомны" так или иначе. Читаю Вашу переписку с самого верха, не понимая таки зачем так рьяно убеждать одно лучше другого — подсказали, посмотрели на реакцию да и будет?!
                                    0
                                    Удавалось
                                  0
                                  К Денверу прикручивается всё, что угодно… и PDO в том числе.
                                  0
                                  Спасибо, отлично!
                                  Кстати, я пробовал использовать VisualSVN Server вместе с денвером, нормально работает.
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      Для тех, кто хочет вообще понять что такое SVN, нужно еще написать как с этим SVN работать.
                                    0
                                    Есть несколько вопросов по теме:
                                    1) по-видимому, используется версия Денвера с Апачем 2 (да/нет)?
                                    2) будет ли в такой комбинации работать новая версия SVN 1.5?
                                      0
                                      1) Да, именно так.
                                      2) Очевидно, что да. Изменения в 1.5 касаются не архитектуры, а функциональности. Так что будут, куда они денутся :)
                                      0
                                      Не понимаю.
                                      Зачем морочиться с Subversion, когда под виндой есть TortoiseSVN ?
                                        0
                                        Подразумевается использование SVN при разработке веб-проектов на основе Денвера. Что бы не ставить Тортойсе.
                                        0
                                        Имеются веб-проекты (сайты и т.п.). Язык - Java.
                                        Под это дело имеется сервер с установленным Apache Tomcat.
                                        Имеются разработчики, которые пишут код.

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

                                        Основная проблема - как увязать SVN с томкатом. Т.е. как быть с папкой htdocs, из которой беруться файлы какого-либо веб-проекта? Это будет папака SVN или по какой-то команде в эту папку из SVN будет выгружаться актуальная версия...

                                        Есть где почитать об этом, может кто подскажет?
                                          0
                                          Средой какой пользуетесь? Обычно разработчики Java пользуются Eclipse. Я писал об одном прекрасном плагине FileSync для Eclipse, которым пользуюсь сам именно для этих же задач. Он из текущего WorkSpace при изменениях файла автоматом выгружает его в указанное место. Если не Eclipse, то можно пользоваться внешними утилитами, следящие за изменениями. Синхронайзеры. Кажется, правильно понял вопрос. Надеюсь, что помог.
                                            0
                                            Хорошо, скажу иначе. JAVA-ядро (CMS, framework) не меняется и всегда зпущено на сервере. Меняется информация для этого ядра (xml+xslt файлы). Обсуждается пока тока тестовый локальный сервер, на котором разработчики правят эти файлы сейчас непосредственно в htdocs (назовем эту папку так) и видят результат в браузере.

                                            Задача - перевести XML+XSLT на контроль версий, чтоб ыразработчики грамотноп ересекались и всегда были истории. Грубо говоря, как PHP+Apache, где ничего копилить не надо, поправил код php и сразу уувидел результат в браузере.
                                              0
                                              Дадада, именно об этом я и говорю.
                                              Запускается SVN (можно вышеописанным способом поднять и на томкате, никакой разницы нет, либо, запустить внешний SVN-сервис), создается репозиторий. Импортируется в него последняя версия того над чем работают пользователи, и далее ведется работа над сырцами репозитория.

                                              А что бы все сразу показывалось на сайте, из текущего воркспейса каждого из пользователей синхронизировать инлайном в запущенный сервак. Как это я делаю у себя при помощи Eclipse и плагина к нему.
                                                0
                                                Рекомендую курнуть: svnbook.red-bean.com/en/1.4/svn.ref.reposhooks.post-commit.html
                                                post-commit hook — это именно то, что вам нужно
                                              0
                                              и еще. Работа над проектом ведется непосредственно в какой нибуть внешней папке, обычно это папка "рабочей копии проекта". И только после внесения изменения автоматически попадают в папку веб-сервера.
                                              0
                                              Уже прочитав заголовок поста в ленте, понял, что в камментах будет адских холивар =)
                                                0
                                                Хотел познакомиться с работой SVN, сделал как описанов статье, но не работает :(. Оказалось, что апач в денвере не дружит с mod_dav_svn.so. Может кто подскажет где взять точно рабочую версию, например, svn-win32-1.4.x.zip для Apache/2.2.х? А то на сайте сейчас только svn-win32-1.5.1.zip можно скачать.
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    0
                                                    Это в командной строке в шелле. В досовой оболочке.
                                                    (Пуск-> выполнить->CMD)

                                                    Учитывается что в шелле вы находитесь в папке, где есть утилита htpasswd либо до нее прописаны пути.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        htpasswd.exe -> apache/bin тут должно лежать, сейчас сам пытюась поставить, застрял на конфликте с «mod_dav_svn.so»… :(
                                                    0
                                                    жаль что не указали точные версии Apache и SVN. svn 1.5.2 не работает с Apache 2.2.4 (который распространяется с Denwer 3).
                                                      0
                                                      Брался первый попавшийся Дэнвер, и настраивался соотвественно. Так что работать обязан.
                                                      0
                                                      Уже столько раз пытался настроить SVN и не получается. Уже и и Apache 2.2.9 к Денверу прикрутил, и из оригинальной документации примеры настроек подставлял (похоже хабраредактор не все строки пропустил в статье), и просто WebDAV настроил для тренировки и всё бестолку. Толи я в настройках допускаю ошибку, толи не правильно пользуюсь этим чудом, но SVN не работает. Вот если бы кто-то из продвинутых админов выложил архивчик с папкой Денвера и настроенным там SVN специально для продвигающихся, я бы ему спасибо сказал :). Уж очень хочется с SVN познакомиться.
                                                        0
                                                        Была бы возможность. Поставил бы плюс! Только, что поднял svn :)

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое