Laboratorio

Modulo 16 - Creazione e mantenimento di un sito Web

Esperienza di un repository basato su CVS

Per la realizzazione di questo modulo useremo Netkit4TIC con la connettività con la rete reale (leggere il file README).

La configurazione (4KB) che andremo a provare consiste nella costruzione di un repository centrale e di un nodo generico per la simulazione dell'utilizzo del repository da parte degli utenti collegati in rete. Quindi lo scenario virtuale sarà composto da un nodo server repository, sede del repository, e da un nodo client node come postazione esempio per l'utilizzo del repository. A tale scopo è possibile utilizzare lo stesso nodo reale.
In generale i comandi per manipolare il repository hanno una forma per esteso che non prevede l'uso di variabili d'ambiente e una forma più sintetica che usa le varibili CVSROOT e CVS_RSH. Noi useremo quest'ultima forma.

Per prima cosa occorre aggiungere nel nodo server l'utenza. Per questioni di protezione delle directory l'utenza appartiene allo stesso gruppo che dovrà avere diritti di lettura e scrittura sul repository.
Nel nostro esempio sono stati costruiti i due utenti caio e tizio e il gruppo cvsgrp.

Decidiamo il path dove vogliamo radicare il repository, ad esempio /mnt/repository e inizializziamo il repository:

repository# export CVSROOT=/mnt/repository
repository# cvs init

Ora attiviamo il servizio ssh per dare connettività di rete al repository:

repository# /etc/init.d/ssh start

Tutti questi passi sono fatti automagicamente dallo lancio dello script:

realHost$ ./lab start

Sperimentazione

Selezioniamo il nodo node e ci autentichiamo come utente prg (password not24get):

node login: prg
Password: not24get

Generiamo una coppia di chiavi per l'accesso SSH e trasferiamo la chiave pubblica nell'host server (con IP 192.168.50.2) e dando "invio" alla richiesta di password nel comando ssh-keygen:

node$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/prg/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/prg/.ssh/id_dsa.
Your public key has been saved in /home/prg/.ssh/id_dsa.pub.
The key fingerprint is:
69:0a:2d:e8:bd:84:4e:40:5e:a0:89:52:e6:b9:80:f3 prg@node
node$ scp ~/.ssh/id_dsa.pub \
          tizio@192.168.50.2:/home/tizio/.ssh/authorized_keys2
The authenticity of host '192.168.50.2 (192.168.50.2)' can't be established.
RSA key fingerprint is c8:f2:e3:b3:02:2f:56:31:db:4b:83:1e:c7:8f:c9:9b.
Are you sure you want to continue connecting (yes/no)?yes
Warning: Permanently added '192.168.50.2' (RSA) to the list of known hosts.
Password:not24get
id_dsa.pub                                    100%  601     0.6KB/s   00:00

Ora occorre impostare le variabili d'ambiente:

node$ export CVSROOT=:ext:tizio@192.168.50.2:/mnt/repository
node$ export CVS_RSH=ssh

Siamo operativi! Facciamo subito una prova. Ci costruiamo una directory dove supponiamo abbiamo i file da inserire nel repository. Nel nostro caso abbiamo la directory test con all'interno il solo file apache2. Dall'interno della directory diamo il comando di inserimento nel repository della cartella corrente:

node$ cd test
node$ cvs import -m "First Test" test vtag rtag

Il comando inserisce nel repository una directory test e ci inserisce tutti i file presenti nella directory corrente. I file vengono marcati con vendor tag vtag e release tag rtag.

Ora possiamo costruire la "sandbox". Costruiamo una directory sb e diamo il comando di checkout:

node$ mkdir ~/sb
node$ cd ~/sb
node$ cvs checkout test
cvs checkout: Updating test
U test/apache2

Simuliamo una modifica (sostituendo uno 0 con un 1) e verifichiamo:

node$ mcedit test/apache2
node$ cvs diff test/apache2 
Index: test/apache2
===================================================================
RCS file: /mnt/repository/test/lab,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 apache2
2c2
< NO_START=0
---
> NO_START=1

per riportare le modifiche sul repository:

node$ cvs commit -m "magics" test/apache2
/mnt/repository/test/apache2,v  <--  test/apache2
new revision: 1.2; previous revision: 1.1

Installando i pacchetti cvsweb o viewcvs è possibile navigare il repository (ScreenShot) utilizzando un browser:

realHost$ firefox http://192.168.77.2/cgi-bin/cvsweb.cgi
realHost$ firefox http://192.168.77.2/cgi-bin/viewcvs.cgi

Esempio di applicazione: la storyboard

Come esempio di applicazione ed utilizzo del repository utilizzeremo il metodo che ho usato nella realtà quando sono stato incaricato di installare software o apparati di rete. In pratica ho utilizzato in prima istanza un foglio di carta in cui venivano descritte le operazioni che venivano fatte e poi salvavo da qualche parte i file di configurazione. Questo metodo quando viene informatizzato si trasforma in pagine Web protette da password e cifrate dove sono trascritte le operazioni effettuate e da dove si può comandare il download dei file. Questi appunti li ho in seguito chiamati storyboard.

Purtroppo, per ragioni di sicurezza, non possiamo mostrare il "vero" repository e mostriamo solo un esempio non reale. Vedremo un breve storyboard di una installazione di apache2.

Configuriamo apt in modo che faccia riferimento ai repository ufficiali Debian e che il database interno sia up to date:

vm# apt-get update

In seguito diamo il comando di installazione del pacchetto apache2:

vm# apt-get install apache2
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
  apache2-common apache2-mpm-worker
Suggested packages:
  apache2-doc
The following NEW packages will be installed:
  apache2 apache2-common apache2-mpm-worker
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 1035kB of archives.
After unpacking 2490kB of additional disk space will be used.
Do you want to continue? [Y/n]Y
Get:1 http://http.us.debian.org sarge/main apache2-common 2.0.53-5 [798kB]
Get:2 http://http.us.debian.org sarge/main apache2-mpm-worker 2.0.53-5 [204kB]
Get:3 http://http.us.debian.org sarge/main apache2 2.0.53-5 [32.4kB]
Fetched 1035kB in 16s (62.4kB/s) 
Selecting previously deselected package apache2-common.
(Reading database ... 32261 files and directories currently installed.)
Unpacking apache2-common (from .../apache2-common_2.0.53-5_i386.deb) ...
Selecting previously deselected package apache2-mpm-worker.
Unpacking apache2-mpm-worker (from .../apache2-mpm-worker_2.0.53-5_i386.deb) ...
Selecting previously deselected package apache2.
Unpacking apache2 (from .../apache2_2.0.53-5_i386.deb) ...
Setting up apache2-common (2.0.53-5) ...
Setting Apache2 not to start, as something else appears to be using Port 80.
To allow apache2 to start, set NO_START to 0 in /etc/default/apache2.
Apache2 has been set to listen on port 80 by default, so please
edit /etc/apache2/ports.conf as desired.
Note that the Port directive no longer works.
Module userdir installed; run /etc/init.d/apache2 force-reload to enable.

Setting up apache2-mpm-worker (2.0.53-5) ...
Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.

Setting up apache2 (2.0.53-5) ...

Ora disattiviamo apache:

repository:~# /etc/init.d/apache stop
Stopping web server: apache.

utilizziamo il file di configurazione nel CVS /etc/default/apache2 con "NO START" a 1.

repository# cp apache2 /etc/default/apache2
repository# /etc/init.d/apache2 start

Non differisce davvero dalla classica pagina del laboratorio virtuale, vero? In effetti spesso il mondo virtuale è lo storyboard di ...

Creative Commons License FREE THE MOUSE Valid HTML! Sandro Doro (email me)
Ultima modifica: $Date: 2006-11-04 17:21:36 $