Среда разработки — установка и настройка usvn

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

Напишу по свежей памяти о недавном разворачивании usvn (usvn.info) как UI для управления SVN репозиториями.

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

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

Лирика

Кому  нужны только технические детали, может листать вниз.

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

Так вот и в этот раз. Во-первых, я видимо попал как раз на тот момент, когда старая команда, занимающаяся usvn прекратила работу над ним (следуя из их новостей), а какая то новая принялась. И видимо они как раз начали вникать в разработку, так как за несколько дней, которые я занимался поднятием этого дела  у себя, у них вышли 1.0.2 а затем 1.0.3 версии. Во-вторых, сайт самого usvn падал почему то каждый вечер, и даже почитать их документацию было невозможно.

Лирика закончена.

Напомню базовую систему, на которой нужно поднять usvn: freebsd, nginx, php-fpm. Nginx стоит фронтэндом. Апача пока и в помине нету.

В общем вот краткая инструкция по  быстрому поднятию нужного:

  1. Ставим apache2 (я ставил из портов — /usr/ports/www/apache22/ ), подключая обязательно модули auth_file, auth_basic, mod_dav, dav_fs, советую еще поставить mod_ssl);
  2. Ставим subversion (/usr/ports/devel/subversion), не забыв включить в опции его конфига mod_dav, остальные параметры вроде можно оставить по дефолту;
  3. При этом subversion закинет в папку /usr/local/libexec/apache22/ пару модулей для апача, необходимые для правильной работы этой системы;
  4. Правим конфиг апача. Главное — вешаем его не на стандартный 80, а на другой порт, я выбрал 433 (не путать с 443 который является дефолтным для https). Совет: если у вас по итогу не будет работать свн как нужно (например при переходе по нужному адресу будут ошибки 403, 404  и т.п., попробуйте перед директивой <location> для усвн поставить ServerRoot «/usr/local/www/usvn/files/svn/» — если сам усвн вы ставили в /usr/local/www/usvn/ и для репозиториев была указана стандартная папка). Не забываем так же вручную прописать для апача подключение модулей (добавлять после всех остальных): LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so
    LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so
  5. Настраиваем nginx для обработки нужного сайта, перенаправляя все запросы на index.php
  6. Перезапускаем nginx, apache. Если все ок, можно пробовать открывать адрес на который настроен nginx.

Не забудьте так же включить short_open_tag для php, потому что будет криво отображаться сайт усвн. Сначала на этапе установки я этого не заметил, все работало, хоть и криво, но потом пользоваться уже невозможно :-)

И еще поясню, кто не понял: сам сайт работает через nginx+php-fpm, а все что касается работы svn обслуживается модулем апача на другом порту. Таким образом менеджмент сервера выполняется с браузера, а комиты/апдейты и все остальное через адрес, например http://svn.site.ru:433/usvn/svn/

Приведу так же пример конфига апача:

Listen 433
ServerName svn.site.ru:433

LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule dav_module libexec/apache22/mod_dav.so
# ssl
LoadModule ssl_module libexec/apache22/mod_ssl.so

LoadModule dav_svn_module libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so

User www
Group www

ServerAdmin you@example.com
ErrorLog "/var/log/apache/httpd-error.log"
LogLevel warn

DefaultType text/plain

EnableMMAP off
EnableSendfile off
AcceptFilter http none

ServerRoot "/usr/local/www/usvn-1.0/files/svn"

<Location /usvn/svn>
DAV svn
SVNParentPath /usr/local/www/usvn-1.0/files/svn
SVNListParentPath off
SVNPathAuthz on
AuthzSVNAnonymous Off

AuthType Basic
AuthName "site repository"
AuthUserFile /usr/local/www/usvn-1.0/files/htpasswd
AuthzSVNAccessFile /usr/local/www/usvn-1.0/files/authz
Require valid-user
</Location>

Update: забыл добавить еще. После того как все уже было настроено, усвн отказывался создавать репозитории возвращая ошибку «Can’t create subversion repository». В итоге оказалось что все дело в том, что вызов команды svn … или svnadmin … возвращалось с 127 кодов выхода. Фикс этого: либо прописать для нужного юзера переменную окружения либо заменить команду svn -> /usr/local/bin/svn, svnadmin -> /usr/local/bin/svnadmin

После этого все работает четко =)

 

P.S. Новый пост о том, как сделать то же самое с использованием SSL (через https://).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Post Navigation