![Chrome obtiene una importante actualización de Linux: ¡funciones en abundancia!](/f/99b9976541603f061a7f0f94facb46be.jpg?imgmax=800?width=100&height=100)
Si su trabajo requiere el manejo de documentos, páginas web y otro tipo de archivos que se actualizan regularmente, es posible que desee utilizar un mecanismo de control de versiones si aún no lo está haciendo.
Entre otras cosas, esto le permite a usted (y también a un grupo de colaboradores potenciales) realizar un seguimiento de los cambios realizados en un archivo determinado, y le permite volver a una versión anterior si se encuentra un problema o cuando una actualización no ha producido el esperado resultado.
En el ecosistema del software libre, el sistema de control de versiones más utilizado se llama Apache Subversion (o SVN para abreviar). Con la ayuda de mod_dav_svn (Módulo de Apache para Subversion), puede acceder a un repositorio de Subversion usando HTTP y un servidor web.
Dicho esto, arremangámonos e instalemos estas herramientas en un RHEL / CentOS 7, Fedora 22-24, Debian 8/7 y Ubuntu 16.04-15.04 servidor. Para nuestras pruebas usaremos un CentOS 7 servidor con IP 192.168.0.100.
En el lado del cliente (un Windows 7 máquina), instalaremos y usaremos TortugaSVN (que se basa en Apache Subversion) como interfaz para SVN.
Servidor - CentOS 7Dirección IP - 192.168.0.100Cliente - Windows 7
Como acabamos de mencionar, confiaremos en Apache para acceder al repositorio SVN mediante una interfaz web. Si aún no está instalado, asegúrese de agregarlo a la lista de paquetes como se muestra a continuación:
En CentOS / RHEL / Fedora # yum update && yum install mod_dav_svn subversion httpd -y En Debian / Ubuntu # apt-get update && apt-get install libapache2-svn subversion apache2 -y
Durante la instalación en CentOS 7, se creará un archivo de configuración de Apache para SVN como /etc/httpd/conf.modules.d/10-subversion.conf. Abra el archivo y agregue el siguiente bloque de configuración:
/etc/httpd/conf.modules.d/10-subversion.conf
DAV svn SVNParentPath / websrv / svn AuthType Basic AuthName "Bienvenido a SVN" AuthUserFile / etc / httpd / subversion-auth Requiere usuario válido.
Nota: En Debian / Ubuntu necesita agregar las siguientes líneas para /etc/apache2/mods-enabled/dav_svn.conf
expediente.
/etc/apache2/mods-enabled/dav_svn.conf
DAV svn SVNParentPath / websrv / svn AuthType Basic AuthName "Bienvenido a SVN" AuthUserFile / etc / apache2 / subversion-auth Requiere usuario válido.
En Debian / Ubuntu, necesitas habilitar dav_svn Apache módulo:
# a2enmod dav_svn.
Un par de aclaraciones:
# mkdir -p / websrv / svn.
Es importante tener en cuenta que este directorio NO debe estar ubicado dentro ni superponerse al Raiz del documento de un host virtual que actualmente está siendo servido por Apache. ¡Esto es espectacular!
Ahora usaremos htpasswd para crear una contraseña para las cuentas que podrán acceder a SVN. Solo para el primer usuario, necesitaremos el -C
opción.
Cuentas permitidas y contraseñas cifradas con bcrypt (-B
) se almacenará en /etc/httpd/subversion-auth en pares clave-valor. Tenga en cuenta que, según los estándares actuales, el cifrado MD5 o SHA predeterminado utilizado por htpasswd se considera inseguro.
En CentOS / RHEL / Fedora # htpasswd -cB / etc / httpd / subversion-auth tecmint En Debian / Ubuntu # htpasswd -cB / etc / apache2 / subversion-auth tecmint.
No olvide establecer la propiedad y los permisos correctos para el archivo de autenticación:
En CentOS / RHEL / Fedora # chgrp apache / etc / httpd / subversion-auth. # chmod 660 / etc / httpd / subversion-auth En Debian / Ubuntu # chgrp www-data / etc / apache2 / subversion-auth. # chmod 660 / etc / apache2 / subversion-auth.
Dado que accederá a SVN a través de una interfaz web, deberá permitir HTTP (y opcionalmente HTTPS) tráfico a través de su firewall.
En CentOS / RHEL / Fedora # firewall-cmd --add-service = http --permanent. # firewall-cmd --add-service = https --permanent. # firewall-cmd --reload
Al volver a cargar la configuración del cortafuegos con --recargar
, la configuración permanente se aplica de inmediato.
Cree un repositorio SVN inicial llamado tecmint:
# svnadmin create / websrv / svn / tecmint.
Cambiar el propietario y el propietario del grupo a apache recursivamente:
En CentOS / RHEL / Fedora # chown -R apache: apache / websrv / svn / tecmint En Debian / Ubuntu # chown -R www-data: www-data / websrv / svn / tecmint.
Finalmente, necesitará cambiar el contexto de seguridad de /websrv/svn/tecmint
(tenga en cuenta que tendrá que repetir este paso si decide crear otros repositorios más adelante):
En CentOS / RHEL / Fedora# chcon -R -t httpd_sys_content_t / websrv / svn / tecmint / # chcon -R -t httpd_sys_rw_content_t / websrv / svn / tecmint /
Nota: Es posible que los dos últimos comandos no se apliquen si está instalando SVN en un VPS con SELinux desactivado.
Lectura sugerida:Aprenda a deshabilitar SELinux temporal o permanentemente en Linux
Reanudar apache y verificar que el repositorio esté disponible.
En CentOS / RHEL / Fedora # systemctl reiniciar httpd En Debian / Ubuntu # systemctl reinicia apache2.
Luego, inicie un navegador web y apúntelo a http://192.168.0.100/svn/tecmint
. Después de ingresar las credenciales del usuario válido que creamos en Paso 1, la salida debe ser similar a:
En este punto no hemos agregado ningún código a nuestro repositorio. Pero lo haremos en un minuto.
Como mencionamos en la introducción, TortugaSVN es una interfaz fácil de usar para Apache Subversion. Es software libre con licencia GPL y se puede descargar desde https://tortoisesvn.net/downloads.html.
Elija la arquitectura (32 o 64 bits) que corresponda a su máquina e instale el programa antes de continuar.
En este paso usaremos una carpeta llamada Aplicación Web
dentro Documentos. Esta carpeta contiene un archivo HTML y dos carpetas denominadas scripts y estilos con un archivo JavaScript y CSS (script.js y styles.css, respectivamente) que queremos agregar al control de versiones.
Botón derecho del ratón Aplicación Web y elija SVN Checkout. Esto creará una copia local del repositorio remoto (que está vacío en este momento) e inicializará la carpeta para el control de versiones:
En la URL del repositorio, escriba http://192.168.0.100/svn/tecmint
y asegúrese de que el directorio de pago local siga siendo el mismo, luego haga clic en OK:
Ingrese el nombre de usuario y la contraseña (consulte Paso 2) y haga clic en OK:
Se le preguntará si desea realizar el pago en un directorio que no esté vacío. Confirmar para continuar con el pago. Una vez que esté completo, aparecerá una marca de verificación verde junto al nombre de la carpeta:
Clic derecho en Aplicación Web
de nuevo y elige Cometer esta vez. A continuación, escriba un comentario descriptivo para identificar más tarde esta confirmación y verifique los archivos y carpetas que desea implementar en el repositorio. Finalmente, haga clic en OK:
Dependiendo del tamaño de los archivos, la confirmación no debería tomar más de un minuto. Cuando esté completo, verá que ahora estamos en revisión 1, que coincide con la versión y los archivos enumerados en la interfaz web:
Si hay varias personas trabajando en los mismos archivos, querrá Actualizar su copia local para tener la última versión disponible para trabajar. Puede hacerlo haciendo clic derecho en Aplicación Web
y eligiendo Actualizar desde el menú contextual.
¡Felicidades! Ha configurado con éxito un servidor SVN y ha comprometido / actualizado un proyecto simple bajo control de versiones.
En este artículo hemos explicado cómo instalar y configurar un Apache Subversion servidor de repositorio en un CentOS 7 servidor, y cómo confirmar cambios en ese repositorio usando TortugaSVN.
Tenga en cuenta que hay mucho más para SVN y TortugaSVN de lo que podemos cubrir adecuadamente aquí (especialmente cómo volver a revisiones anteriores), por lo que es posible que desee consultar los documentos oficiales (SVN y TortugaSVN) para obtener más información y casos de configuración.
Como siempre, no dude en informarnos si tiene alguna pregunta. No dude en utilizar el formulario de comentarios a continuación para comunicarse con nosotros en cualquier momento.