Diferencia entre revisiones de «Subversion»

De Wiki Asqueados
Saltar a: navegación, buscar
(OSTGXDEuWRlsSwV)
(Categorizar)
 
(No se muestran 8 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
4m3YNp  <a href="http://jjjanxvfritq.com/">jjjanxvfritq</a>, [url=http://creghqexbsyj.com/]creghqexbsyj[/url], [link=http://chnramdyglsa.com/]chnramdyglsa[/link], http://lumocedqiyxl.com/Asvf13  <a href="http://spcgvryzqplg.com/">spcgvryzqplg</a>, [url=http://tixupkhaqvus.com/]tixupkhaqvus[/url], [link=http://ouyaeiuumkms.com/]ouyaeiuumkms[/link], http://kahhnnmuhzlh.com/
+
<small>Por Jorgecab</small>
 +
 
 +
Subversion es un sistema de control de versiones que nos permite mantener un repositorio de ficheros y directorios pero con la posibilidad de recuperar versiones antiguas de cada uno. En el servidor de Hispafuentes tenemos varios repositorios con SVN accesibles vía web. Aquí describiremos como crear uno y configurar Apache para poder accederlo.
 +
 
 +
 
 +
== Configurar el agent ==
 +
 
 +
En http://laespiral.org/recetas/1-100/receta66.html están todos los pasos.
 +
 
 +
== Requisitos ==
 +
 
 +
- subversion
 +
 
 +
- libsvn0
 +
 
 +
- libapache2-svn (y obviamente Apache2 con todas sus dependencias)
 +
 
 +
== Crear el repositorio ==
 +
 
 +
Los repositorios los mantenemos en el directorio ''/var/svn/''. Vamos a crear por ejemplo un SVN para hispafuentes.com que sea accesible vía http://www.hispafuentes.com/svn. Para ello ejecutamos lo siguiente:
 +
 
 +
''cd /var/svn/''
 +
 
 +
''svnadmin create svn.hispafuentes.com''
 +
 
 +
Si el comando se ejecuta con éxito veremos que se ha creado el subdirectorio ''/var/svn/svn.hispafuentes.com'' con el siguiente contenido:
 +
 
 +
<pre>
 +
-rw-rw-r--  1 root root  379 Jan 16 17:53 README.txt
 +
drwxr-xr-x  2 root root 4096 Jan 16 17:53 conf
 +
drwxr-xr-x  2 root root 4096 Jan 16 17:53 dav
 +
drwxr-sr-x  2 root root 4096 Jan 16 17:53 db
 +
-r--r--r--  1 root root    2 Jan 16 17:53 format
 +
drwxr-xr-x  2 root root 4096 Jan 16 17:53 hooks
 +
drwxr-xr-x  2 root root 4096 Jan 16 17:53 locks
 +
</pre>
 +
 
 +
Ahora para que apache lea el contenido del repositorio se tiene que hacer al usuario www-data dueño del repositorio:
 +
 
 +
''chown -R www-data.www-data /var/svn/svn.hispafuentes.com''
 +
 
 +
== Configurando Apache 2 ==
 +
 
 +
Asumiendo que se ha instalado bien el módulo de SVN para Apache 2 modificamos ahora la configuración del virtualhost de hispafuentes.com para que podamos acceder al repositorio. Así que modificamos el fichero ''/etc/apache2/sites-available/www.hispafuentes.com'' y agregamos las siguientes líneas:
 +
 
 +
<pre>
 +
<Location /svn>
 +
          DAV svn
 +
          SVNPath /var/svn/svn.hispafuentes.com
 +
 
 +
  # Con autenticación LDAP para el acceso
 +
          AuthType Basic
 +
          AuthName "Repositorio"
 +
          AuthLDAPURL ldap://127.0.0.1/dc=Hispafuentes,dc=com?mail?sub
 +
          require valid-user
 +
</Location>
 +
</pre>
 +
 
 +
Luego lo único que hay que hacer es recargar la configuración de apache:
 +
 
 +
''/etc/init.d/apache2 reload''
 +
 
 +
Y probar acceder vía web.
 +
 
 +
También se puede definir un grupo en ldap (objectClass groupOfNames) y poner la linea
 +
<pre>
 +
require group cn=Grupo,ou=People,dc=hispafuentes,dc=com
 +
</pre>
 +
en lugar del require valid-user. Eso hace que puedan entrar solamente los miembros de dicho grupo.
 +
 
 +
== Permisos por directorio ==
 +
Combinado con todo esto se pueden tener permisos (lectura y/o escritura solamente). Para ello hay que añadir a la definición de la localizacion del svn (dentro del location) lo siguiente:
 +
<pre>
 +
AuthzSVNAccessFile /var/svn/<fichero con los permisos>
 +
</pre>
 +
Esto permite especificar en el fichero de los permisos que acceso tiene cada usuario a que ramas del svn.
 +
La sintaxis del archivo es muy sencilla, en este contexto es la siguiente:
 +
* El archivo está compuesto por secciones que empiezan por un path entre corchetes ([]).
 +
* En cada una de las secciones tenemos un listado de usuarios con los permisos para cada uno (r ó w). Los usuarios en el contexto de autenticación por LDAP son las direcciones de correo (siguiendo la filosofía del SSO).
 +
* Los permisos se heredan para los directorios hijos.
 +
* El caracter '*' equivale a todos los usuarios.
 +
 
 +
Por ejemplo, en el svn de desertic (de momento con el tiny), guile@hispafuentes.com tiene acceso total y los demas solo lectura, y además toda persona que quiera entrar debe estar en el grupo Acceso SVN que esta en ou=desertic.net,dc=hispafuentes,dc=com. La configuración resultante es la siguiente:
 +
 
 +
Definición de la localización dentro del VirtualHost:
 +
<pre>
 +
  <Location /svn>
 +
        DAV svn
 +
        SVNPath /var/svn/svn.desertic.net
 +
        AuthzSVNAccessFile /var/svn/svn.desertic.net.authz
 +
        AuthType Basic
 +
        AuthName "Repositorio de Desertic.net"
 +
        AuthLDAPURL ldap://127.0.0.1/dc=hispafuentes,dc=com?mail?sub?(objectClass=person)
 +
        require group cn=Acceso SVN,ou=desertic.net,dc=hispafuentes,dc=com
 +
  </Location>
 +
</pre>
 +
 
 +
La directiva AuthzSVNAccessFile hace referencia al siguiente fichero:
 +
<pre>
 +
[/]
 +
guile@hispafuentes.com = rw
 +
* = r
 +
</pre>
 +
 
 +
Todo esto está documentado, por ejemplo, en:
 +
 
 +
http://svnbook.red-bean.com/en/1.1/ch06s04.html (buscar la sección Per-Directory Access Control)
 +
 
 +
== Referencias ==
 +
 
 +
Si alguién quiere ampliar el tema:
 +
 
 +
http://svnbook.red-bean.com/nightly/en/index.html
 +
 
 +
http://crysol.inf-cr.uclm.es/drupal/node/162
 +
 
 +
[[Categoría:Informática]]

Revisión actual del 11:36 11 nov 2011

Por Jorgecab

Subversion es un sistema de control de versiones que nos permite mantener un repositorio de ficheros y directorios pero con la posibilidad de recuperar versiones antiguas de cada uno. En el servidor de Hispafuentes tenemos varios repositorios con SVN accesibles vía web. Aquí describiremos como crear uno y configurar Apache para poder accederlo.


Configurar el agent

En http://laespiral.org/recetas/1-100/receta66.html están todos los pasos.

Requisitos

- subversion

- libsvn0

- libapache2-svn (y obviamente Apache2 con todas sus dependencias)

Crear el repositorio

Los repositorios los mantenemos en el directorio /var/svn/. Vamos a crear por ejemplo un SVN para hispafuentes.com que sea accesible vía http://www.hispafuentes.com/svn. Para ello ejecutamos lo siguiente:

cd /var/svn/

svnadmin create svn.hispafuentes.com

Si el comando se ejecuta con éxito veremos que se ha creado el subdirectorio /var/svn/svn.hispafuentes.com con el siguiente contenido:

-rw-rw-r--  1 root root  379 Jan 16 17:53 README.txt
drwxr-xr-x  2 root root 4096 Jan 16 17:53 conf
drwxr-xr-x  2 root root 4096 Jan 16 17:53 dav
drwxr-sr-x  2 root root 4096 Jan 16 17:53 db
-r--r--r--  1 root root    2 Jan 16 17:53 format
drwxr-xr-x  2 root root 4096 Jan 16 17:53 hooks
drwxr-xr-x  2 root root 4096 Jan 16 17:53 locks

Ahora para que apache lea el contenido del repositorio se tiene que hacer al usuario www-data dueño del repositorio:

chown -R www-data.www-data /var/svn/svn.hispafuentes.com

Configurando Apache 2

Asumiendo que se ha instalado bien el módulo de SVN para Apache 2 modificamos ahora la configuración del virtualhost de hispafuentes.com para que podamos acceder al repositorio. Así que modificamos el fichero /etc/apache2/sites-available/www.hispafuentes.com y agregamos las siguientes líneas:

 <Location /svn>
           DAV svn
           SVNPath /var/svn/svn.hispafuentes.com

  # Con autenticación LDAP para el acceso
           AuthType Basic
           AuthName "Repositorio"
           AuthLDAPURL ldap://127.0.0.1/dc=Hispafuentes,dc=com?mail?sub
           require valid-user
 </Location>

Luego lo único que hay que hacer es recargar la configuración de apache:

/etc/init.d/apache2 reload

Y probar acceder vía web.

También se puede definir un grupo en ldap (objectClass groupOfNames) y poner la linea

require group cn=Grupo,ou=People,dc=hispafuentes,dc=com

en lugar del require valid-user. Eso hace que puedan entrar solamente los miembros de dicho grupo.

Permisos por directorio

Combinado con todo esto se pueden tener permisos (lectura y/o escritura solamente). Para ello hay que añadir a la definición de la localizacion del svn (dentro del location) lo siguiente:

AuthzSVNAccessFile /var/svn/<fichero con los permisos>

Esto permite especificar en el fichero de los permisos que acceso tiene cada usuario a que ramas del svn. La sintaxis del archivo es muy sencilla, en este contexto es la siguiente:

  • El archivo está compuesto por secciones que empiezan por un path entre corchetes ([]).
  • En cada una de las secciones tenemos un listado de usuarios con los permisos para cada uno (r ó w). Los usuarios en el contexto de autenticación por LDAP son las direcciones de correo (siguiendo la filosofía del SSO).
  • Los permisos se heredan para los directorios hijos.
  • El caracter '*' equivale a todos los usuarios.

Por ejemplo, en el svn de desertic (de momento con el tiny), guile@hispafuentes.com tiene acceso total y los demas solo lectura, y además toda persona que quiera entrar debe estar en el grupo Acceso SVN que esta en ou=desertic.net,dc=hispafuentes,dc=com. La configuración resultante es la siguiente:

Definición de la localización dentro del VirtualHost:

  <Location /svn>
        DAV svn
        SVNPath /var/svn/svn.desertic.net
        AuthzSVNAccessFile /var/svn/svn.desertic.net.authz
        AuthType Basic
        AuthName "Repositorio de Desertic.net"
        AuthLDAPURL ldap://127.0.0.1/dc=hispafuentes,dc=com?mail?sub?(objectClass=person)
        require group cn=Acceso SVN,ou=desertic.net,dc=hispafuentes,dc=com
   </Location>

La directiva AuthzSVNAccessFile hace referencia al siguiente fichero:

[/]
guile@hispafuentes.com = rw
* = r

Todo esto está documentado, por ejemplo, en:

http://svnbook.red-bean.com/en/1.1/ch06s04.html (buscar la sección Per-Directory Access Control)

Referencias

Si alguién quiere ampliar el tema:

http://svnbook.red-bean.com/nightly/en/index.html

http://crysol.inf-cr.uclm.es/drupal/node/162