Diferencia entre revisiones de «Subversion»
(DnAHSNLAmNrOnfZ) |
(Categorizar) |
||
(No se muestran 9 ediciones intermedias de 4 usuarios) | |||
Línea 1: | Línea 1: | ||
− | + | <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.
Contenido
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: