Fejlesztőként szükséges egy verziókövető rendszer, sok lehetőség közül és a Subversion-t használom, ennek telepítéséhez két programot kell feltennünk:
# yum install subversion.x86_64 mod_dav_svn.x86_64
Ezen után szerkesztenünk kell a subversion.conf állományt az Apache Httpd könyvtárában:
# cd /etc/httpd/conf.d/ # mv subversion.conf hu.javaforum.svn.conf
Majd írjuk bele a saját konfigurációnkat:
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <VirtualHost *:80> ServerAdmin auth.gabor@javaforum.hu ServerName svn.javaforum.hu DocumentRoot /var/www/svn/ <IfModule dav_svn_module> <Location "/svn"> DAV svn SVNParentPath /var/www/svn/ SVNListParentPath on DefaultType text/plain Satisfy Any Require valid-user <IfModule authz_svn_module> AuthzSVNAccessFile /var/www/svn/access.conf </IfModule> AuthType Basic AuthName "Java Forum 2.0 Subversion Repository" AuthUserFile /var/www/svn/passwd </Location> </IfModule> </VirtualHost>
Majd hozzunk létre egy próba repository-t, megfelelő a subversion.conf állományban fellelhető példa is (fent már töröltük):
# mkdir /var/www/svn # cd /var/www/svn # svnadmin create stuff # chown -R apache.apache stuff # chcon -R -t httpd_sys_content_t stuff
Szükségünk van még a két meghivatkozott állományra, az első tárolja a felhasználóneveket és jelszavakat, amelyet a htpasswd programmal tudunk előállítani:
# htpasswd -c -b /var/www/svn/passwd testuser testpassword Adding password for user testuser # cat /var/www/svn/passwd testuser:73UHFz6bswdRY
A második állomány a hozzáféréseket szabályozza:
[stuff:/] * = r testuser = rw
És a Subversion szerverünk üzemképes, látogassunk el a megadott oldalra, jelen esetben ez a http://svn.javaforum.hu/svn/stuff/ lesz, ezt tudjuk böngészni, illetve végre tudunk hajtani rajta pár szokásos parancsot (kliens gépről):
> svn co http://svn.javaforum.hu/svn/stuff/ Checked out revision 0. > cd stuff/ stuff> ls -l összesen 0 stuff> echo "a" > testfile stuff> svn stat ? testfile stuff> svn add testfile A testfile stuff> svn stat A testfile stuff> svn ci --username testuser -m "Added testfile" . Authentication realm: <http://svn.javaforum.hu:80> Java Forum 2.0 Subversion Repository Password for 'testuser': Adding testfile Transmitting file data . Committed revision 1.
Nos, ez működik. A továbbiakban létrehozhatunk újabb és újabb repókat vagy az svnadmin `dump` és `load` parancsával exportálhatunk és importálhatunk egy-egy repót egy meglévő szerverről.
Van web alapú adminisztrációs eszköz?
Van néhány, én a svn-access-manager nevű programot preferálom, amelyből le tudunk tölteni egy rpm csomagot, majd fel tudjuk telepíteni, illetve telepítsünk egy php-pgsql csomagot is, mert szükség lesz rá:
# rpm -Uvh /tmp/svn-access-manager-0.5.5.2-1.noarch.rpm Preparing... ########################################### [100%] 1:svn-access-manager ########################################### [100%] # yum install php-pgsql.x86_64
Beállítás
Telepítés után be is kell állítanunk ezt az eszközt, amelyhez szükséges lesz egy üres PostgreSQL adatbázis, egy megfelelő felhasználóval, ezért hozzuk létre ezeket:
$ createuser svnadmin -P Enter password for new role: Enter it again: Shall the new role be a superuser? (y/n) n Shall the new role be allowed to create databases? (y/n) y Shall the new role be allowed to create more new roles? (y/n) n $ createdb -O svnadmin -E UTF-8 svnadmin
Majd a webes telepítési beállítás lépésein haladjunk át (amely folyamat közben találkozhatunk SELinux megszorításokkal): http://193.178.119.31/svn-access-manager/install/install.php
Mentés
Mindig minden adatról készítsünk rendszeres mentést, ez alól a Subversion se legyen kivétel, s a többi szolgáltatáshoz hasonlóan próbáljuk meg automatizálni a mentést.
Első lépésképp listázzuk ki a repókat:
# ls /var/www/svn/ | egrep -v "access.conf|passwd" android javaforum20 javaforum2.0 stuff # mkdir /home/backup/svn/ # vi /home/backup/svn/svn_backup.sh # chmod +x /home/backup/svn/svn_backup.sh
Ezek után már könnyű dolgunk van a script megírását illetően:
#!/bin/bash cd /var/www/svn/ for i in `ls | egrep -v "access.conf|passwd"` do svnadmin dump $i | bzip2 -c >/home/backup/svn/$i.dump.bz2 done
Futtassuk le kézzel (kicsit szószátyár, de elviselhető):
# /home/backup/svn/svn_backup.sh * Dumped revision 0. [...] * Dumped revision 1042. # ls -l /home/backup/svn/ -rw-r--r--. 1 root root 11989111 jún 29 16.13 android.dump.bz2 -rw-r--r--. 1 root root 37485835 jún 29 16.18 javaforum2.0.dump.bz2 -rw-r--r--. 1 root root 75403425 jún 29 16.15 javaforum20.dump.bz2 -rw-r--r--. 1 root root 395 jún 29 16.18 stuff.dump.bz2 -rwxr-xr-x. 1 root root 145 jún 29 16.12 svn_backup.sh
Ellenőrizzük, hogy megfelelő-e a mentés tartalma, majd állítsunk be egy script-et a `crontab -e` használatával:
MAILTO=root 23 4 * * * /home/backup/svn/svn_backup.sh
S másnap ellenőrizzük, hogy megfelelően működik-e.