Моя борьба с 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 |
Совсем отключил nginx? Если да, то это неразумно, теперь апач полностью пригружен обработкой статических файлов, да еще и nginx болтается как прокси. В итоге нулевая польза.
Если уж так проблемно использовать SVN через nginx, то мне кажется, проще запустить встроенный SVN сервер. К стати, у меня похожий конфиг, только используется lighttpd, проблем таких не возникало…
Зачем же “совсем”? Только на том домене, который у меня SVN обрабатывает.
(а на нем пока что только SVN и крутится).
Все остальные домены, напримерр — тот, на котором живет этот блог — вполне себе работает через nginx.
Запускать svnserve — можно было бы, и я даже склонялся к этому варианту некоторое время, но это было бы неинтересно.
Вообще, если по хорошему, то нужно будет еще немного поковыряться и отключить обработку запросов nginx _только_ для директории /svn…
Но на это у меня уже сил не было к тому моменту — нужно было поднять svn-сервер, и все… А эксперементировать я буду завтра
Попробуйте вот так ставить
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
Вася: Так я как раз так и ставил.
Но — дело не в том как оно проставлено, а в том что запросы к SVN, а в частности — к ресурсам типа CSS, JS, HTML — перехватываются NGNIX-ом. Они даже не доходят до Апача.
Можно было поднять SVNSERVE, но этим я решил особо не утруждаться и просто поднять апачесвкий модуль.