Tym razem krótkie how to z instalacją serwera SVN z dostępem przez HTTP. W Internecie jest dużo pomocy, ale jak zwykle jak sam szukałem to znalazłem bardzo dużo śmieci w postaci zainstaluj to, wpisz tamto, ale ktoś zapominał np. o podaniu poprawnej konfiguracji apache2 lub utworzeniu użytkowników. Czasem też ktoś w ogóle nigdzie nie wspominał o potrzebie instalacji apache2 (a później ktoś nieobeznany pyta dlaczego to nie działa i się okazuje, ze nie ma zainstalowanego apache2 hehe). Rodzą się pytania, których nie powinno być, a wszystko przez nieudolnie opisany sposób instalacji i konfiguracji serwera. Opisałem poniżej sposób instalacji i konfiguracji serwera, który wymaga zalogowania się do SVN. Ma to być prywatny serwer SVN, a nie publiczny. 🙂
Przejdźmy do rzeczy. Opis obejmuje obsługę przez użytkowników z pełnymi uprawnieniami (zapis/odczyt). W przyszłości opiszę sposób konfiguracji gdzie użytkownicy mają przydzielone uprawnienia do poszczególnych repozytoriów. W warunkach domowych opisana tutaj instalacja i konfiguracja jest prosta, szybka i wystarczająca.
Na początek update apt-get
apt-get update
Najpierw instalujemy apache2, subversion i libapache2-svn
apt-get install apache2 subversion libapache2-svn -y
Tworzymy katalog dla repozytoriów SVN.
mkdir /svn
Oczywiście to tylko przykład. Ja np. u siebie mam katalog na osobnej macierzy RAID1 i tam przechowuję repozytoria.
Tworzymy pierwsze repozytorium
svnadmin create /svn/project1
Teraz ustawiamy uprawnienia. Bez tego nie będziemy mieli dostępu do naszego repozytorium. Robimy to po komendzie svnadmin create ponieważ ta komenda utworzy repozytorium, ale z uprawnieniami i właścicielem root, a my potrzebujemy www-data.
chown -R www-data:www-data /svn
Przechodzimy do edycji dav_svn.conf. Używam do tego celu nano. Kto nie ma to może zainstalować (apt-get install nano -y).
nano /etc/apache2/mods-enabled/dav_svn.conf
W pliku wpisujemy konfigurację taką jak poniższa. Oczywiście jeśli ktoś ma inne ścieżki dostępu do plików/katalogu z repozytorium to wpisuje swoje.
DAV svn SVNParentPath /svn SVNListParentPath on AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user
SVNParentPath to ścieżka do katalogu z repozytoriami. Ten parametr w odróżnieniu od SVNPath pozwala na wskazanie katalogu, w którym są repozytoria. Przydatne gdy prowadzimy wiele projektów. SVNPath wskazuje tylko na konkretne repozytorium.
SVNListParentPath on – parametr, który włącza możliwość listowania dostępnych repozytoriów w SVNParentPath (np. jak wejdziemy przez przeglądarkę na adres http://adres_serwera/subversion to po zalogowaniu się pokaże się lista repozytoriów).
Tworzymy użytkownika z hasłem
htpasswd -cm /etc/apache2/dav_svn.passwd
Gdzie
Restartujemy apache
service apache2 restart
lub
/etc/init.d/apache2 restart
Nasze repozytorium powinno być dostępne pod adresem: http://adres_ip_serwer/svn/project1
Powinniśmy zobaczyć w przeglądarce:
project1 - Revision 0: / Powered by Subversion version 1.6.17 (r1128011).
Przy użyciu np. TortoiseSVN pod Windowsem możemy swobodnie robić chekcout/update i commitować dane do repozytorium przy użyciu utworzonego użytkownika.