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
apt-get -y install apache2 php5 php5-mysqlnd
Una vez instalado podemos comprobar la versión de PHP con el parámetro –version
En la siguiente parte habilitamos los módulos de Apache2: mod_dav, mod_dav_fs y mod_rewrite.
a2enmod dav
a2enmod dav_fs
a2enmod rewrite
Una vez hecho esto reiniciamos Apache2
service apache2 restart
Podéis ver el proceso en la siguiente imagen:
Instalamos Subversion. La versión que viene en los repositorios main de Debian
apt-get -y install subversion
Aunque en principio no es necesario, yo utilizo el servidor MySQL que viene en los repositorios main
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í,
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/
cd /var/www
Y descargamos el archivo con el comando wget
wget https://github.com/usvn/usvn/archive/1.0.7.tar.gz
Y descomprimimos
tar xzvf 1.0.7.tar.gz
Asignamos los permisos al usuario del servidor Apache, www-data
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:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default.back
Y editamos el archivo default:
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.
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)
apt-get -y install libapache2-svn
Ya podemos habilitar ambos módulos:
a2enmod authz_svn
a2enmod dav_svn
Y podemos reiniciar el servicio:
service apache2 restart
Supuestamente con todo esto ya tendría que funciona la interfaz web, pero no:
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.
En la siguiente ventana nos indica que hemos sido buenos, y hemos instalado todos los requisitos.
Seleccionamos idioma y zona horaria.
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
Al 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.
mkdir /var/www/usvn-1.0.7/files
chmod 775 /var/www/usvn-1.0.7/files
chown www-data:www-data /var/www/usvn-1.0.7/files -R
Y así podemos pasar a la siguiente ventana.
Aquí he escogido la BBDD tipo MySQL. Sólo debemos de indicar nuestras credenciales y crear la base de datos.
Indicamos las credenciales para nuestro usuario.
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.
Editamos en Debian:
nano /etc/apache2/conf.d//httpd.conf
Y en Ubuntu:
nano /etc/apache2/httpd.conf
Y copiamos justo los mismo:
ErrorDocument 404 default
DAV svn
Require valid-user
SVNParentPath /var/www/usvn-1.0.7/files/svn
SVNListParentPath off
AuthType Basic
AuthName "USVN"
AuthUserFile /var/www/usvn-1.0.7/files/htpasswd
AuthzSVNAccessFile /var/www/usvn-1.0.7/files/authz
Y reinciamos Apache
service apache2 restart
Y con esto y un bizcocho… ya tenemos la web lista para su uso.
Accedemos con nuestras credenciales.
Una vez dentro nos señana el programa que no tenemos ningún proyecto creado.
En el panel de administración podemos gestionar usuario, grupos y proyectos.
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!!
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
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
el ejecutable no está completo le falta la carpeta de login por eso da error
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
Hola,
¿Qué sistema operativo estás utilizando?
Ya me dices.
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 ?!
Hola !
Sin problema, siempre que el control de incidencias puede funcionar sobre el servidor LEMP.
Saludos!
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
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