Child pages
  • Subversion kiszolgáló
Skip to end of metadata
Go to start of metadata

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:

/etc/httpd/conf.d/subversion.conf
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:

/var/www/svn/access.conf
[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:

/home/backup/svn/svn_backup.sh
#!/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. (smile)

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels