Installazione
VM Linux
Si consiglia di creare la macchina virtuale Linux su Digitalocean o servizio assimilabile, rispettando i requisiti minimi richiesti.
L'infrastruttura è stata progettata per girare su una macchina virtuale linux basata su Ubuntu, preferibilmente aggiornata all'ultima LTS disponibile. Le caratteristiche minime attese sono:
- 2 CPUs (generiche)
- 4 GB RAM
- 80 GB disco, più volumi aggiuntivi da acquistare se necessario
2.2. Installazione delle dipendenze
Generare una SSH key per la nuova VM e installare la chiave pubblica su Gitlab, per avere accesso ai vari repository.
Installare i seguenti pacchetti, se non disponibili: - byobu - python3 e pip - age - git - docker e docker compose v2 - s3cmd
TODO: L'installazione di questi pacchetti è in fase di integrazione nello script setup.bash, in modo che non sia necessario farlo a mano.
2.3. Clonazione dei due repository fondamentali
La "galassia" di siti e servizi ISAA si basa su due repository git:
- infrastructure, con le risorse necessarie per l'infrastruttura della "galassia di siti ISAA";
- wordpress-isaa, che contiene l'immagine di base di siti basati su wordpress.
Per installarli basta posizionarsi in una directory a scelta (ad es. /root) e clonare i due repository richiesti.
cd /root
git clone git@gitlab.com:isaa_association/infrastructure.git
git clone git@gitlab.com:isaa_association/wordpress-isaa.git
2.4. Creazione dell'immagine wordpress_isaa
La prima operazione da compiere è la creazione dell'immagine Docker wordpress_isaa.
Questa immagine è derivata dal progetto Visible Wordpress Starter, ora sostanzialmente abandonware, ed è stata aggiornata a php 8.2 e per supportare nuove opzioni relative ai plugin e temi wordpress da installare e attivare automaticamente. Uno dei principali vantaggi portati dall'immagine wordpress-isaa è la possibilità di gestire quali plugin e temi installare in fase di startup del container. La lista di plugin e template è inserita negli specifici file .env di ogni sito. Ulteriori dettagli sono disponibili nella pagina wiki dedicata (TBW).2.5. Preparazione di sourceme.env
Le variabili di ambiente necessarie per configurare i vari servizi con i valori specifici per l'ambiente di produzione e di test sono contenute in due file:
- sourceme.dev.env, per avviare i servizi su una VM di test. Di default, gli URL dei vari siti in questo file sono impostati per il dominio conquering.space, di Marco Zambianchi., e ovvimente andranno personalizzati per dominio corretto da utilizzare.
- sourceme.ope.env, per avviare i servizi sulla VM di produzione "ufficiale". Qui gli URL dei siti sono impostati ai veri nomi a dominio registrati da ISAA.
La prima operazione da svolgere è di creare un softlink al file sourceme desiderato, come segue:
ATTENZIONE
La corretta creazione del file
sourceme.env è di importanza cruciale in quanto viene source-ato da tutti gli script dell'infrastruttura.
3. Set-up di infrastructure e dei dati persistenti
Terminata la creazione dell'immagine wordpress_isaa e predisposto il corretto sourceme.env, si può iniziare il setup dell'infrastruttura lanciando lo script setup.bash. Gli specifici task affidati a questo script sono meglio dettagliati nel paragrafo dedicato della wiki.
I dati persistenti verranno scaricati da Digital Ocaan Spaces in questa fase, e installati della directory /persistent. Anche in questo caso i dati richiesti da ogni specifico servizio sono segregati in directory dedicate. In /persistent sono anche presenti alcune directory particolari:
- dumpdb contiene i dump dei database dei vari servizi creati quotidianamente.
- dumpdb_anews contiene specificamente i dump del DB di AstronautiNEWS che sono creati ogni 4 ore.
- letsencrypt contiene il file acme.json con i certificati SSL generati da Traefik2 per i vari siti
Quando setup.bash avrà terminato di eseguire, l'ambiente sarà pronto per partire.
3.1 Cron job
Lo script setup.bash crea una serie di cron job:
- Backup quotidiano di tutti i dati persistenti su Digital Ocean Spaces, tramite infrastructure/scripts/backup_persistent.bash
- Dump quotidiano dei database, tramite infrastructure/scripts/dumpdb.bash
- Dump ogni quattro ore del database di AstronautiNEWS, tramite infrastructure/scripts/dumpdb_anews.bash
- Rimozione degli embed falliti in AstronautiNEWS, tramite infrastructure/scripts/cleanBrokenEmbeds.bash
- Disabilitato ma disponibile, sincronizzazione dei dati persistenti con l'ambiente di produzione tramite infrastructure/scripts/sync_with_prod.bash, utile se l'infrastruttura è installata su un server di development.