Tworząc projekt informatyczny (acz nie tylko) często napotyka się problemy typu, związane z kontrolą wersji, czy nawet robienia kopii zapasowych poszczególnych programów. Jest wiele metod do wykonania kopii (jak i również kontrolować wersję), można wykorzystać zewnętrzny dysk, lub inny katalog, w nim tworzyć katalogi z datami i do niego kopiować całość projektu. Rozwiązanie to jest w miarę proste, acz nie wygodne.
Inną metodą jest stworzenie własnego serwera SVN, zasada działania jest bardzo podobna jak powyższe kopiowanie, jednak można kopiować w ciągu dnia bardzo dużą ilość razy pliki (w zależności od klienta, ale przeważnie za pomocą 2-3 kliknięć), kopiowane są tylko zmienione pliki, dzięki czemu nawet po dłuższym użytkowaniu archiwum nie rozrośnie się do gigantycznych rozmiarów.
Jak przygotować taki serwer? Bardzo prosto, zademonstruję na przykładzie FreeBSD.
1. instalujemy serwer Apache (2.0/2.2 – obojętne), do tego celu przechdzimy do katalogu:
cd /usr/ports/www/apache22 (instalujemy komendą: make install clean), ważną rzeczą jest aby w momencie gdy pojawi się ekran konfiguracyjy zaznaczyć:
BDB Enable BerkeleyDB dbm
Resztę opcji wg dowolności każdego użytkownika.
Gdy serwer jest już zainstalowany, chcielibyśmy aby uruchamiał się razem z systemem (lub nie, wtedy omijamy ten krok)
echo 'apache22_enable=”YES”’ >> /etc/rc.conf
2. Zainstalujmy teraz system SVN, w tym celu wykonujemy następujące kroki:
cd /usr/ports/devel/subversion , po czym make install clean
tutaj ważną opcją jest:
MOD_DAV_SVN mod_dav_svn module for Apache 2.X
Również trzeba ją zaznaczyć, aby serwer mógł działać poprawnie.
Mamy zainstalowane wszystkie składniki, sprawmy aby razem zaczęły działać.
Należy wybrać katalog w którym całość danych będzie składowana, ja je składuję w
/usr/local/www/apache2/data/svn/ są różne miejsca gdzie można to robić, każde z nich jest dobre.
Tak więc tworzymy katalogi:
mkdir -p /usr/local/www/apache2/data/svn
mkdir -p /usr/local/www/apache2/data/svn/default/trunk
mkdir /usr/local/www/apache2/data/svn/default/branches
mkdir /usr/local/www/apache2/data/svn/default/tags
Należy skopiować do katalogu apache pliki xsl i css, aby z poziomu przeglądarki można było przeglądać archiwum… nigdy nie wiadomo, kiedy i gdzie będziemy chcieli z niego skorzystać.
cp /usr/local/share/subversion/xslt/* /usr/local/www/apache22/data/
Pliki kopiujemy do głównego katalogu apacha, ale można do tego wykorzystać dowolny inny.
Nie chcemy, również aby osoby nie powołane miały dostęp do naszego katalogu. W tym celu zabepieczymy go podstawowym (acz wystarczająco dobrym) zabezpieczeniem w postaci „base autoryzation”
mkdir /usr/local/www/apache2/data/svn/access
touch /usr/local/www/apache2/data/svn/access/users
htpasswd -mb /usr/local/www/apache2/data/svn/access/users użytkownik hasło
Gdy te elementy mamy gotowe, można poinformować apache co chcemy aby zrobił z naszym serwerem SVN
ee /usr/local/etc/apache2/httpd.conf i dodajemy wpis (można przy końcu)
<Location /svn>
DAV svn
SVNParentPath /usr/local/www/apache22/data/svn/repos
SVNIndexXSLT „http://server/svnindex.xsl”
# anonymous first
Require valid-user
# authenticating them valid ones
AuthType Basic
AuthName „Tylko dla wtajemniczonych!”
AuthUserFile /usr/local/www/apache22/data/svn/access/users
</Location>
należy uruchomić (ponownie) serwer, aby zmiany zostały zaktualizowane:
/usr/local/etc/rc.d/apache22 (re)start
i można stworzyć przykładowe archiwum (w ten sposób można utworzyć dowolną ich ilość):
mkdir /usr/local/www/apache2/data/svn/repos
svnadmin create /usr/local/www/apache2/data/svn/nazwaProjektu
svn import /usr/local/www/apache2/data/svn/default file:///usr/local/www/apache2/data/svn/repos/nazwaProjektu -m „Initial Import”
ostatnie modyfikacje i poprawki:
chown -R www:www /usr/local/www/apache2/data/svn (tą komendę trzeba wykonać zawsze gdy, dodamy kolejny projekt)
chmod 600 /usr/local/www/apache2/data/svn/access/*
System SVN jest gotowy do działania..