Cómo configurar Apache Subversion con Letsencrypt HTTPS en CentOS 7

Apache Subversion o SVN es un software de control de versiones y revisiones de código abierto desarrollado por la Apache Software Foundation. Se utiliza para mantener las versiones actuales e históricas del código fuente, los documentos y las páginas web.

Subversion es utilizado por muchos desarrolladores de software y proyectos de código abierto como Apache Software Foundation, FreeBSD, GCC y SourceForge.

En este artículo, te mostramos cómo configurar Apache Subversion en el último servidor CentOS 7. Instalamos y configuramos el software svn con Apache como servidor web, lo aseguramos con Let’s encrypt y activamos la «autenticación básica» para los usuarios.

Requisitos previos

  • Servidor CentOS 7
  • Privilegios de root

Qué vamos a hacer

  1. Instalar Apache Httpd en CentOS 7
  2. Instalar Subversion
  3. Configurar el repositorio de Subversion
  4. Generar SSL Letsencrypt para CentOS Apache Httpd
  5. Configurar el host virtual de Subversion en Apache Httpd
  6. Probar

Paso 1 – Instalar Apache Httpd en CentOS 7

El primer paso de esta guía es instalar los paquetes de Apache httpd en tu sistema.

Instala Apache httpd utilizando el comando yum que aparece a continuación.

yum -y install httpd httpd-tools mod_ssl

Y una vez completada la instalación, tenemos que añadir el servicio HTTP a la lista de servicios de firewalld.

Ejecuta los comandos firewall-cmd que aparecen a continuación.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

Ahora inicia el servicio httpd y añádelo para que se inicie en el arranque.

systemctl start httpd
systemctl enable httpd

El httpd de Apache ya está en marcha en el servidor.

Instalar e iniciar el servidor web Apache

Paso 2 – Instalar Apache Subversion (SVN)

En este tutorial, instalaremos los paquetes de Subversion desde el repositorio base de CentOS 7.

Instala Subversion y todos los paquetes necesarios utilizando el comando yum que aparece a continuación.

yum -y install subversion subversion-tools mod_dav_svn

Espera hasta que todos los paquetes estén instalados y luego comprueba la versión de svn.

svn --version

Instalar Apache Subversion

Paso 3 – Configurar el repositorio de Subversion (SVN)

Tras la instalación de Subversion, configuramos el directorio del repositorio maestro de Subversion. Crearemos un nuevo directorio ‘svn’ donde se almacenará todo el código fuente y los repositorios.

Crea un nuevo directorio maestro ‘/svn’.

mkdir /svn

Y crea un nuevo repositorio de ejemplo llamado ‘hakase-project’ utilizando el comando svnadmin que aparece a continuación.

svnadmin create /svn/hakase-project

Ahora cambia el propietario del directorio ‘/svn/hakase-project’ al usuario y grupo ‘apache’.

sudo chown -R apache:apache /svn/hakase-project

Y el repositorio svn ha sido creado.

Configurar el repositorio SVN

Nota:

Adicionalmente para los usuarios de SELinux, ejecuta los comandos de abajo.

chcon -R -t httpd_sys_content_t /svn/hakase-project
chcon -R -t httpd_sys_rw_content_t /svn/hakase-project

Paso 4 – Generar el certificado SSL Let’s encrypt para Apache

En este tutorial, configuraremos el servidor svn para utilizar la conexión HTTPS con un dominio llamado ‘svn.hakase-labs.io’. Utilizaremos un certificado SSL gratuito de Let’s encrypt que se puede generar con la herramienta certbot.

Instala certbot en el servidor CentOS con el siguiente comando yum.

yum -y install certbot

Una vez completada la instalación, tenemos que añadir el servicio HTTPS a la lista de servicios de firewalld.

Ejecuta los siguientes comandos de firewalld.

firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload

Ahora detén el servicio httpd, para que podamos generar el SSL Letsencrypt utilizando el servidor web temporal «independiente».

systemctl stop httpd

Generar certificado LE SSL

Genera el certificado SSL Letsencrypt para el nombre de dominio ‘svn.hakase-labs.io’ utilizando el siguiente comando certbot.

certbot certonly --rsa-key-size 4096 --standalone --agree-tos --no-eff-email --email [email protected] -d svn.hakase-labs.io

Ahora obtendrás los archivos del certificado en el directorio ‘/etc/letsencrypt/live’.

Utiliza el software certbot

Paso 5 – Configurar el host virtual de Subversion en Apache Httpd

En este paso, crearemos una nueva configuración de Apache httpd para el acceso a svn. Configuraremos el repositorio svn utilizando un nombre de dominio ‘svn.hakase-labs.io’, y será accesible sólo para los usuarios registrados utilizando la autentificación básica HTTP.

Ve al directorio ‘/etc/httpd/conf.d’ y crea una nueva configuración svn ‘svn.conf’.

cd /etc/httpd/conf.d/
vim svn.conf

Pega las configuraciones de abajo.

<VirtualHost svn.hakase-labs.io:80>

ServerName svn.hakase-labs.io
DocumentRoot /var/www/html
Redirect permanent / https://svn.hakase-labs.io

</VirtualHost>

<VirtualHost svn.hakase-labs.io:443>

DocumentRoot /var/www/html
ServerName svn.hakase-labs.io

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/letsencrypt/live/svn.hakase-labs.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/svn.hakase-labs.io/privkey.pem

ErrorLog logs/svn_error_log
TransferLog logs/svn_access_log
LogLevel warn

<location /repo>
DAV svn
SVNParentPath /svn/
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/subversion/svn.users
Require valid-user
</location>

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>

SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Guarda el archivo y sal del editor.

A continuación, tenemos que crear una nueva lista de usuarios que podrán ver y enviar archivos al repositorio.

Crea un nuevo usuario llamado ‘hakase’ utilizando el comando htpasswd que aparece a continuación.

sudo htpasswd -cm /etc/subversion/svn.users hakase

Ahora reinicia los servicios httpd de Apache.

systemctl restart httpd

El usuario ‘hakase’ tiene ahora acceso para ver y confirmar el código fuente en el repositorio ‘hakase-project’.

Configurar el archivo svn.conf

Paso 6 – Prueba

Ver el repositorio

Abre tu navegador web y escribe la URL del servidor, la mía es esta: https://svn.hakase-labs.io/repo/hakase-project/

Y se te mostrará el aviso de autentificación básica de usuario.

Acceder a web-svn

Accede con el usuario y la contraseña ‘hakase’, y a continuación verás el resultado.

Repositorio SVN en el navegador web

Importar un proyecto al repositorio

Ahora importaremos las plantillas del proyecto de muestra svn al repositorio ‘hakase-project’.

Crea un nuevo directorio de proyecto svn-templates.

mkdir -p ~/svn-templates/{trunk,branches,tags}

Añade todo el directorio de plantillas al repositorio ‘hakase-project’ utilizando el comando svn que aparece a continuación.

svn import -m 'Initial import' ~/svn-templates/ https://svn.hakase-labs.io/repo/hakase-project/ --username hakase

Ahora se te preguntará lo siguiente.

  • Escribe ‘p’ para añadir permanentemente el certificado Letsencrypt.
  • Escribe el usuario y la contraseña de ‘hakase’.
  • Y teclea ‘sí’ para confirmar lo de guardar la contraseña sin encriptar.

Importar un proyecto al repositorio

Comprueba el ‘hakase-project’ desde el navegador web, y obtendrás todo el directorio de plantillas en él.

Proyecto mostrado en el navegador web

Clonar el repositorio

Después de crear y subir el directorio de plantillas svn, queremos clonar o copiar el repositorio en el entorno local.

Crea un nuevo usuario normal y accede a él.

useradd -m -s /bin/bash misaka
su - misaka

Clona el repositorio ‘hakase-project’ el directorio local llamado ‘myproject’ como usuario ‘hakase’.

svn co https://svn.hakase-labs.io/repo/hakase-project/ ~/myproject --username hakase

Y se te preguntará de nuevo por las cosas de abajo.

  • Escribe ‘p’ para añadir permanentemente el certificado Letsencrypt.
  • Escribe el usuario y la contraseña ‘hakase’.
  • Y teclea ‘sí’ para confirmar lo de guardar la contraseña sin encriptar.

Clonar el repositorio SVN

Y cuando esté completo, comprueba el nuevo directorio ‘myproject’ y obtendrás todas las plantillas svn.

tree ~/myproject

Vista en árbol del proyecto

Confirmar el código o los documentos

Ve al directorio ‘myproject’.

cd myproject/

Crea algunos archivos en el directorio ‘trunk’.

echo 'this is my repo' > trunk/test-hakase.txt
echo 'this is my repo01' > trunk/test-hakase01.txt
echo 'this is my repo02' > trunk/test-hakase02.txt

Añade y confirma.

svn add trunk/* --username hakase
svn commit -m 'new file added' --username hakase

Compromete los documentos en el svn

Comprueba el repositorio desde el navegador web, y verás que todos los archivos se han añadido al repositorio.

Documentos en el navegador

La instalación y configuración de Apache Subversion con Letsencrypt HTTPS en CentOS 7 se ha completado con éxito.

Referencia

También te podría gustar...