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
- Instalar Apache Httpd en CentOS 7
- Instalar Subversion
- Configurar el repositorio de Subversion
- Generar SSL Letsencrypt para CentOS Apache Httpd
- Configurar el host virtual de Subversion en Apache Httpd
- 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.
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
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.
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
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’.
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’.
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.
Accede con el usuario y la contraseña ‘hakase’, y a continuación verás el resultado.
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.
Comprueba el ‘hakase-project’ desde el navegador web, y obtendrás todo el directorio de plantillas en él.
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.
Y cuando esté completo, comprueba el nuevo directorio ‘myproject’ y obtendrás todas las plantillas svn.
tree ~/myproject
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
Comprueba el repositorio desde el navegador web, y verás que todos los archivos se han añadido al repositorio.
La instalación y configuración de Apache Subversion con Letsencrypt HTTPS en CentOS 7 se ha completado con éxito.