Skip to content

Latest commit

 

History

History
170 lines (109 loc) · 9.3 KB

File metadata and controls

170 lines (109 loc) · 9.3 KB

Guia d'Instal·lació Automatitzada de Django-Aula (Mètode Preferent)

Aquesta guia detalla el procés d'instal·lació automatitzada de Django-Aula que consisteix en tres fases consecutives automatitzades dissenyades per a desplegaments ràpids, nets i robustos en entorns de servidor..

Cada fase consecutiva s'executa mitjançant un script específic i és imprescindible seguir-les en l’ordre correcte.

Per començar el procés d'instal·lació, l'usuari instal·lador només caldrà complir els requisitis previs i que es descarregui i executi el primer script, tal i com s'explica a la Fase 1.

Fase Descripció Script
Fase 1 Instal·lació base de Django-Aula i configuració inicial install_djau.sh
Fase 2 Instal·lació i configuració del servidor web Apache setup_apache.sh
Fase 3 Automatització de tasques periòdiques (CRON) setup_cron.sh

Índex


1. Requisits i Preparació Prèvia

Abans d'iniciar la instal·lació, és imprescindible preparar l'entorn amb la informació i els permisos necessaris.

1.1 Requisits de Servidor

És altament recomanable:
👉 Configurar el servidor per garantir un mínim de seguretat (Usuaris, Root sense SSH, Claus d’accés, Fail2Ban)

1.2 Configuració de Correu i DNS

L'aplicació necessita una adreça de correu per a l'enviament de notificacions i la gestió de sessions.


2. Fases d’Instal·lació Automatitzada

L’aplicació s’instal·la i es configura mitjançant l’execució seqüencial de diferents scripts interactius.


2.1 Fase 1: Instal·lació i Configuració de Django-Aula (install_djau.sh + setup_djau.sh)

El primer script, install_djau.sh, realitza la preparació inicial del sistema: instal·la totes les dependències necessàries (Python, PostgreSQL, etc.), crea els directoris i ajusta els permisos de l’usuari amb el qual es fa la instal·lació (per defecte, usuari djau).

També clona el repositori de Django-Aula i instal·la altres eines administratives, especialment Fail2Ban, per a protegir l'accés per força bruta al servidor fent servir el servei SSH o d'altres.

Començament de la instal·lació:

Des del directori del compte d'usuari creat amb permisos sudo cal executar la següent instrucció, que descarregarà i executarà, només, el script install_djau.sh.

wget -q -O install_djau.sh https://raw.githubusercontent.com/ctrl-alt-d/django-aula/refs/heads/master/install_djau.sh && chmod +x install_djau.sh && sudo ./install_djau.sh

Execució de install_djau.sh

Durant l'execució, es demanarà:

  • Nom del directori d'instal·lació de l'aplicatiu Django-Aula.
  • Nom del directori per desar-hi les dades privades de l’alumnat.
  • Nom de l’usuari de Linux que instal·larà (usuari amb permisos sudo) Django-Aula.

Un cop finalitzat l'execució del primer script, s’executarà el segon, anomenat setup_djau.sh, de forma automàtica.

Execució automàtica de setup_djau.sh

Aquest script configura l’entorn de Python, instal·la els requeriments específics, personalitza Django-Aula per al centre educatiu i prepara la base de dades PostgreSQL.

La tasca principal d'aquest script automatitzar la personalització, mitjançant preguntes a l'usuari, d'un arxiu molt important anomenat settings_local.py, que es troba dins el directori aula. Dit això, un cop creat i personalitzat, sempre es pot editar manualment a posteriori.

Durant aquest procés es demanaran dades com:

  • Base de dades: nom i usuari administrador.
  • Dades del centre: nom, localitat i codi.
  • Domini: nom del domini/subdomini i tipus d’instal·lació (xarxa local interna “INT” o servidor públic a internet “PUB”).
  • Correu electrònic: adreça i contrasenya d’aplicació per SMTP, així com l’adreça visible per al destinatari.
  • Superusuari Django-Aula: correu i contrasenya per al superusuari admin.

Un cop finalitzada l'execució d'aquest script hi ha l'opció d'executar el script test_email.sh per provar l’enviament de correu prèviament configurat. Aquest script llegeix les dades de l'arxiu settings_local.py i sempre es pot executar manualment quan es vulgui fer una prova d'enviament de correu.


2.2 Fase 2: Instal·lació del Servidor Web Apache (setup_apache.sh)

Django-Aula fa servir el servidor web Apache, per tant, aquest script instal·la i configura el servidor web, activa el tallafocs UFW i gestiona la creació de certificats, autofirmats o amb Let's Encrypt, si es tracta d’una instal·lació en un servidor extern públic (VPS).

Execució:

Suposant que Django-Aula s'ha instal·lat en un directori anomenat djau, caldrà accedir al directori setup_djau del projecte i executar, amb permisos sudo, la següent instrucció. La informació precisa de la ubicació del script es proporcionarà a la finalització del scrip install_djau.sh de la Fase 1.

cd /opt/djau/setup_djau
sudo ./setup_apache.sh

El script prepara els fitxers de configuració (Virtual Hosts) segons el tipus d’instal·lació triat:

  • Servidor Intern (HTTP): sense certificats.
  • Servidor Públic (HTTPS) amb certificats auto-signats: ràpid de generar però un navegador mostrarà un missatge de no confiança que caldrà eludir expressament.
  • Servidor Públic (HTTPS) amb certificats reconeguts de Let's Encrypt: opció recomanada per un servidor típic exposat a internet.

Configuració Let's Encrypt (recomanada):

Caldrà contestar un seguit de preguntes que el script Certbot farà per poder generar els certificats pel nostre domini o subdomini.

Algunes d'aquestes preguntes seran:

  • Una adreça de correu vàlida.
  • Confirmació per habilitar HTTPS en ambdós dominis (amb i sense www).
  • Escollir l’opció “2” per redirigir automàticament el trànsit HTTP cap a HTTPS.

Els certificats de Let's Encrypt caduquen als 90 dies de la seva generació, però Certbot s'encarrega automàticament de programar l'autorrenovació dels certificats si falta menys d'un mes per la caducitat dels certificats existents. En aquest cas procedeix, de forma automàtica a la autorenovació dels certificats.

Un cop generats els certificats per Let's Encrypt sense errades, el script setup_apache.sh hi ha la possibilitat de fer dues proves opcionals:

  • Comrovar si Cetbot ha programat correctament l'autorenovació dels certificats en el sistema, per estar-ne segurs de que s'autorenovaran.
  • Fer una simulació de renovació dels certificats

2.3 Fase 3: Automatització de Tasques (CRON) (setup_cron.sh)

Django-Aula requereix dur a terme tasques periòdiques automatitzades.
Aquest script modifica el fitxer de sistema crontab per programar-les, inclosa la còpia de seguretat automàtica de la base de dades PostgreSQL.

Execució:

De nou, suposarem que Django-Aula s'ha instal·lat en un directori anomenat djau. Caldrà assegurar-nos que ja ens trobem al directori setup_djau del projecte i executar, amb permisos sudo, la següent instrucció.

cd /opt/djau/setup_djau
sudo ./setup_cron.sh

En finalitzar, el script informa de les tasques programades i dels horaris d’execució.

Un cop completada la Fase 3, el servidor estarà totalment operatiu i obtindreu, per pantalla, tota la informació que cal per accedir a l'aplicatiu, segons el tipus d'instal·lació que s'hagi triat.
Com exemple i per una instal·lació definitiva, podreu accedir a l’aplicació mitjançant el domini que s'hagi configurat, típicament quelcom com:

https://djau.elteudomini.cat