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

Instalar Apache y configurar UFW

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

La Subversión o svn se usa ampliamente para proyectos grandes y comunidades de código abierto como Apache Software Foundation, FreeBSD, GCC, SourceForge, etc.

En este art√≠culo, le mostrar√© c√≥mo configurar Apache Subversion usando 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 mediante Letsencrypt SSL para el acceso al repositorio.

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

requisitos previos

  • Ubuntu 18.04
  • Privilegios de ra√≠z

Lo que haremos

  1. Instale 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. Pruebas

Paso 1: instale el servidor web Apache2 en Ubuntu 18.04 LTS

En este primer paso, instalaremos el servidor web Apache2 y agregaremos nuevos servicios ssh y HTTP a la configuración del firewall ufw.

Instale el servidor web Apache2 usando el comando apt a continuación.

sudo apt install apache2 apache2-utils -y

Una vez completada la instalación, agregue los servicios SSH y HTTP a la configuración del firewall ufw.

Ejecute los comandos ufw a continuación.

ufw allow ssh
ufw allow http

Habilite el cortafuegos.

ufw enable

Ahora inicie el servicio Apache2 y permita que se inicie cada vez que se inicie el sistema.

systemctl start apache2
systemctl enable apache2

El servidor web Apache2 est√° en funcionamiento y los servicios SSH y HTTP se agregaron a la lista de servicios de firewall.

Instalar Apache y configurar UFW

Paso 2: instale Apache Subversion (SVN)

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

Instale Subversion usando el comando apt a continuación.

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

Ahora verifique el comando svn.

svn --version

Apache Subversion (SVN) se ha instalado en Ubuntu 18.04 Server.

Instalar subversión

Paso 3: configure un repositorio de Subversion

Despu√©s de la instalaci√≥n de subversion, configuraremos el directorio del repositorio maestro de subversion. Crearemos un nuevo directorio ‘svn’ que se usar√° para almacenar todo el c√≥digo fuente y los repositorios.

Cree un nuevo directorio maestro ‘/svn’.

mkdir /svn

Y cree un nuevo repositorio de muestra llamado ‘hakase-project’ usando el comando svnadmin a continuaci√≥n.

svnadmin create /svn/hakase-project

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

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

Y se ha creado el repositorio svn.

Configurar un repositorio de Subversion

Paso 4: generar el certificado SSL de Letsencrypt

En este tutorial, configuraremos el servidor svn para usar la conexi√≥n HTTPS con un dominio llamado ‘svn.hakase-labs.io’. Usaremos el SSL gratuito Letsencrypt, y se puede generar con la herramienta certbot.

Instale certbot en el servidor Ubuntu usando el comando yum a continuación.

sudo apt install certbot -y

Una vez completada la instalación, debemos agregar el servicio HTTPS a las listas de servicios de firewall de ufw.

Ejecute los comandos ufw a continuación.

ufw allow https
ufw reload

Ahora detenga el servicio httpd, para que podamos generar SSL Letsencrypt utilizando el servidor web temporal ‘independiente’.

systemctl stop apache2

Instalar Certbot

Genere el SSL Letsencrypt para el nombre de dominio ‘svn.hakase-labs.io’ usando el comando certbot 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 que est√© completo, obtendr√° los archivos del certificado dentro del directorio ‘/etc/letsencrypt/live’.

Genere un certificado SSL con Let's encrypt

Paso 5: configure el host virtual de Subversion en Apache2

En este paso, crearemos una nueva configuraci√≥n de Apache httpd para el acceso svn. Configuraremos el repositorio svn usando un nombre de dominio ‘svn.hakase-labs.io’, y solo ser√° accesible para usuarios registrados que usen la autenticaci√≥n b√°sica HTTP.

Vaya al directorio de configuraci√≥n ‘/etc/apache2’.

cd /etc/apache2/

Cree una nueva configuraci√≥n de host virtual de subversi√≥n ‘svn.conf’ en el directorio ‘sitios disponibles’.

cd sites-available/
vim svn.conf

Pegue la configuración a continuación.

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

Guardar y Salir.

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

Cree un nuevo usuario llamado ‘hakase’ usando el comando htpasswd.

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

Configurar SVN vhost en Apache

Habilite el módulo SSL en apache y habilite el host virtual svn ejecutando los comandos a continuación.

sudo a2enmod ssl
sudo a2ensite svn

Reinicie el servicio Apache2.

systemctl restart apache2

Activa el vhost y reinicia apache

Se ha creado la configuraci√≥n de host virtual para subversion, y el usuario ‘hakase’ ahora tiene acceso para ver y enviar el c√≥digo fuente al repositorio ‘hakase-project’.

Paso 6 – Prueba

Ver repositorio

Abra su navegador web y escriba la URL del servidor, la mía es la siguiente).

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

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

Solicitud de autenticación de usuario

Inicie sesi√≥n con el usuario y la contrase√Īa ‘hakase’ y obtendr√° el repositorio de p√°ginas en blanco como se muestra a continuaci√≥n.

Iniciar sesión

Importar proyecto al repositorio SVN

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

Cree un nuevo directorio de proyectos svn-templates.

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

Agregue el directorio de plantillas al repositorio ‘hakase-project’ usando el comando svn a continuaci√≥n.

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

Se le preguntar√° sobre algunas cosas, act√ļe de la siguiente manera.

  • Escriba ‘p’ para agregar permanentemente el certificado Letsencrypt.
  • Escriba el usuario y la contrase√Īa ‘hakase’.
  • Y escriba ‘s√≠’ para confirmar que se guard√≥ la contrase√Īa sin cifrar.

Importar un proyecto

Verifique el ‘proyecto hakase’ desde el navegador web, y obtendr√° todo el directorio de plantillas en √©l.

Comprobar la importación del proyecto SVN

Clonar el repositorio

Después de crear y cargar el directorio de plantillas svn, intentaremos clonar el repositorio en el entorno local.

Inicie sesión como usuario normal/no root.

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

Clone al repositorio ‘hakase-project’ el directorio local llamado ‘myproject’ como un usuario ‘hakase’.

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

Clonar un repositorio SVN

Consulte el nuevo directorio ‘myproject’ y obtendr√° todas las plantillas svn.

tree ~/myproject

Ver repositorio

Confirmar código fuente

Vaya al directorio ‘miproyecto’.

cd myproject/

Cree algunos archivos en el directorio ‘troncal’.

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

Agregar y confirmar

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

Confirmar código en repositorio SVN

Verifique el repositorio desde el navegador web y obtendr√° todos los archivos que se agregaron al repositorio.

Resultado de la confirmación del código

La instalación y configuración de Apache Subversion en Ubuntu 18.04 LTS Server se completó con éxito.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *