Main Contents

Моя борьба с SVN

April 6, 2008 by Scratch

Как вы уже знаете, я пользуюсь виртуальным выделенным серваком от FirstVDS. У меня стоит Апач (версии 2.2), и, для ускорения работы со статическим контентом (то есть картинками, CSS-ами и прочими js-никами), установлен NGNIX.

Все было бы хорошо, пока я не решил поднять на этом же сервере SVN.

Установка SVN на сервере под FreeBSD — задача, в общем-то несложная.Для начала — идем в /usr/ports/subversion/ , делаем make install clean, если появляется окошко конфигурации (а оно, к слову, появляется там только один раз) — выставляем ему MOD_DAV_SVN и NEON. Все компилится, устанавливается и так далее. В общем, все хорошо.

После этого — прописываем этот SVN в Апаче (для того чтобы можно было обращаться через http) — в конфиге апача вписываем

LoadModule dav_module         libexec/apache22/mod_dav.so
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so
LoadModule dav_fs_module      libexec/apache22/mod_dav_fs.so

После этого — создаем репозиторий (у меня он лежит в /home/svn/),
делаем svnadmin create /home/svn/project, прописываем в конфиге апача (опять таки)

<location /svn>
    DAV svn
    SVNParentPath /home/svn
</location>

Теперь делаем рестарт Апача, и все работает.

Но — как оказалось, не все. Я не смог сделать commit в новосозданный svn.
Все что я смог получить — это только

RA layer request failed
svn: Commit failed (details follow):
svn: PUT of '/svn/project/!svn/wrk/
b5bb4e7a-997a-cc42-96eb-7b4fefc8fb09/project/js/
common.js': 405 Not Allowed (http://webdeveloper.in.ua)

Сначала я решил, что проблема тут в правах доступа. Неудивительно — репозиторий-то я создавал из-под рута, а вызывается он из-под вебсервера… Хотя я и прописал chown для новосозданного репозитория, но мало ли…
Поэтому я выставил права на запись в репозиторий для всех.
Но это не помогло.
Кстати, именно это (проблема с правами доступа) было предложено в одном из списков рассылки.

Так как первое мое предположение оказалось неверным, и не решило проблемы, я продолжил поиски. И наткнулся (в другом месте) на предположение, что запрос обрабатывает кто-то другой, а не Апач.
Эту версию я и начал проверять. Я уже говорил, что у меня стоит NGNIX, для кеширования. И как раз CSS и JS он и должен кешировать.
Для начала, я попробовал закоммитить файл с расширением php, и — о чудо! это у меня получилось. Значит, проблема именно в перехвате файлов с определенными расширениями.
Значит, нужно перенастроить ngnix.

В конфигурации, которая используется на серверах FirstVDS, ngnix и Apache работают так:
все запросы идут на ngnix, и после этого все запросы, которые ngnix может обработать, он обрабатывает, а остальные — передает Апачу (который находится на другом порту).
Все что мне нужно было сделать — это запретить обработку запросов ngnix-ом, и заставить его перенаправлять все запросы на Апач. Что я и сделал.

Сразу после этого я перегрузил ngnix и попробовал залить проект в свой SVN.
И это наконец-то получилось. Так что теперь можно было работать спокойно, ну, и написать об этом заметку в блог.

Filed under: Deep Internals |

4 Comments

  1. Ali April 7, 2008 @ 10:45 am

    Совсем отключил nginx? Если да, то это неразумно, теперь апач полностью пригружен обработкой статических файлов, да еще и nginx болтается как прокси. В итоге нулевая польза.
    Если уж так проблемно использовать SVN через nginx, то мне кажется, проще запустить встроенный SVN сервер. К стати, у меня похожий конфиг, только используется lighttpd, проблем таких не возникало…

  2. Scratch April 7, 2008 @ 11:21 am

    Зачем же “совсем”? Только на том домене, который у меня SVN обрабатывает.
    (а на нем пока что только SVN и крутится).
    Все остальные домены, напримерр — тот, на котором живет этот блог — вполне себе работает через nginx.

    Запускать svnserve — можно было бы, и я даже склонялся к этому варианту некоторое время, но это было бы неинтересно.

    Вообще, если по хорошему, то нужно будет еще немного поковыряться и отключить обработку запросов nginx _только_ для директории /svn…
    Но на это у меня уже сил не было к тому моменту — нужно было поднять svn-сервер, и все… А эксперементировать я буду завтра :)

  3. Вася April 12, 2008 @ 3:12 pm

    Попробуйте вот так ставить
    http://wiki.firstvds.ru/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_SVN_%28Subversion%29_c_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC_%D0%BF%D0%BE_http

  4. Scratch April 21, 2008 @ 5:40 pm

    Вася: Так я как раз так и ставил.
    Но — дело не в том как оно проставлено, а в том что запросы к SVN, а в частности — к ресурсам типа CSS, JS, HTML — перехватываются NGNIX-ом. Они даже не доходят до Апача.

    Можно было поднять SVNSERVE, но этим я решил особо не утруждаться и просто поднять апачесвкий модуль.

Leave a comment