Apache2+Subversion

A bejegyzésből megtudhatod, hogy hogyan lehet saját verziókezelő rendszert telepíteni. Az alaprendszer egy debian10 (buster) linux szerver.

Telepítés

Először telepítsük fel a szükséges csomagokat:

apt install apache2 apache2-utils subversion libapache2-mod-svn

Ellenőrizzük, hogy a szükséges modulok engedélyezve vannak-e:

a2enmod dav dav_svn

Beállítások

A subversion verziókezelőhöz hozzunk létre egy tárolólt:

svnadmin create /tároló/útvonala/projekt

Adjuk hozzá a www-data felhasználóhoz a tárolót:

chown www-data.www-data -R /tároló/útvonala/

Majd konfiguráljuk az apache számára a virtualhost állományt, persze az egyes értékeket módosítsuk a saját igényeinknek megfelelően:

nano /etc/apache2/site-available/snv.conf
<VirtualHost *:80>
                ServerName svn.example.com
                ServerAdmin postmaster@example.com
                ErrorLog ${APACHE_LOG_DIR}/svn_error.log
                CustomLog ${APACHE_LOG_DIR}/svn_access.log combined
                <Location />
                        DAV svn
                        SVNPath /tároló/utvonala
                        AuthType Basic
                        AuthName "Example SVN Repo"
                        AuthUserFile /etc/subversion/passwd
                        Require valid-user
                </Location>
</VirtualHost>

Mielőtt engedélyeznénk a beállításokat az apache részére, gondoskodjunk a biztonságról, hogy csak meghatározott felhasználók férhessenek a tárolóhoz:

sudo htpasswd -c /etc/subversion/passwd felhasználó_neve

Most már jöhet az apache:

a2ensite svn && systemctl daemon-reload && systemctl reload apache2

Subversion tároló létrehozása után beállíthatja a hozzáférés-felügyeletet a tároló/útvonala/projekt/conf/svnserve.conf fájl szerkesztésével. A hitelesítés beállításához például a beállítófájl következő sorait kell kivenni megjegyzésből:

# [general]
# password-db = passwd

A fenti sorok aktiválása után a passwd fájlban tarthatjuk karban a felhasználók listáját. Ugyanabban a könyvtárban szerkesszük a passwd fájlt, és vegyük fel az új felhasználót. A szintaxis a következő:

felhasználónév = jelszó

Kész is vagyunk, tovább finomíthatjuk a konfigunkat azzal, hogy az Let’s Encrypt ssl tanúsítványával védjük a hozzáférést.

Kiegészítés

A korábbi svn tárolómat átköltöztettem, és ha már így alakult akkor ehhez a docker-t használtam. Töltsük le az image-t, készítsünk belőle konténert, majd rögtön futtassuk is azt:

docker run -d --restart=always -p 8088:80 -v svn:/home/svn --name svn-server krisdavison/svn-server:v3.0

Az image-ről bővebben ezen a weboldalon található információ. Szükség lesz még némi módosításra, mivel az svn volume-n egy SampleProject minta tároló érhető el. Ez töröljük és másoljuk be a saját tárolónk tartalmát, a jogosultságokra figyeljünk. Majd lépjünk be a futó konténerbe:

docker exec -it svn-server bash

Az /etc/apache2/mods-enabled könyvtárban van egy dav_svn.conf nevű fájl. Nyissuk meg, és a tartalmát cseréljük ki:

<location />         
                DAV svn
                SVNPath /home/svn/
                AuthType Basic
                AuthName "Example SVN Repo"
                AuthUserFile /etc/subversion/passwd
                Require valid-user
</location>

Vegyük észre, hogy az SVNPath ez esetben már adva van, a /home/svn könyvtár van összerendelve a docker svn volume-val.
Mentsük a tartalmat, majd másoljuk at a ../mods-available könyvtárba. Tiltsuk, majd engedélyezzük újra a modulokat:

a2dismod authz_svn && a2dismod dav_svn && service apache2 restart a2enmod authz_svn && a2enmod dav_svn && service apache2 restart

Ezután hozzuk létre a csatlakozásra jogosult felhasználónkat, persze a user-name részt cseréljük a saját felhasználói nevünkre:

htpasswd -c /etc/subversion/passwd user-name

A program bekéri a jelszót. Exit paranccsal kiléphetünk a konténerből, és ha mindent jól csináltunk, akkor a http://localhost:8088 linken el kell tudnunk érni az SVN tárolónkat.