SVN szerver Apache és WebDAV segítségével
A következő leírásban bemutatom, hogyan tudunk Gentoora Apache és WebDAV alapú SVN (subveriosn) kiszolgálót építeni, hogy könnyen kezelhessük saját fejlesztéseinket.
Apache telepítése
Telepítsünk fel egy Apachet DAV támogatással. Ehhez az /etc/make.conf fálba írjuk be a következő sort:
APACHE2_MODULES="${APACHE2_MODULES} dav dav_fs dav_lock"
Ha így adjuk meg, akkor az alapértelmezett modulokhoz adja hozzá a dav modult.
Tersmézetesen egyesével is megadhatjuk a modulokat, Én a következőket használom:
APACHE2_MODULES="alias auth_basic authn_alias authn_default authn_file authz_default authz_groupfile authz_host authz_owner authz_user autoindex dav dav_fs dav_lock dir expires headers info log_config mime mime_magic negotiation rewrite status vhost_alias"
Ezután forgassuk le (vagy újra) az apacheot:
emerge -av apache
Subversion telepítése
Telepítsük a subversiont. Alapértelmezetten nem települ apache támogatással, így azt mondjuk meg neki mi. Nyissuk meg szerkesztésre az /etc/portage/package.use fájlt, majd az alábbi sort írjuk be a végére:
dev-util/subversion apache2
Majd forgassuk le a subversiont:
emerge -av dev-util/subversion
Ha kész a forgatás, akkor hozzunk létre egy /var/svn nevű mappát (ha nem jönne létre) és állítsuk be, hogy az apahe felhasználó és csoport legyen a tulajdonosa:
mkdir /var/svn
chown apache:apache -R /var/svn
Még ne hozzunk létre egy repot se, azt majd később. Egyelőre csak indítsuk el az svn szervert
/etc/init.d/svnserve start
Ha gondoljuk állítsuk be, hogy automatikusan induljon el:
/etc/init.d/svnserve start
Apache beállítása
Most, hogy megvan az SVN szerver, állítsuk be az Apacheot, hogy kiszolgálja WebDAV-on keresztül az SVN tárolókat.
Nyissuk meg szerkesztésre az /etc/conf.d/apache2 fájlt, majd keressük meg azt a sort, amelyik APACHE2_OPTS szöveggel kezdődik. Ide, a záró idézőjel után írjuk be a következőket:
-D SVN -D SVN_AUTHZ -D DAV
Nálam így néz ki a teljes sor:
APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D STATUS -D PHP5 -D AUTHNZ_EXTERNAL -D SVN -D SVN_AUTHZ -D DAV"
Majd nyissuk meg annak a vhostnak a konfigurációs fájlját, ahol el szeretnénk érni a repókat és másoljuk be a következőt:
<Location /repos>
DAV svn
SVNParentPath /var/svn
SVNListParentPath on
</Location>
Az SVNListParentPath opció hatására ha a böngészőnkbe csak a sajatdmain.tld/repos címet adjuk meg, akkor kilistázza a létező repókat, ellenkező esetben 403-at kapunk arra a címre.
Igény szerint elláthatjuk jelszavas védelemmel, pl. a rendszer felhasználóit használva.
SVN repok létrehozása
svnadmin paranccsal tudunk repokat létrehozni, kezelni. Vagy itt egyszerű szkript, melynek csak a repo nevét kell megadni, majd mindent létrehoz és beállít ahogy kell:
#!/bin/bash
#Függőségek:
#app-shells/bash (bash)
#sys-apps/coreutils (mktemp,...)
#dev-util/subversion
if [ ! -d /var/svn/ ] ;then
echo "Hiba: Nem találom az /var/svn mappát"
exit 1
fi
if [ -z $1 ] ;then
echo "Használat: $0 <repo-neve>"
exit 1
fi
if [ -d /var/svn/$1 ] ;then
echo "Hiba: /var/svn/$1 repo már létezik"
exit 1
fi
echo "Repo létrehozása..."
svnadmin create /var/svn/$1
echo "Alapértelmezett mappák létrehozása..."
TDIR=`mktemp -d`
cd $TDIR
mkdir -p {trunk,tags,branches}
echo "Initial import..."
svn import -q -m "Initial Import" --non-interactive $TDIR file:///var/svn/$1
echo "Jogosultságok beállítása..."
chown -R apache /var/svn/$1
echo "Takarítás..."
rmdir $TDIR/{trunk,tags,branches}
rmdir $TDIR
echo "Kész!"