martes, 5 de abril de 2016

Instalar servidor de SVN con servicio web en Ubuntu

Comenzamos
  1. Actualizamos el sistema
  2. sudo apt-get update
    
  3. Instalamos los paquetes de apache y los modulos de svn
  4. sudo apt-get install subversion subversion-tools apache2 libapache2-svn apache2-utils
    
  5. Habilitamos los modulos de svn para apache
  6. sudo a2enmod dav
    sudo a2enmod dav_svn
    
  7. Creamos el directorio donde pondremos el repositorio de svn
  8. sudo mkdir -p /var/svn
    
  9. Creamos el repositorio de svn
  10. sudo svnadmin create /var/svn/proyecto1
    
  11. Le damos permiso de acceso y escritura a usuario de Apache; en este caso el usuario es www-data
  12. sudo chown -R www-data:www-data /var/svn
    
  13. Creamos el site en apache; para ello creamos un fichero llamado repo1.conf en /etc/apache2/sites-available
  14. 
      DAV svn
      SVNPath /var/svn/proyecto1
    
    
    repo1 es el lugar al que accederemos desde la web, es decir, en este caso, para acceder al repositorio desde el navegador escribiremos.
    
    http://localhost/repo1
    
    Pero todavía no.....faltan un par de pasos más
  15. Habilitamos el sitio recien creado
  16. sudo a2ensite repo1
    
  17. Reiniciamos apache
  18. sudo service apache2 reload
    
  19. Finalmente, accedemos al repositorio a través del navegador
  20. http://localhost/repo1
Y veremos esto:

Uso del repositorio

Nos descargamos el repositorio recien creado
svn co http://localhost/repo1
Accedemos al repositorio
cd repo1
Creamos los directorios trunk, tags y branches y creamos un fichero de ejemplo:
mkdir trunk tags branches
cd trunk
echo "contenido del fichero" > ejemplo.txt
Añadimos los ficheros creados
cd ..
svn add *
Obtenemos la siguiente salida:
A         branches
A         tags
A         trunk
A         trunk/ejemplo.txt
Y confirmamos los cambios
svn ci -m "comentarios"
Obtenemos la siguiente salida:
Añadiendo      branches
Añadiendo      tags
Añadiendo      trunk
Añadiendo      trunk/ejemplo.txt
Transmitiendo contenido de archivos .
Committed revision 1.
Si comprobamos los cambios desde el navegador web, veremos:
y esto

Añadir seguridad al repositorio con acceso por usuario y contraseña

Para ello, crearemos los usuarios que van a acceder al repositorio en el servidor con useradd
Estos usuarios necesitan permisos de escritura sobre los ficheros del repositorio, por lo que tenemos que añadir los usuarios al grupo www-data, ya que este grupo es el grupo propietario de los ficheros de repositorio.
sudo usermod -G www-data usuario
Modificamos el fichero /etc/apache2/sites-available/repo1.conf y lo dejamos asi:

  DAV svn
  SVNPath /var/svn/proyecto1
  AuthType Basic
  AuthName "Test Repo"
  AuthUserFile /etc/dav_svn.passwd
  Require valid-user

Creamos el fichero /etc/dav_svn.passwd en el que añadimos los usuarios que van a utilizar el svn.
Este fichero se crea con el comando htppasswd.
La primera vez con:
sudo htpasswd -c /etc/apache2/dav_svn.passwd usuario
Si queremos añadir mas usuarios, la segunda y siguientes veces los añadiremos con:
sudo htpasswd -a /etc/apache2/dav_svn.passwd usuario2
Reiniciamos apache:
sudo service apache2 reload

Acceso por web a multiples repositorios

Con lo hecho hasta ahora, tenemos acceso a un unico repositorio.
Si queremos tener acceso a varios repositorios tenemos que realizar los siguientes pasos:
  1. Creamos el resto de repositorios
  2. cd /var/svn
    sudo svnadmin create /var/svn/proyecto2
    sudo svnadmin create /var/svn/proyecto3
    
  3. Cambiamos el propietario y grupo de los nuevos repositorios
  4. sudo chown -R www-data:www-data /var/svn
    
  5. Creamos el nuevo site en apache; para ello creamos un nuevo fichero llamado repositories.conf en /etc/apache2/sites-available
  6. 
      DAV svn
      SVNParentPath /var/svn
      SVNListParentPath On
      AuthType Basic
      AuthName "Test Repo"
      AuthUserFile /etc/dav_svn.passwd
      Require valid-user
    
    
    Es importante la directiva 'SVNListParentPath' junto con la 'SVNParentPath'
  7. Habilitamos el sitio recien creado
  8. sudo a2ensite repositories
    
  9. Reiniciamos apache
  10. sudo service apache2 reload
    
  11. Finalmente, accedemos al reposotioro a través del navegador
  12. http://localhost/repositories
    
Y veremos esto:
Fuentes:
https://www.howtoforge.com/how-to-install-and-use-svn-with-apache-dav_svn-on-ubuntu-14.04
http://www.krizna.com/ubuntu/setup-svn-server-on-ubuntu-14-04/
https://desarrollophpsenior.wordpress.com/2012/04/07/instalar-servidor-de-svn-en-ubuntu/
http://superuser.com/questions/274183/how-to-overcome-svn-could-not-open-the-requested-svn-file-system
http://www.wandisco.com/svnforum/forum/opensource-subversion-forums/general-setup-and-troubleshooting/4583-problem-setting-up-repository-with-apache
http://svnbook.red-bean.com/nightly/en/svn.serverconfig.httpd.html

No hay comentarios:

Publicar un comentario