Child pages
  • Subversion
Skip to end of metadata
Go to start of metadata

Subversion

Fejlesztésekhez jól jön egy verziókövető rendszer, amelyre én a Subversion-t (röviden svn-t) használom, az svn jail feladata, hogy futtassa ezt a programot. Hozzuk létre, és a ejtsük meg a már megszokott tevékenységeket, majd telepítsük fel a subversion programot (kell majd MOD_DAV_SVN és SVNSERVE_WRAPPER). Mivel kiválasztottuk a mod_dav_svn készítését, ezért függőségben feltelepülne egy Apache kiszolgáló is, amely majd a DAV elérést adja, de mivel az svn használatához elég a 2.0.x verzió, ezért inkább tegyünk fel előre egy 2.2.x verziót (a BDB opciót válasszuk ki!), ha már mindenhova azt tettünk... (smile)

Kezdjük azzal, hogy ide is felmásoljuk a mod_logging.conf és a mod_vhost.conf állományokat (lásd Web), mivel itt is azt szeretnénk, hogy a logserver kapja a naplóbejegyzéseket, illetve szeretnénk virtuális hosztokat kezelni. Ezen túl az svn repó elérését az alábbiak szerint tudjuk beállítani:

/usr/local/etc/apache22/Includes/hu.javaforum.svn.conf
## svn.javaforum.hu
<VirtualHost *:80>
    ServerAdmin auth.gabor@javakocsma.hu
    ServerName svn.javaforum.hu
    DocumentRoot /usr/local/www/apache22/data/
        
    <IfModule dav_svn_module>
        <Location "/svn">
            DAV svn
            SVNParentPath /data/svn
            SVNListParentPath on
            DefaultType text/plain
            
            Satisfy Any
            Require valid-user
                    
            <IfModule authz_svn_module>         
                AuthzSVNAccessFile /data/svn/access.conf
            </IfModule>
            
            AuthType Basic
            AuthName "Java Forum 2.0 Subversion Repository"
            AuthUserFile /data/svn/passwd
       </Location>
    </IfModule>
</VirtualHost>

Három lényeges beállítást láthatunk itt:

  • SVNParentPath, amely megmondja, hogy hol találhatók a repók
  • AuthzSVNAccessFile, amely megmondja, hogy hol van az az állomány, ahol a hozzáférési jogokat tároljuk
  • AuthUserFile, amely megmondja, hogy a felhasználókat és jelszavakat hol tároljuk

Az Apache és az svn beállítása nagyon jól dokumentált, ezért nem részletezném a többit (repó létrehozása, stb.), ellenben az rc.conf állományba több sort is írnunk kell:

/etc/rc.conf
apache22_enable="YES"

svnserve_enable="YES"
svnserve_data="/data/svn/"
svnserve_user="www"
svnserve_group="www"
svnserve_flags="-d --listen-port=3690 --listen-host=svn.jails.javaforum.hu"

Az Apache futását kívül engedélyezzük az svnserve futását is, amely az svn saját protokollján is hozzáférést enged a repókhoz.

Subversion Access Manager

Az svn kezelhető parancssorból is, hiszen egy szöveges állományt kell csak kezelni, illetve a jelszavakat a htpasswd segítségével, de célszerűbb erre egy PHP alapú webes program, mint amilyen például a http://sourceforge.net/projects/svn-access-mana/ címről letölthető SVN Access Manager, amely sajnos máig nincs a Ports adatbázisban.

A már telepített MySQL-t fogjuk használni hozzá, ezért első lépésként hozzuk létre a szükséges felhasználót és adatbázist (a mysql jail-ben):

MySQL parancssor
mysql> CREATE DATABASE svnadmin;
Query OK, 1 row affected (0.02 sec)

mysql> CREATE USER 'svnadmin'@'192.168.%' IDENTIFIED BY 'svnPass';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT USAGE ON *.* TO 'svnadmin'@'192.168.%' IDENTIFIED BY 'svnPass' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON `svnadmin`.* TO 'svnadmin'@'192.168.%';
Query OK, 0 rows affected (0.00 sec)

A PHP program miatt szükséges a php5 csomag telepítése (APACHE és MULTIBYTE opciókkal, illetve a php5-session, a php5-mysql és a php5-gettext csomag is szükséges. A letöltött programot csomagoljuk ki a /data könyvtárban, és hozzuk létre egy virtuális hoszt fájlt az Apache számára. Ezek után a http://svnadmin.javaforum.hu/install/install.php címen be tudjuk állítani a szükséges konfigurációs adatokat.

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