diff --git a/2/SRI/assignments/fossil-setup/fossil-setup.md b/2/SRI/assignments/fossil-setup/fossil-setup.md new file mode 100644 index 0000000..ac38ba1 --- /dev/null +++ b/2/SRI/assignments/fossil-setup/fossil-setup.md @@ -0,0 +1,123 @@ +# Configuración de un Servidor Fossil + +Nicolás A. Ortega Froysa + +## Introducción + +Fossil es un sistema de gestión de versiones, considerado generalmente como +alternativa a Git, pero que contiene además soporte para muchos elementos que +suelen estar asociados a los proyectos de código, como serían Wiki y una +herramienta de gestión de tarea. Es una herramienta poco usada en ámbitos +generales, pero sí se usa para el proyecto conocido SQLite. También tiene la +ventaja de que todo está contenido dentro del mismo repositorio, y por tanto se +puede compartir fácilmente, y descentralizar el control del código. + +## Instalación de Fossil + +Antes de configurar nuestro servicio hemos de instalar Fossil en nuestro +servidor. Como estamos usando un sistema Debian, lo instalamos utilizando el +comando siguiente: + +``` +# apt install fossil +``` + +## Creación del Repositorio + +Una vez instalado, vamos a crear el repositorio como tal, que consta de un +archivo que guardaremos en el servidor. Para hacer esto primero hemos de crear +el usuario y grupo que se encargará de gestionar este repositorio. + +``` +# groupadd fossil +# useradd -d /srv/fossil -m -g fossil -s /usr/sbin/nologin fossil +``` + +Esto creará el directorio `/srv/fossil` que lo usaremos para guardar el archivo +del repositorio. Para crear el repositorio como tal hemos de correr el comando +siguiente: + +``` +# cd /srv/fossil +# fossil init semanaverde.fossil +project-id: 88b14f646618a2bbef27386242a857e56c55ced3 +server-id: 23476a9b53e66b1866c04de1d59a4947bb068869 +admin-user: root (initial password is "qbHCunmSj8") +``` + +Esto nos mostrará el usuario y la contraseña del usuario administrador, que +deberíamos guardarlo para luego. + +Finalmente, para que el usuario `fossil` pueda acceder al archivo (y más +importante, modificarlo) cambiamos el dueño del archivo: + +``` +# chown fossil:fossil semanaverde.fossil +``` + +## Configuración del Servidor + +El servidor de Fossil (web) se accede mejor por medio de un SCGI. Para esto, lo +que más nos conviene (en un sistema Debian) es crear un servicio de Systemd para +que se inicialice al iniciar el sistema. Para eso crearemos +`/usr/lib/systemd/system/fossil-server.service` con el contenido siguiente: + +``` +[Unit] +Description=Fossil user server +After=network-online.target + +[Service] +WorkingDirectory=/srv/fossil +ExecStart=/usr/bin/fossil server --scgi --localhost --port 8080 /srv/fossil/semanaverde.fossil +User=fossil +Group=fossil +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target +``` + +Ahora ya podremos gestionar nuestro servicio por medio de `systemctl` como +cualquier otro servicio. Como queremos habilitar y encender este servicio, +corremos los comandos siguientes: + +``` +# systemctl enable fossil-server.service +# systemctl start fossil-server.service +``` + +## Configuración del Proxy con Nginx + +Una vez que tengamos el servicio puesto, es necesario crear un proxy que apunta +(y traduce) a nuestro servidor Fossil. En nuestro caso usaremos el servidor HTTP +Nginx. Crearemos un archivo de configuración Nginx con el __path__ +`/etc/nginx/sites-available/repo.semanaverde.com.es.conf` con el contenido +siguiente: + +![Configuración Nginx Fossil](nginx-fossil.jpg) + +Ahora creamos un enlace simbólico para que Nginx vea esta configuración, +habilitándolo: + +``` +# cd /etc/nginx/sites-enabled +# ln -s ../sites-available/repo.semanaverde.com.es.conf ./ +``` + +Comprobamos que está escrito correctamente el código: + +``` +# nginx -t +``` + +Si todo sale bien, reiniciamos Nginx para poder tener acceso a nuestro servicio +de Fossil: + +``` +# systemctl reload nginx.service +``` + +Ya con esto podremos acceder a nuestro servicio Fossil desde +`repo.semanaverde.com.es`. diff --git a/2/SRI/assignments/fossil-setup/nginx-fossil.jpg b/2/SRI/assignments/fossil-setup/nginx-fossil.jpg new file mode 100644 index 0000000..218dd19 Binary files /dev/null and b/2/SRI/assignments/fossil-setup/nginx-fossil.jpg differ