Виникла в мене потреба в використанні на сервері системи контролю версій і багтрекінг системи. Так як локально я використовую svn, то і на сервері вирішив ставити svn.
SVN або Subversion – вільна централізована система контролю версій. Нещодавно (19 липня 2008) року вийшла нова версія 1.5.
Trac – гарна багтракінгова система і інструмент для керування проектами. Написана на python. В наступній версії обіцяють зробити можливість локалізації через gettext.
Ставив я це все щастя на свій VDS від RuWeb. Керувався офіційною документацією і статтею “Установка и настройка SVN сервера с доступом к репозиториям по http протоколу“. Тільки я налаштовував не як піддомени, а як директорії – http://myprojects.com/svn/ і http://myprojects.com/trac/.
Все поставилось нормально. Спочатку налаштував користувачів, створив групи, роздав права. Потім створив на сервері репозиторій і залив туди останню версію проекта. На локальній машині зробив check out, вніс певні зміни і спробував зробити commit. От тут і почалися приколи:
Commit failed (details follow): PUT of bla-bla-bla/css/style.css 405 Not Allowed
Спробував комітити з сервака – нормально… І Сашка (Олександр Занічковський) з своєї консолі нормально закомітився. Почали гуглити. Сашка знайшов в кеші google статтю “Моя борьба с SVN” де автор описує аналогічну проблему. Як виявилося крайнім був nginx, який кешує всі статичні файли (css, js, jpg, gif і т.д.). Поправив в nginx.conf правило для директорії svn і все нормально запрацювало!
Привожу шматок статті, так як блог автора не працює, а в кеші гугля вона надовго не затримається:
Но — как оказалось, не все. Я не смог сделать 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.
И это наконец-то получилось. Так что теперь можно было работать спокойно, ну, и написать об этом заметку в блог.
Після цього був ще один прикол з Trac. Якщо прописати в httpd.conf налаштування, як в статті, то тоді будуть проблеми з logout. Тобто я натискаю logout і все одно залишаюсь авторизованим. Вирішується пробема наступним правилом:
<Location /trac> SetHandler mod_python PythonInterpreter main_interpreter PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /path/to/trac PythonOption TracUriRoot /trac </Location> <LocationMatch "/trac/[^/]+/login"> AuthType Basic AuthName "stfalcon TRAC server" AuthUserFile /path/to/password/file Require valid-user </LocationMatch> |
Але тепер на trac може зайти будь хто. Ця “проблема” вирішується налаштуванням прав для неавторизованих користувачів в trac-admin (я залишив для них тільки можливість читати wiki).
Ну ніби все. Думаю в когось можуть виникнути схожі проблеми і мій досвід їм допоможе.
Я в таких випадках все-таки надаю перевагу стороннім сервісам які пропонують вже налаштовані SVN з Trac чи ще чимось. Типу assembla.com. Звісно, мінус, що не ти цим керуєш, зате поки все працює – набагато менше мороки 🙂
graywolf, мені не сподобалась assembla. тай не те це зовсім… на свому сервачку ти сам собі хазяїн. хочу так налаштував, хочу по другому.
на post-commit хук почепив, який робить update тестової версії сайту і update живого сайту, якщо версія стабільна. плагінів пару до трака поставив, які час рахують. і т.д.
Ясно… Ну, я, мабуть, менш вибагливий просто 🙂