Instalacja servera svn na ubuntu 10.04 /32bit
Możliwe są 3 rodzaje instalacji serwera svn:
- SVN+SSH
- SVN+Apache
- SVNServe
Ja wybrałem “SVN+Apache”.
Generalnie, instrukcje te powinny działać dla przedziału wersji ubuntu 7.x do 10.x, jednak zaznaczam że testowane było na 10.04 32bit.
Apache2 musi już działać (i być dostępne z zewnątrz (z internetu) jeśli do SVN też chcesz mieć dostęp), a program `svnadmin` powinien być zainstalowany. Wywołując ‘svnadmin help‘ sprawdzam czy działa. Jak nie, to należy doinstalować pakiet `subversion`.
Czas rozpocząć.
Tworzę katalog na repozytoria svn:
sudo mkdir -pv /var/svnRepositories
oraz nadaję my prawa 777:
sudo chmod 777 /var/svnRepositories
Na później, tworzę standardową strukturę katalogów dla projektu, gdzie “myProject” to nazwa projektu:
mkdir -pv /tmp/layout/myProject/branches/work #( tutaj trzyma się wersję rozwojową ) mkdir -pv /tmp/layout/myProject/tags #( tutaj tworzy się tagi wersji stabilnych )
Przelogowuję się na użytkownika www-data (czyli apache2), tak by przez niego stworzone pliki i katalogi miały właściciela apache2, które to apache2 później będzie pisało i czytało z repozytorium podczas korzystania z SVN):
sudo su www-data
Tworzę jedno główne repozytorium svn:
cd /var/svnRepositories svnadmin create --fs-type fsfs /var/svnRepositories/svn
Tworzę plik z uprawnieniami dostępu do wyżej stworzonego repozytorium:
cd /var/svnRepositories touch svn/conf/svn-auth-file htpasswd -cmd svn/conf/svn-auth-file bkubek
…gdzie “bkubek” to nazwa usera. Po tym trzeba wpisac hasło by je stworzyć dla tego usera.
Importuję standardowy zestaw katalogów dla projektu (stworzony w punkcie 4 )
svn import /tmp/layout http://127.0.0.1/svn -m"initial structure"
jeśli CLI zapyta o:
Hasło ‘www-data’:
to klikam “enter” by zapytał o innego usera svn, dla którego znam hasło. Dokładnie to podam mu usera “bkubek” z punktu 7. Czyli :
Obszar uwierzytelniania: Subversion repository
Użytkownik: bkubek
Hasło ‘bkubek’: #… podaję wcześniej stworzone hasło
gdy CLI zapyta mnie:
Zapisać hasło bez szyfrowania (tak/nie)?
…odpowiadam “tak”
Wychodzę z usera www-data poleceniem:
exit
Repozytorium stworzone. Teraz trzeba SVN sprzęgnąć z Apache.
Apache2 raczej posiada już MOD “dav”. Aby to sprawdzić, sprawdzam czy w katalogu:
/etc/apache2/mods-available
…istnieją pliki:
dav.load
dav_fs.conf
dav_fs.load
dav_lock.load
Powinny. Trzeba zrobić im linki symboliczne do lokalizacji:
/etc/apache2/mods-enabled
Apache2 raczej nie posiada domyślnie MODa “dav” do svn. Czyli w katalogu
/etc/apache2/mods-available
…raczej nie istnieją pliki:
dav_svn.conf
dav_svn.load
…dlatego instaluję pakiet:
sudo aptitude install libapache2-svn
Po tym sprawdzić mi należy czy te dwa pliki :
dav_svn.conf
dav_svn.load
…mają automatycznie już symlinki w:
/etc/apache2/mods-available
…i jeśli nie, to trzeba je stworzyć, z orginałów w:
/etc/apache2/mods-available
Teraz konkret sprawa: dopisanie do konfiguracji apache informacji o tym gdzie leży svn repozytorium:
sudo mcedit /etc/apache2/apache2.conf
…i dopisuję na końcu pliku :
<Location /svn> DAV svn SVNPath /var/svnRepositories/svn/ AuthType Basic AuthName "Subversion repository" AuthUserFile /var/svnRepositories/svn/conf/svn-auth-file Require valid-user </Location>
Teraz restart apache2:
sudo /etc/init.d/apache2 restart
…i wypadało by usunąć katalog:
/tmp/layout
Koniec. Serwer SVN działa
Powinien
Stawianie lokalnej kopii svn (checkout)
Ot taki bonus. Powiedzmy że chcemy nowy projekt postawić w :
/var/www/myProject/
więc jedziemy:
sudo mkdir -pv /var/www/myProject sudo chmod 777 /var/www/myProject cd /var/www/myProject
teraz wystarczy przez svn wskazać że tutaj jest nasz projekt i “z-checkout-ować” repo svn tutaj:
svn co http://127.0.0.1/svn/myProject/branches/work .
teraz można dodać i wysłać przykładowy plik do servera svn:
touch example.txt svn add example.txt svn ci -m"example file"
fine.