Cómo configurar Apache Subversion con Let’s encrypt SSL en Ubuntu 18.04

Apache Subversion o SVN es un sistema de control de versiones y revisiones de software 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.

El Subversion o svn se utiliza ampliamente para los grandes proyectos y la comunidad de código abierto, como la Fundación del Software Apache, FreeBSD, GCC, SourceForge, etc.

En este artículo, te mostraré cómo configurar el Apache Subversion utilizando el servidor Ubuntu 18.04 LTS. Instalaremos y configuraremos el software svn con Apache como servidor web, habilitaremos la «autenticación básica» para los usuarios, y aseguraremos el acceso utilizando Letsencrypt SSL para el acceso al repositorio.

Y para los que prefieren GIT, el tutorial de GIT de Ubuntu 18.04 está aquí.

Requisitos previos

  • Ubuntu 18.04
  • Privilegios de root

Qué vamos a hacer

  1. Instalar el servidor web Apache2 en Ubuntu 18.04
  2. Instalar Apache Subversion (SVN)
  3. Configurar el repositorio de Subversion
  4. Generar SSL Letsencrypt para Ubuntu Apache2
  5. Configurar el host virtual de Subversion en Apache2
  6. Prueba de

Paso 1 – Instalar el servidor web Apache2 en Ubuntu 18.04 LTS

En este primer paso, instalaremos el servidor web Apache2 y añadiremos los nuevos servicios ssh y HTTP a la configuración del cortafuegos ufw.

Instala el servidor web Apache2 con el comando apt que aparece a continuación.

sudo apt install apache2 apache2-utils -y

Una vez completada la instalación, añade los servicios SSH y HTTP a la configuración del cortafuegos ufw.

Ejecuta los siguientes comandos ufw.

ufw allow ssh
ufw allow http

Activa el cortafuegos.

ufw enable

Ahora inicia el servicio Apache2 y habilítalo para que se inicie siempre al arrancar el sistema.

systemctl start apache2
systemctl enable apache2

El servidor web Apache2 está en funcionamiento y los servicios SSH y HTTP se han añadido a la lista de servicios del cortafuegos.

Instalar Apache y configurar UFW

Paso 2 – Instalar Apache Subversion (SVN)

En este tutorial, instalaremos los paquetes subversion y svn libapache desde el repositorio oficial de Ubuntu.

Instala Subversion utilizando el comando apt que aparece a continuación.

sudo apt install subversion subversion-tools libapache2-mod-svn -y

Ahora comprueba el comando svn.

svn --version

El Apache Subversion (SVN) ha sido instalado en el servidor Ubuntu 18.04.

Instalar subversión

Paso 3 – Configurar un repositorio de Subversion

Tras la instalación de Subversion, configuraremos el directorio del repositorio maestro de Subversion. Crearemos un nuevo directorio ‘svn’ que se utilizará para 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 un repositorio de Subversion

Paso 4 – Generar el certificado SSL de Letsencrypt

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

Instala certbot en el servidor Ubuntu utilizando el comando yum que aparece a continuación.

sudo apt install certbot -y

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

Ejecuta los siguientes comandos ufw.

ufw allow https
ufw reload

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

systemctl stop apache2

Instalar Certbot

Genera el Letsencrypt SSL para el nombre de dominio ‘svn.hakase-labs.io’ utilizando el comando certbot que aparece a continuación.

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

Y una vez completado, obtendrás los archivos del certificado dentro del directorio ‘/etc/letsencrypt/live’.

Generar un certificado SSL con Let's encrypt

Paso 5 – Configurar el host virtual de Subversion en Apache2

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

Ve al directorio de configuración ‘/etc/apache2’.

cd /etc/apache2/

Crea una nueva configuración de host virtual de subversión ‘svn.conf’ en el directorio ‘sites-available’.

cd sites-available/
vim svn.conf

Pega la configuración 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 /var/log/apache2/svn_error_log
TransferLog /var/log/apache2/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 /var/log/apache2/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Guarda y sal.

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.

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

Configurar el vhost de SVN en Apache

Activa el módulo SSL en apache y activa el host virtual svn ejecutando los siguientes comandos.

sudo a2enmod ssl
sudo a2ensite svn

Reinicia el servicio Apache2.

systemctl restart apache2

Activa el vhost y reinicia apache

La configuración del host virtual para subversión se ha creado, y el usuario ‘hakase’ tiene ahora acceso para ver y enviar el código fuente al repositorio ‘hakase-project’.

Paso 6 – Prueba

Ver el repositorio

Abre tu navegador web y escribe la URL del servidor, la mía es la de abajo).

https://svn.hakase-labs.io/repo/hakase-project/

Y se te mostrará la autenticación básica de usuario.

Solicitud de autentificación del usuario

Inicia sesión con el usuario y la contraseña ‘hakase’, y obtendrás la página en blanco del repositorio como la que aparece a continuación.

Regístrate en

Importar el proyecto al repositorio SVN

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 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

Se te preguntarán algunas cosas, actúa de la siguiente manera.

  • 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

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

Comprobar la importación de proyectos SVN

Clonar el repositorio

Después de crear y subir el directorio de plantillas svn, vamos a intentar clonar el repositorio en el entorno local.

Inicia sesión con el usuario no root/normal.

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

Clona en 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

Clonar un repositorio SVN

Comprueba el nuevo directorio ‘myproject’ y obtendrás todas las plantillas svn.

tree ~/myproject

Comprobar el repositorio

Confirmar el código fuente

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

Confirmar el código en el repositorio SVN

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

Resultado de la confirmación del código

La instalación y configuración de Apache Subversion en el servidor Ubuntu 18.04 LTS se ha completado con éxito.

Referencia

También te podría gustar...