Control de versiones con Subversion y USVN

Subversion (SVN) es una herramienta de control de versiones, que funciona cómo un repositorio sobre un sistema de ficheros. Se trata de software libre, ya que utiliza la licencia Apache/BSD.

USVN es una interfaz web que nos permite crear y organizar los repositorios de Subversion.

Primero de todo debemos de cumplir con los requisitos del software, que es el siguiente:

  • PHP5 (A partir de la versión 5.3)
  • Apache2
  • php5-mysqlnd
  • mod_dav enable
  • mod_dav_fs enable
  • mod_rewrite enable
  • Añadir AllowOverride  en la configuración de Apache2
  • Subversion (SVN)
  • mod_authz_svn enable
  • mod_dav_svn enable

He utilizado un sistema operativo GNU/Linux Debian 7.6 para la instalación.

Vamos a ellos, primero instalamos Apache2 y PHP5

  1. apt-get -y install apache2 php5 php5-mysqlnd

Una vez instalado podemos comprobar la versión de PHP con el parámetro –version

 

usvn-install-software-01

En la siguiente parte habilitamos los módulos de Apache2: mod_dav, mod_dav_fs y mod_rewrite.

  1. a2enmod dav
  2. a2enmod dav_fs
  3. a2enmod rewrite

Una vez hecho esto reiniciamos Apache2

  1. service apache2 restart

Podéis ver el proceso en la siguiente imagen:

 

usvn-install-software-02

 

Instalamos Subversion. La versión que viene en los repositorios main de Debian

  1. apt-get -y install subversion

Aunque en principio no es necesario, yo utilizo el servidor MySQL que viene en los repositorios main

  1. apt-get -y install mysql-server mysql-common

Nos dirigimos a la página web de USVN y descargamos la versión que nos interese, aquí,

 

usvn-web-1

Nos dirigimos a la sección de descargas, para el artículo he descargado la versión 1.0.7

Antes de la descarga nos colocamos en el directorio /var/www/

  1. cd /var/www

Y descargamos el archivo con el comando wget

  1. wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz

Y descomprimimos

  1. tar xzvf 1.0.7.tar.gz

Asignamos los permisos al usuario del servidor Apache, www-data

  1. chown www-data:www-data /var/www/usvn-1.0.7 -R

Modificamos la configuración de Apache2, para que cargue por defecto nuestro servidor.

El primer paso es guardar el archivo default original:

  1. cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.back

Y editamos el archivo default:

  1. nano /etc/apache2/sites-available/default

La configuración de mi servidor es la siguiente. Sólo hay que modificar la parte superior de la configuración original.

usvn-apache2-default

El resto del fichero no hay que modificarlo.

Ahora tendríamos que reiniciar el servicio Apache2, pero antes de eso todavía nos queda por habilitar dos módulos.

Se trata de mod_authz_svn y mod_dav_svn. En Debian y derivados (Ubuntu) debemos de instalar primero el paquete libapache2-svn

(En versiones anteriores el paquete lleva el nombre libapache2-subversion)

  1. apt-get -y install libapache2-svn

Ya podemos habilitar ambos módulos:

  1. a2enmod authz_svn
  2. a2enmod dav_svn

Y podemos reiniciar el servicio:

  1. service apache2 restart

Supuestamente con todo esto ya tendría que funciona la interfaz web, pero no:

usvn-error-messages-mo

Investigando un poco en la red, he encontrado la página dónde indica cómo solucionarlo.

Debemos de modificar el archivo /var/www/usvn-1.0.7/app/bootstrap.php , y en la línea 67, descomentar «// exit(0);»

Con esto ya podemos volver a reiniciar Apache2, y así empezar la instalación vía web.

usvn-instalacion-web-01

En la siguiente ventana nos indica que hemos sido buenos, y hemos instalado todos los requisitos.

 

usvn-instalacion-web-02

 

Seleccionamos idioma y zona horaria.

 

usvn-instalacion-web-03

En la siguiente ventana leemos, y si creemos conveniente aceptamos la licencia del software.

Ahora vemos la información de los directorios usados por USVN

usvn-instalacion-web-04Al apretar el botón «Siguiente paso» me ha aparecido un mensaje indicando que el directorio /var/www/usvn-1.0.7/files no existía o tenía los permisos erroneos.

Para solucionarlo sólo hay que crearlo, asignar permisos y propietario.

  1. mkdir /var/www/usvn-1.0.7/files
  2. chmod 775 /var/www/usvn-1.0.7/files
  3. chown www-data:www-data /var/www/usvn-1.0.7/files -R

Y así podemos pasar a la siguiente ventana.

 

usvn-instalacion-web-06

Aquí he escogido la BBDD tipo MySQL. Sólo debemos de indicar nuestras credenciales y crear la base de datos.

usvn-instalacion-web-07

Indicamos las credenciales para nuestro usuario.

usvn-instalacion-web-08

Ya estamos apunto de finalizar.

Chequeamos actualizaciones, si así lo deseamos.

Con la información que nos suministra en la siguiente pantalla, creamos el fichero httpd.conf, si no existe, dentro de /etc/apache2/ en Ubuntu, y en /etc/apache2/conf.d en Debian.

usvn-instalacion-web-09

Editamos en Debian:

  1. nano /etc/apache2/conf.d//httpd.conf

Y en Ubuntu:

  1. nano /etc/apache2/httpd.conf

Y copiamos justo los mismo:

  1.   ErrorDocument 404 default
  2.     DAV svn
  3.     Require valid-user
  4.     SVNParentPath /var/www/usvn-1.0.7/files/svn
  5.     SVNListParentPath off
  6.     AuthType Basic
  7.     AuthName "USVN"
  8.     AuthUserFile /var/www/usvn-1.0.7/files/htpasswd
  9.     AuthzSVNAccessFile /var/www/usvn-1.0.7/files/authz

Y reinciamos Apache

  1. service apache2 restart

Y con esto y un bizcocho… ya tenemos la web lista para su uso.

 

usvn-instalacion-web-10

Accedemos con nuestras credenciales.

Una vez dentro nos señana el programa que no tenemos ningún proyecto creado.

usvn-instalacion-web-11

En el panel de administración podemos gestionar usuario, grupos y proyectos.

 

usvn-instalacion-web-12

Por hoy lo dejamos aquí.

En el próximo capítulo veremos cómo utilizar los repositorios y gestionar las versiones desde los usuarios locales.

Para el artículo me he servido de la información de las webs: Github USVN y Ubuntu Subversion Wiki

See you soon!!

 

 

10 Respuestas

  1. adan dice:

    cuando se agrega el archivo httpd.conf, tuve que colocarlo dentro de la carpeta /etc/apache2/conf.d ya que me salia error 500, no route matched

    • davidochobits dice:

      Hola,
      Te tengo que dar la razón, y lo he modificado en el tutorial.
      En Debian la ubicación es /etc/apache2/conf.d/httd.conf
      Y en Ubuntu /etc/apache2/httpd.conf
      Saludos

  2. elena dice:

    el ejecutable no está completo le falta la carpeta de login por eso da error

  3. julia dice:

    al final de todos los pasos me sale lo siguiente como hago para corregir el error?

    session has already been started by session.auto-start or session_start()

    Trace:

    /var/www/usvn-1.0.7/library/Zend/Session/Namespace.php:143 Zend_Session::start
    /var/www/usvn-1.0.7/library/Zend/Auth/Storage/Session.php:87 Zend_Session_Namespace::__construct
    /var/www/usvn-1.0.7/library/Zend/Auth.php:91 Zend_Auth_Storage_Session::__construct
    /var/www/usvn-1.0.7/library/Zend/Auth.php:151 Zend_Auth::getStorage
    /var/www/usvn-1.0.7/library/USVN/Controller.php:83 Zend_Auth::getIdentity
    /var/www/usvn-1.0.7/library/Zend/Controller/Action.php:502 USVN_Controller::preDispatch
    /var/www/usvn-1.0.7/library/Zend/Controller/Dispatcher/Standard.php:295 Zend_Controller_Action::dispatch
    /var/www/usvn-1.0.7/library/Zend/Controller/Front.php:954 Zend_Controller_Dispatcher_Standard::dispatch
    /var/www/usvn-1.0.7/public/index.php:5 Zend_Controller_Front::dispatch

  4. NotACat dice:

    Hola, una pregunta!
    si quiero tener mas de 1 aplicacion en mi servidor local, como creo el Alias, si es que se hace por alias, o como procedo.
    En mi caso, tengo que instalar el control de versiones, que es este, y un control de incidencias… pero no se pueden estar en el mismo servidor sin usar el alias… Me explicas ?!

  5. gjgl dice:

    Hola buenos días,
    estoy instalando USVN y en el paso 5 me sale este error

    No se puede conectar a la base de datos.
    SQLSTATE[HY000] [2002] Connection refused

    • Hola,

      ¿Tienes el cortafuegos habilitado? ¿El servicio de MYSQL está encendido en el host? ¿Las credenciales son correctas?

      En cualquier caso ten en cuenta que esta entrada es del 2014 y desde entonces han pasado casi cinco años….

      Saludos

      • gjgl dice:

        Si tengo encuenta que ha pasado mucho desde que abrieron este foro, pero fue el unico que encontre similar a mi problema, todos los programas estan actualizados, el servicio MYSQL esta activo en el servidor y las credenciales son correctas

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.