GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo configurar un servidor SVN en CentOS

Este tutorial explica cómo configurar y usar un servidor de repositorio SVN en CentOS. Antes de comenzar, permítanme explicar qué representa realmente SVN y para qué se utiliza. SVN es en realidad una abreviatura de SubVersion que fue creada por el desarrollador de software Apache. Le permite crear y mantener su propio repositorio y otorga derechos de acceso detallados a un usuario dedicado.

Es muy efectivo para controlar el versionado de archivos, documentos o carpetas. Es muy útil para cualquier grupo o equipo que pretenda iniciar sus propios proyectos de software.

1. Nota Preliminar

Para este tutorial, estoy usando CentOS 6.4 en la versión de 32 bits. El resultado final le mostrará cómo un cliente dedicado puede acceder al repositorio SVN utilizando cualquier tipo de plataforma de sistema operativo.


2. Instalación de SVN

Para comenzar con un servidor SVN nuevo, necesitamos instalar ciertos paquetes. Los paquetes relacionados son apache httpd, mod_dav_svn y subversion. El paquete HTTPD es necesario como servicio de servidor web para este proceso.

Como este tutorial usa el sistema operativo CentOS, tomaremos los paquetes del repositorio de yum. Puede usar otros paquetes como nginx, lighttpd o cualquier servicio de servidor web familiar para reemplazar httpd si lo desea. A continuación se muestran los pasos:

ifconfig
[[email protected] ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:192.168.43.101 Bcast:192.168.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4640 errors:0 dropped:0 overruns:0 frame:0
TX packets:6845 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:444461 (434.0 KiB) TX bytes:549473 (536.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2125 errors:0 dropped:0 overruns:0 frame:0
TX packets:2125 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:186888 (182.5 KiB) TX bytes:186888 (182.5 KiB)
yum install -y httpd
[[email protected] ~]# yum install -y httpd
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-26.0.1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
httpd i686 2.2.15-26.0.1.el6 OEL64 825 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 825 k
Installed size: 2.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : httpd-2.2.15-26.0.1.el6.i686 1/1
Verifying : httpd-2.2.15-26.0.1.el6.i686 1/1
Installed:
httpd.i686 0:2.2.15-26.0.1.el6
Complete!
yum install -y subversion
[[email protected] ~]# yum install -y subversion
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/1
Verifying : subversion-1.6.11-7.el6.i686 1/1
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!
yum install -y mod_dav_svn
[[email protected] ~]# yum install -y mod_dav_svn
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mod_dav_svn.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
mod_dav_svn i686 1.6.11-7.el6 OEL64 79 k
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 79 k
Installed size: 161 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : mod_dav_svn-1.6.11-7.el6.i686 1/1
Verifying : mod_dav_svn-1.6.11-7.el6.i686 1/1
Installed:
mod_dav_svn.i686 0:1.6.11-7.el6
Complete!


3. Configuración SVN

Genial, ahora la parte de la instalación está lista. A continuación, avanzaremos en la parte de configuración. Primero, creemos un directorio dedicado para el uso del repositorio SVN. Este es un proceso opcional, pero es una buena práctica cuando se implementa para un grupo de mayor escala. A continuación se muestran los pasos:

mkdir /data/svn

Ahora crearemos nuestro primer directorio de repositorios, lo nombraré repo1 . Como un cliente podrá acceder al repositorio a través del navegador o las herramientas del cliente SVN más adelante, otorgaremos la propiedad del directorio a apache, ya que es el propietario del servicio del servidor web. A continuación se muestran los pasos:

svnadmin create /data/svn/repo1
chown -R apache:apache /data/svn/repo1

Una vez hecho esto, notará que varias carpetas y archivos relacionados se crearán de forma predeterminada en nuestro nuevo directorio de repositorio.

cd /data/svn/repo1
ls
[[email protected] repo1]# ls
conf db format hooks locks README.txt


Ahora editamos el archivo de configuración para cumplir con nuestros requisitos. Primero, editaremos el archivo de configuración svnserver.conf para aceptar los privilegios relacionados que asignaremos al usuario otorgado. A continuación se muestran los pasos:

cd conf/
ls
[[email protected] conf]# ls
authz passwd svnserve.conf
vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

Luego crea un nuevo archivo llamado passwd que contendrá una lista de usuarios para el repositorio SVN. A continuación se muestran los pasos:

htpasswd -c /data/svn/repo1/conf/passwd jay
[[email protected] conf]# htpasswd -c /data/svn/repo1/conf/passwd jay
New password:
Re-type new password:
Adding password for user jay
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA

Listo, hemos creado con éxito un usuario para el uso del repositorio SVN. Vamos a crear 2 usuarios más para acceder al repositorio SVN. A continuación se muestran los pasos:

htpasswd /data/svn/repo1/conf/passwd fikri
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd fikri
New password:
Re-type new password:
Adding password for user fikri
htpasswd /data/svn/repo1/conf/passwd farid
[[email protected] conf]# htpasswd /data/svn/repo1/conf/passwd farid
New password:
Re-type new password:
Adding password for user farid
[[email protected] conf]# cat passwd
jay:14hCNCmBZY/qA
fikri:/hlooqJMfYLkw
farid:P7Zvu6B3HyFGo


Listo, ahora hay 3 usuarios listados para uso del repositorio SVN. Para esta práctica, me gustaría mostrar cómo podemos limitar los privilegios de un usuario. Asignemos el privilegio para acceder al repositorio repo1. Para hacer esto, necesitamos editar el archivo de configuración de authz. A continuación se muestran los pasos:

vi authz
[repo1:/]
farid = r
fikri = rw
* =

Según la configuración anterior, hemos establecido diferentes privilegios para los 3 usuarios que creamos anteriormente. Asignamos al usuario FARID privilegios de SOLO LECTURA, FIKRI privilegios de LECTURA ESCRITURA y JAY u otros no privilegios. Significa que más adelante en las pruebas le mostraré que el usuario JAY no podrá ver ningún archivo en el repositorio repo1.

Ahora editemos el archivo de configuración del servicio HTTPD.

vi /etc/httpd/conf/httpd.conf

Verifique que exista la siguiente línea para incluir archivos de configuración externos en el archivo httpd.conf. Si no existe, agréguelo al final del archivo.

[.....]
Include conf.d/*.conf
[.....]

Luego vamos al directorio conf.d para hacer algunos cambios en los archivos de configuración relacionados. Notará que ya hay un archivo subversion.conf. Edite el archivo para que el repositorio esté disponible para ser visto en el navegador. A continuación se muestran los pasos:-

cd /etc/httpd/conf.d/
ls
[[email protected] conf.d]# ls
mod_dnssd.conf README subversion.conf welcome.conf
vi subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repo1>
DAV svn
SVNPath /data/svn/repo1
Authtype Basic
AuthName "My Repository"
AuthzSVNAccessFile /data/svn/repo1/conf/authz
AuthUserFile /data/svn/repo1/conf/passwd
Require valid-user
</Location>

Las dos primeras líneas cargan el módulo apache SVN, las siguientes líneas definen que la URL /repo1 apunta a nuestro repositorio creado.

También establecimos que usuarios específicos tengan privilegios de lectura/escritura en elementos específicos dentro del repositorio mediante AuthzSVNAccessFile. La lista de usuarios se tomará del archivo /data/svn/repo1/conf/passwd.

Ahora reinicie el servidor HTTPD para cargar los cambios de configuración realizados.

service httpd restart
[[email protected] conf.d]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]


4. Fase de prueba de SVN

Comprobemos si la configuración que hemos realizado cumple o no el propósito. Para la fase de prueba, usaré 2 máquinas cliente diferentes. Usaré Microsoft Windows y un escritorio Linux CentOS 6.4.

Primero, iré a la máquina Linux CentOS 6.4 y revisaré el repositorio en el sistema local. Como cliente Linux, necesitamos instalar el paquete subversion para conectarnos al repositorio SVN.

yum install -y subversion 
[[email protected] ~]# yum install -y subversion 
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i686 0:1.6.11-7.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==============================================================================================================
Package Arch Version Repository Size
==============================================================================================================
Installing:
subversion i686 1.6.11-7.el6 OEL64 2.2 M
Transaction Summary
==============================================================================================================
Install 1 Package(s)
Total download size: 2.2 M
Installed size: 11 M
Downloading Packages:
--------------------------------------------------------------------------------------------------------------
Total 70 MB/s | 2.2 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : subversion-1.6.11-7.el6.i686 1/2
Verifying : subversion-1.6.11-7.el6.i686 2/2
Installed:
subversion.i686 0:1.6.11-7.el6
Complete!

mkdir repo_client
svn co http://192.168.43.101/repo1 repo_client
[[email protected] ~]# mkdir repo_client
[[email protected] ~]# svn co http://192.168.43.101/repo1 repo_client
Authentication realm: <http://192.168.43.101:80> My Repository
Password for 'fikri':
-----------------------------------------------------------------------
ATTENTION! Your password for authentication realm:
<http://192.168.43.101:80> My Repository
¡
can only be stored to disk unencrypted! You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible. See the documentation for details.
You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
Checked out revision 0.
[[email protected] ~]# cd repo_client/
[[email protected] repo_client]# ls -a
. .. .svn

¡Excelente! Hemos logrado verificar el repositorio desde nuestro servidor SVN usando el usuario fikri. Ahora, para verificar si este usuario tiene privilegios de LECTURA y ESCRITURA, crearemos una carpeta dentro del directorio del repositorio.

cd repo_client/
svn mkdir first_dir

Y luego confirme el cambio de nuevo en el repositorio:

svn commit -m "My first folder"

Verás esto:

Committed revision 1.

Lo que significa que nuestra confirmación fue exitosa.


¡Buen trabajo! Logramos crear una carpeta dentro del directorio del repositorio y la confirmamos.

Ahora probemos esto en una máquina con Microsoft Windows. Explore la URL del repositorio a través del navegador Firefox. Puedes usar cualquiera de tus navegadores favoritos para probarlo. Una vez que se haya ingresado la URL http://192.168.43.101/repo1 en el campo del navegador, aparecerá una ventana de autorización como la siguiente:

Inicie sesión con el usuario JAY. Asumiré que este usuario no podrá acceder a la página ya que no es miembro del grupo privilegiado.

Bien, ahora hagamos una prueba final para este tutorial. Usemos la máquina de Microsoft Windows como cliente SVN. Para hacer esto, tenemos que instalar un software de cliente SVN, para estos casos usaré TortoiseSVN. Puede descargarlo aquí o usar cualquiera de sus clientes SVN familiares.

Una vez instalado, cree una nueva carpeta en su máquina con Windows y asígnele el nombre testSVN.


Luego haga clic derecho en la carpeta, notará que hay enlaces para SVN CheckOut ahora (si no ve los enlaces, reinicie Windows). Haga clic en "Pagar SVN" para continuar.

Una vez hecho clic, se mostrará un cuadro emergente como el que se muestra a continuación. Ingrese el repositorio del servidor SVN en el campo URL y luego haga clic en Aceptar.

Se mostrará un cuadro emergente que le solicitará que ingrese un nombre de usuario y una contraseña para la autenticación. Para estos casos, utilizaremos el usuario FARID para continuar.

Una vez hecho esto, un cuadro emergente mostrará que el pago del repositorio SVN ha finalizado. A partir de aquí, podemos concluir que el usuario FARID tiene el privilegio de LEER desde el repositorio.

Notará que la carpeta que se creó anteriormente del usuario FIKRI existe en su directorio testSVN.

Para terminar la prueba. Probemos que el usuario FARID debería tener acceso de SÓLO LECTURA. Para hacer eso, vayamos dentro de la carpeta FIRST_DIR y creemos otra carpeta, la llamo SECOND_DIR

Una vez creada, haga clic con el botón derecho en la carpeta y desplácese hasta TortoiseSVN, verá que hay varias opciones enumeradas allí. Para continuar, haga clic en Agregar botón. Este botón agregará la carpeta que creamos al repositorio svn local.

Aparecerá un cuadro emergente como el siguiente, haga clic en Aceptar para continuar.

Una vez hecho esto, se mostrará un mensaje emergente como el siguiente. Ahora ha creado con éxito una carpeta en el repositorio de su cliente.

Aunque la carpeta se haya creado y agregado localmente con éxito, aún no está sincronizada con el servidor SVN. Por lo tanto, otros usuarios de otras máquinas no podrán ver la carpeta que acabamos de crear. Guarde y confirme la carpeta ahora. Para hacer eso, haga clic con el botón derecho en la carpeta y haga clic en Confirmar SVN según la siguiente captura de pantalla.


Aparecerá un cuadro emergente como el siguiente para solicitarle que confirme varios detalles. Escriba cualquier comentario opcional y haga clic en Aceptar para continuar.

Aparecerá un cuadro de autorización para solicitar un nombre de usuario de inicio de sesión. Escriba como usuario FARID y continúe.

Una vez hecho esto, se le mostrará un error que indica que tiene prohibido hacer los cambios. Esto es lo que esperábamos ya que el usuario farid solo tiene privilegios de solo lectura.

¡Felicidades! Ahora hemos configurado nuestro primer servidor SVN y configurado con éxito los privilegios adecuados en ciertas limitaciones de usuarios.


Cent OS
  1. Cómo configurar un servidor SFTP en CentOS

  2. Cómo configurar el servidor SysLog en CentOS 7 / RHEL 7

  3. Cómo configurar el servidor NFS en CentOS 7 / RHEL 7

  4. Cómo configurar el servidor SVN en CentOS, RHEL y Fedora

  5. Cómo configurar la replicación de MySQL en CentOS

Cómo configurar el servidor de impresión Samba en CentOS

Cómo configurar el servidor de correo electrónico Zimbra en CentOS 7

Cómo configurar un servidor de respaldo centralizado con Amanda en CentOS 7

Cómo configurar el servidor SysLog centralizado en CentOS 8 / RHEL 8

Cómo inicializar la configuración del servidor CentOS 7

Cómo configurar HAProxy en CentOS 8