The wikis are now using the new authentication system.
If you did not migrate your account yet, visit https://idp-portal-info.suse.com/

SDB:Crear un repositorio svn con Apache2

Saltar a: navegaci贸n, buscar
Geeko Esta p谩gina describe como crear un repositorio de subversi贸n, svn, para ser utilizado en el servidor Apache en openSUSE.


Versi贸n: 11.3+El art铆culo se puede aplicar a las versiones de openSUSE a聽partir de la 11.3.


Introducci贸n

Subversion es un sistema de control de versiones dise帽ado espec铆ficamente para reemplazar al popular CVS. Es software libre bajo una licencia de tipo Apache/BSD y se le conoce tambi茅n como svn por ser el nombre de la herramienta utilizada en la l铆nea de comando. Una caracter铆stica importante de Subversion es que, a diferencia de CVS, los archivos versionados no tienen cada uno un n煤mero de revisi贸n independiente, en cambio, todo el repositorio tiene un 煤nico n煤mero de versi贸n que identifica un estado com煤n de todos los archivos del repositorio en un instante determinado. Subversion puede acceder al repositorio a trav茅s de redes, lo que le permite ser usado por personas que se encuentran en distintas computadoras.

Instalaci贸n

Paquetes necesarios

El siguiente listado de paquetes son necesarios para la instalaci贸n y configuraci贸n de repositorios de svn bajo Apache:

  • apache2
  • apache2-doc
  • apache2-prefork
  • libapr1 (Librer铆a Apache Portable Runtime (APR))
  • libapr-util1 (Utilidades para la librer铆a Apache Portable Runtime (APR))
  • libneon27 (Librer铆a de cliente de HTTP y WebDAV)
  • subversion (Sistema de control de versiones)
  • subversion-doc (Archivos de la documentaci贸n de Subversion)
  • subversion-server (M贸dulo Apache para Subversi贸n)

Todos estos paquetes est谩n disponibles en los repositorios oficiales de openSUSE.

Configuraci贸n

Creaci贸n de usuario y grupo svn

Una vez instalados los paquetes anteriores agregar al sistema operativo un usuario de sistema llamado svn y cuyo grupo tambi茅n deber谩 ser svn, este usuario es necesario para ejecutar el software por primera vez y lamentablemente no se crea autom谩ticamente durante la instalaci贸n del paquete. Para agregarlo ejecutamos desde la consola:

# groupadd -颅r svn
# useradd 颅-r -颅g svn svn

Configuraci贸n de Apache

Una vez instalados los paquetes debemos configurar el servidor web Apapche, lo m谩s recomendable ser谩 publicar los repositorios subversi贸n a trav茅s del servicio http del Apache usando los protocolos de red WebDAV/DeltaV, para ello debemos hacer uso de los m贸dulos disponibles en Apache. El primer caso consiste en editar el archivo /etc/sysconfig/apache2 y agregar los m贸dulos necesarios, una vez se est谩 editando dicho archivo se modifica la siguiente l铆nea:

APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_default authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir php5"

y se le a帽ade al final dav y dav_svn en caso de no existir. Posteriormente crearemos las carpetas que alojar谩n los repositorios de subversion, para ello en este caso usar茅 de ejemplo mi la carpeta creada en el home personal denominada public_html

manolobarea@linux-7cqa:~> mkdir -p public_html/svn/repos
manolobarea@linux-7cqa:~> mkdir -p public_html/svn/user_access
manolobarea@linux-7cqa:~> mkdir -p public_html/svn/html

El siguiente paso consiste en editar el archivo /etc/apache2/conf.d/subversion.conf para definir los repositorios a los cuales se tendr谩 acceso mediante Apache y configurar sus m茅todos de autenticaci贸n respectivos. Dicho archivo deber谩 modificarse como sigue:

# Example configuration for a subversion repository
# see /usr/share/doc/packages/subversion for the full documentation
#

<IfModule mod_dav_svn.c>

##
## project related HTML files
##
<IfModule mod_alias.c>
        Alias /repos    ~/public_html/svn/html
</IfModule>
<Directory ~/public_html/html>
        Options         +Indexes +Multiviews -FollowSymLinks
        IndexOptions    FancyIndexing \
                        ScanHTMLTitles \
                        NameWidth=* \
                        DescriptionWidth=* \
                        SuppressLastModified \
                        SuppressSize

        order allow,deny
        allow from all
</Directory>

## Configuraci贸n para el repositorio 鈥減royecto1鈥 que requiere autenticaci贸n
## tanto para la lectura como para escritura en el repositorio.

<Location /repos/proyecto1>
   DAV svn
   SVNPath ~/public_html/svn/repos/proyecto1
   ## Configuraci贸n del tipo de autenticaci贸n de usuario
   ## y definici贸n de la ruta de los archivos que contienen 
   ## la lista de usuarios autorizados y sus respectivas claves.
   AuthType Basic
   AuthName "Se requiere autorizaci贸n para el proyecto1"
   AuthUserFile ~/public_html/svn/user_access/proyecto1_passwdfile
   AuthGroupFile ~/public_html/svn/user_access/proyecto1_groupfile

   ## Definici贸n de los grupos a los cuales los usuarios del programa van 
   ## asociados seg煤n sus operaciones que pueden realizar en el repositorio. 
   ## Esto queda m谩s claro a medida que se finaliza con la configuraci贸n.
   <LimitExcept GET PROPFIND OPTIONS REPORT>
         Require group proyecto1_committers
   </LimitExcept>
   <Limit GET PROPFIND OPTIONS REPORT>
         Require group proyecto1_committers
         Require group proyecto1_readers
   </Limit>
</Location>
   ## Configuraci贸n para el Repositorio 鈥減royecto2鈥, su caracter铆stica es que
   ## la lectura del repositorio para usuarios an贸nimos est谩 permitida, pero
   ## para realizar cambios en el mismo el usuario debe autenticarse
<Location /repos/proppos/proyecto2
 
  ## Configuraci贸n del tipo de autenticaci贸n de usuario
  ## y definici贸n de la ruta del archivo que contiene
  ## la lista de usuarios autorizados y sus respectivas claves.
  <LimitExcept GET PROPFIND OPTIONS REPORT>
        AuthType Basic
        AuthName "Authorization for proyecto2 required"
        AuthUserFile  ~/public_html/svn/user_access/proyecto2_passwdfile
        Require valid颅user
  </LimitExcept>
</Location>

##
## Hosting svn at "/"
##
#<VirtualHost *>
#    ServerName svn.example.com
#    ErrorLog    /var/log/apache2/svn.example.com-error_log
#    TransferLog /var/log/apache2/svn.example.com-access_log
#    #
#    # Do not set DocumentRoot. It is not needed here and just causes trouble.
#    #
#    # Map the error documents back to their defaults.
#    # Otherwise mod_dav_svn tries to find a "error" repository.
#    #
#    ErrorDocument 400 default
#    ErrorDocument 401 default
#    ErrorDocument 403 default
#    ErrorDocument 404 default
#    ErrorDocument 405 default
#    ErrorDocument 408 default
#    ErrorDocument 410 default
#    ErrorDocument 411 default
#    ErrorDocument 412 default
#    ErrorDocument 413 default
#    ErrorDocument 414 default
#    ErrorDocument 415 default
#    ErrorDocument 500 default
#    ErrorDocument 501 default
#    ErrorDocument 502 default
#    ErrorDocument 503 default
#    #
#    <Location />
#      DAV svn
#      SVNParentPath /srv/svn/repositories/
#      SVNListParentPath on
#      AuthType Basic
#      AuthName "subversion repository"
#      AuthBasicProvider file
#      AuthUserFile /srv/svn/auth/svn.example.org.htpasswd
#      SetOutputFilter DEFLATE
#      <LimitExcept GET PROPFIND OPTIONS REPORT>
#        Require valid-user
#      </LimitExcept>
#    </Location>
#</VirtualHost>
</IfModule>

Creaci贸n de los repositorios del proyecto

Comenzaremos desde nuestro directorio que contendr谩 los repositorios ~/public_html/svn/repos, desde la consola usamos el comando svnadmin asignar usuarios y grupos a algunas carpetas:

manolobarea@linux-7cqa:~> cd public_html/svn/repos/
manolobarea@linux-7cqa:~/public_html/svn/repos>svnadmin create proyecto1
manolobarea@linux-7cqa:~/public_html/svn/repos> cd proyecto1/
manolobarea@linux-7cqa:~/public_html/svn/repos/proyecto1> chown -R manolobarea:users {db,locks}

Lo mismo habr谩 que hacer con nuestro segundo proyecto s铆 es que lo vamos a implementar. Una vez culminado con la creaci贸n de los repositorios reiniciamos el servidor http con el siguiente comando:

/etc/init.d/apache2 restart