Gazie(1) è un applicativo gestionale scritto in PHP e JavaScript che si avvale di una base di dati MySQL e di un servente HTTP, in grado di gestire più aziende. Tuttavia esiste la possibilità di eseguire un'installazione multipla dell'applicativo, per gestioni alternative e indipendenti. Ciò che si vuole mostrare qui, a titolo di esempio, è un'installazione manuale collocata nella directory ~/public_html/gazie/
di ogni utente, di un sistema Unix comune.
Come si vede dalla figura, nel nodo principale (nodo 1) sono installati il servente HTTP (assieme all'interprete PHP), Gazie e le utenze personali, ognuna con una propria directory personale. Il DBMS MySQL può risiedere in un secondo elaboratore oppure anche nello stesso nodo principale.
Si prevede di installare Gazie, da qualche parte a partire dalla directory ~/public_html/
di ogni utente; pertanto, il servente HTTP deve essere configurato di conseguenza. A titolo di esempio, l'estratto seguente riguarda la configurazione di Mathopd, un servente HTTP molto semplice e spartano:
|
Naturalmente, deve essere concesso che i file terminanti con l'estensione .php
siano eseguiti automaticamente all'interprete PHP. Nel caso della configurazione di Mathopd, ciò significa avere una direttiva simile a quella seguente, la quale deve però apparire prima dell'estratto appena mostrato:
|
Nella configurazione del servizio HTTP, vanno tenuti in considerazione anche altri dettagli. In particolare occorre valutare i tempi massimi (timeout) di varie funzioni. Ci sono fondamentalmente due aspetti: il tempo massimo per l'esecuzione di programmi CGI e il tempo massimo per le risposte. Dal momento che Gazie deve produrre e inviare file PDF, questi tempi devono essere sufficienti a fare entrambe le cose. Nel caso della configurazione di Mathopd, viene suggerita una configurazione simile a quella seguente:
|
Presso lo stesso elaboratore che ospita il servente HTTP e Gazie, oppure in un altro, è necessario disporre le basi di dati personali per ogni utente, gestite attraverso MySQL. In generale può essere conveniente usare il nome dell'utente, così come viene riconosciuto dal sistema operativo, anche per il nome della base di dati personale e per il nominativo-utente riconosciuto dal DBMS MySQL. Intervenendo come amministratore di MySQL, possono essere impartiti i comandi SQL seguenti relativi all'utenza «tizio». Si opera nella base di dati amministrativa (mysql) per creare la base di dati tizio e l'utenza tizio, con parola d'ordine «erpopen», nella sua versione locale e in quella generale, per tutta la rete:
$
mysql --host=nodo --user=root --password=password mysql
[Invio]
mysql>
CREATE DATABASE tizio;
[Invio]
mysql>
GRANT ALL ON tizio.* TO tizio@'localhost'
\
\ IDENTIFIED BY 'erpopen' WITH GRANT OPTION;
[Invio]
mysql>
GRANT ALL ON tizio.* TO tizio@'%'
\
\ IDENTIFIED BY 'erpopen' WITH GRANT OPTION;
[Invio]
mysql>
\q
[Invio]
Il pacchetto della distribuzione di Gazie contiene, nella directory gazie/setup/
, un file con istruzioni SQL, adatto a generare tutte le tabelle necessarie a Gazie per il suo funzionamento. Si tratta di un file con un nome del tipo install_versione.sql
; altri file, con nome del tipo update_versione.sql
servono per aggiornare le tabelle alla struttura di una nuova versione di Gazie. Ogni utente che ha a disposizione una propria base di dati farebbe bene a predisporre il file ~/.my.cnf
con dati simili all'esempio seguente, dove si prende in considerazione il caso di «tizio».
|
In tal modo, volendo caricare i dati dell'azienda vuota, per la prima volta, potrebbe utilizzare il comando seguente, dove il nome «tizio» rappresenta in questo caso il nome della base di dati:
$
cat install_versione.sql |
\
\ mysql --host=nodo tizio
[Invio]
Inoltre, nella propria installazione personale di Gazie, ogni utente dovrebbe modificare il file .../config/config/gconfig.php
, come dall'estratto seguente:
|
Nell'esempio non è stato precisato in quale nodo si trovi la base di dati di MySQL, quindi, si tratta di sostituire nodo con qualcosa di più appropriato (per esempio potrebbe essere qualcosa del tipo mysql.mio.server.net:3306
). Si osservi che, di norma, il prefisso delle tabelle deve rimanere gaz.
Così come è semplice creare a mano la base di dati iniziale di Gazie, è facile anche fare una copia di sicurezza di una gestione già in corso:
$
mysqldump
\
\ -h nodo
\
\ -u utente
\
\ -pparola_d'ordine
\
\ --add-drop-database
\
\ --complete-insert
\
\ --dump-date
\
\ --hex-blob
\
\ nome_db
\
\ > file_sql
[Invio]
L'esempio mostra il salvataggio della base di dati rappresentata dalla metavariabile nome_db, per produrre il file di testo rappresentato dalla metavariabile file_sql.
La configurazione predefinita dell'interprete PHP prevede ciò che si definisce con la direttiva seguente:
|
Tuttavia, può darsi che per qualche motivo, la configurazione globale del sistema preveda qualcosa di diverso. Ma per il funzionamento corretto di Gazie è necessario che tale opzione sia configurata nel modo appena mostrato e a questo proposito è previsto il file .htaccess
con un'istruzione utile a informare il servente HTTP di questa opzione richiesta all'interprete PHP.
Purtroppo, il file .htaccess
viene recepito solo da alcuni serventi HTTP (soprattutto Apache), mentre viene ignorato da Mathopd e altri serventi alternativi. Per risolvere il problema, nel caso fosse necessario, a causa di una configurazione complessiva conflittuale, si possono predisporre dei file php.ini
, contenenti semplicemente la riga già mostrata, collocandoli nelle directory modules/*/
di Gazie (evitando però di lasciare questo file nella stessa directory /modules/
).
Gazie può essere installato in un qualunque sistema operativo, dove sia possibile gestire una base di dati con MySQL, assieme a un servente HTTP in grado di interpretare correttamente il linguaggio PHP. Per predisporre tutto questo in un sistema MS-Windows, in modo relativamente semplice, si può utilizzare XAMPP, oppure WampServer.(2)
XAMPP(3) è un pacchetto che integra Apache, MySQL, PHP e altre funzionalità, facilitandone l'installazione e la configurazione in vari sistemi operativi, tra cui MS-Windows e MacOSX. Una volta scaricato il file di installazione, avviandolo si procede attraverso le fasi descritte intuitivamente da questo video: ogv http://www.youtube.com/watch?v=uEUbNONsmuo. In alternativa si possono vedere le figure successive, prive di didascalia, ma disposte secondo la sequenza corretta.
Should I shortcuts to the startmenu/desktop? (y/n):
y
[Invio]
Should I proceed? (y/x=exit setup):
y
[Invio]
Your choice? (y/n):
n
[Invio]
Eventualmente, alla domanda appena posta si può rispondere affermativamente, se si vuole provare a installare XAMPP e Gazie in un'unità di memoria solida USB.
Press <Return> to continue:
[Invio]
Press <Return> to continue:
[Invio]
Please choose (1-7/x):
x
[Invio]
XAMPP va avviato dal menù delle applicazioni, dalla voce {XAMPP for Windows
}, {XAMPP control panel
}.
Quando si avvia XAMPP si ottiene un pannello di controllo delle applicazioni che compongono XAMPP stesso. Da lì occorre accertarsi che siano in funzione Apache e MySQL, altrimenti occorre provvedervi con i bottoni che suggeriscono l'avvio dei servizi.
Va osservato che i file da pubblicare con l'ausilio di Apache, ovvero del servente HTTP, vanno collocati a partire dalla directory htdocs\
. Ammesso che XAMPP sia stato installato nel disco C:
, come suggerito dalle figure di questo capitolo, si tratta precisamente della directory C:\xampp\htdocs\
. Per verificare la correttezza dell'installazione, si può visualizzare, con il navigatore, la pagina http://localhost/
, da dove si deve ottenere una presentazione di XAMPP.
WampServer(4) è un pacchetto che integra Apache, MySQL e PHP, facilitandone l'installazione e la configurazione in un sistema MS-Windows. Una volta scaricato il file di installazione, avviandolo si procede attraverso le fasi descritte intuitivamente dal video: ogv http://www.youtube.com/watch?v=GNQffKmROg8. In alternativa si possono vedere le figure successive, prive di didascalia, ma disposte secondo la sequenza corretta.
Viene richiesto di confermare o di specificare il navigatore da utilizzare. Per Gazie è preferibile usare Mozilla o un suo equivalente.
Quando WampServer è in funzione, appare un'icona nella barra delle applicazioni, da dove è possibile ottenere un menù:
Il servizio deve essere avviato, eventualmente richiedendolo espressamente con la voce {Put online
}; quindi, per verificare la correttezza dell'installazione, si può visualizzare, con il navigatore, la pagina http://localhost/
, da dove si deve ottenere una presentazione di WampServer:
Gazie viene installato, manualmente, nella cartella htdocs\
di XAMPP, oppure nella cartella www\
di WampServer, come si vede in questo video: ogv http://www.youtube.com/watch?v=Rd1PDBo5iTw. In pratica dovrebbe trattarsi della directory C:\xampp\htdocs\
o di C:\wamp\www\
, rispettivamente. Si parte dall'archivio compresso di Gazie, il quale contiene la directory gazie\
: tale directory viene copiata in C:\xampp\htdocs\
o in C:\wamp\www\
.
A questo punto, si avvia Gazie, visitando l'indirizzo http://localhost/gazie
, ma Gazie si accorge della mancanza della base di dati e propone di passare alla sua creazione:
<installa
>
Fatto ciò, l'installazione è completa e si può usare Gazie a partire dall'indirizzo http://localhost/gazie/
, da dove si accede inizialmente con il nominativo-utente amministratore e la parola d'ordine password.
Volendo amministrare delle gestioni separate e indipendenti, è possibile installare più copie di Gazie (ciò può essere particolarmente utile se si vuole provare una versione aggiornata di Gazie prima di utilizzarla per l'amministrazione in corso effettivamente). Per fare questo si procede copiando la directory gazie\
con un altro nome, per esempio gazie2\
; quindi, occorre modificare il file gazie2\config\config\gconfig.php
. Il contenuto di questo file va modificato come nel listato successivo, dove è evidenziato con un carattere più scuro il valore significativo.
|
Successivamente occorrerebbe procedere nuovamente con l'installazione della base di dati, come già descritto. Si veda eventualmente il video: ogv http://www.youtube.com/watch?v=kvfdC-alt6w.
I dati gestiti da Gazie sono costituiti da una base di dati di MySQL. All'interno di XAMPP e di WampServer è disponibile anche phpMyAdmin, con il quale è facile fare una copia di sicurezza dei dati, in forma di file sorgente SQL (ogv http://www.youtube.com/watch?v=ZVSjeEMT8Gk, ogv http://www.youtube.com/watch?v=vRPW_itT-b8). Dal menù di XAMPP o di WampServer si avvia phpMyAdmin:
phpMyAdmin è un'applicazione utilizzata attraverso il navigatore ipertestuale. In questo caso lo si vede in funzione all'interno di Internet Explorer:
Per salvare una copia della base di dati di Gazie, si seleziona la voce {Esporta
}. Nella scheda che appare si deve selezionare il nome della base di dati; in questo caso si chiama precisamente gazie:
Si devono selezionare le voci {Aggiungi DROP DATABASE
} e {Aggiungi DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENT
}; inoltre ci si deve accertare che la voce {Usa dati esadecimali per BLOB
} sia attiva:
Va richiesto espressamente di salvare in un file. In questo caso si sceglie di usare il nome gazie20091201.sql
. Al termine si conferma selezionando il bottone <Esegui
>.
Per ripristinare una base di dati, partendo da un file SQL, si utilizza sempre phpMyAdmin, scegliendo la scheda {Importa
}:
Si deve quindi selezionare il file da recuperare, nella casella {Percorso del file
}, quindi si può confermare con il bottone <Esegui
>.
Quando si vuole aggiornare Gazie, si procede normalmente alla sostituzione dei file che compongono il pacchetto, passando quindi alla conversione delle tabelle della base di dati già utilizzata. Naturalmente, dato che il procedimento potrebbe nascondere delle insidie, prima di pensare a un aggiornamento, occorre avere fatto una copia di sicurezza della base di dati (in modo da poter ripristinare il funzionamento con la vecchia versione di Gazie) ed essere sicuri di saperla ripristinare in caso di necessità (ogv http://www.youtube.com/watch?v=A0Vm3DWDXZY). Si comincia dal modificare il nome della cartella di Gazie, in modo da poter poi estrarre la nuova versione, senza sovrascrivere i file che contiene quella della versione più vecchia:
Successivamente si apre il pacchetto della nuova edizione di Gazie e si copia la cartella gazie\
, incollandola a fianco della vecchia cartella, già rinominata:
A questo punto, all'indirizzo http://localhost/gazie
si raggiunge la nuova edizione di Gazie, appena installata, ma questa si trova a interagire con la vecchia versione della base di dati. Gazie stesso se ne accorge e invita procedere all'aggiornamento:
È sufficiente seguire l'invito (di fare un clic sul riferimento in evidenza) per passare alla maschera di aggiornamento:
Se tutto si conclude correttamente e Gazie, dopo l'aggiornamento, funziona secondo le aspettative, l'aggiornamento è concluso e si può cancellare la cartella contenente la versione precedente. Se invece le cose non vanno come si attendeva, occorre eliminare la nuova versione di Gazie, ripristinare il nome corretto della cartella della versione precedente e va usato phpMyAdmin per il recupero dei dati allo stato precedente l'aggiornamento.
Gazie potrebbe essere offerto come servizio di un sito specializzato in contabilità. Un'operazione del genere certamente richiede lo studio relativo alle problematiche di sicurezza; tuttavia, qui si vuole mostrare sommariamente come potrebbe essere installato Gazie per consentire un accesso remoto, a più gestioni distinte, ognuna in una propria base di dati, senza entrare nelle problematiche della sicurezza.
Negli esempi del capitolo si dispone di un solo elaboratore in cui è installato MySQL, un servente HTTP e il PHP. Tale elaboratore risulta accessibile dalla rete esterna e il nome a dominio gazie.mio.dominio
si risolve nell'indirizzo IP dello stesso.
Si vuole offrire l'accesso alla directory /var/www/gazie/
(che inizialmente è vuota) attraverso il servente HTTP, mentre le varie versioni di Gazie vengono installate in /usr/lib/gazie-versione/
. A titolo di esempio viene mostrato un estratto del file di configurazione di Mathopd, ipotizzando di poter disporre del nome a dominio gazie.mio.dominio
per questo servizio.
|
La directory /var/www/gazie/
deve andare a contenere una serie di sottodirectory, corrispondenti a un numero progressivo: /var/www/gazie/1/
, /var/www/gazie/2/
,... In ogni sottodirectory si va a realizzare una struttura di directory e collegamenti simbolici, con la quale si riproduce il contenuto di una certa versione di Gazie, collocata in realtà nella directory /usr/lib/gazie-versione/
. Per esempio, così:
#
mkdir /var/www/gazie/1
[Invio]
#
cp -dpRl /usr/lib/gazie-versione /var/www/gazie/1
[Invio]
Una volta fatto questo lavoro, i collegamenti /var/www/gazie/*/config/config/gconfig.php
vanno rimpiazzati con copie dei file rispettivi e modificati, in modo da utilizzare ognuno una base di dati differente. L'estratto successivo ipotizza la base di dati e l'utente della stessa denominato gazie1, riferiti a /var/www/gazie/1/config/config/gconfig.php
. Si osservi la mancanza di una parola d'ordine:
|
Ogni gestione di Gazie che si intende realizzare deve avere una propria base di dati. Nell'ipotesi fatta nella sezione precedente, si tratta di crearne con nomi del tipo gazien (n sarebbe un numero intero positivo), associando alle stesse un utente con lo stesso nome. Si tratta di utilizzare istruzioni SQL come quelle seguenti:
#
mysql mysql
[Invio]
Il comando appena mostrato consente di connettersi con la base di dati amministrativa, denominata mysql, in qualità di amministratore; pertanto l'utente (che in questo caso è proprio root) deve disporre di un file ~/.my.cnf
configurato correttamente per questo scopo.
mysql>
CREATE DATABASE gazien
[Invio]
mysql>
GRANT ALL ON gazien.* TO gazien@'localhost';
[Invio]
mysql>
\q
[Invio]
A questo punto, però, la base di dati va popolata con le tabelle usate da Gazie, assieme ai dati iniziali predefiniti. Il file che contiene questo può essere collocato proprio nella directory /var/www/gazie/
e da lì caricato:
#
cat /var/www/gazie/inizio.sql | mysql gazien
[Invio]
Una volta realizzato quanto schematizzato nelle sezioni precedenti, a partire da http://gazie.mio.dominio/n/
si trova la gestione n amministrata con Gazie. Per concedere l'uso di una di queste gestioni è sufficiente comunicare la parola d'ordine dell'amministratore di Gazie (amministratore interno alla gestione di quella tale copia).
Gazie consente di controllare il prefisso usato per le proprie tabelle, nel file gconfig.php
. Tuttavia, è anche possibile avviare Gazie, specificando il prefisso che si intende usare, il quale, in tal caso, prevale sulla configurazione del file gconfig.php
. Questo metodo consente di installare una sola copia di Gazie, con una sola base di dati, per più gestioni distinte, in base al prefisso delle tabelle.
Per la configurazione del servente HTTP valgono le stesse considerazioni fatte nella sezione 100.3, mentre non ci sono problemi particolari per l'installazione di Gazie, in quanto non è necessario simulare la presenza di più copie e la configurazione del file gconfig.php
è unica e riferita a una sola base di dati.
Per selezionare una gestione rispetto a un'altra, in modo da selezionare questo o quel gruppo di tabelle, si avvia login_admin.php
aggiungendo ?tp=gaz.... Per esempio, per raggiungere la gestione che ha le tabelle con prefisso gaz123_..., si utilizzerà un URI del tipo http://.../modules/root/login_admin.php?tp=gaz123
.
In questa sezione si descrive l'installazione di Gazie presso il servizio http://www.altervista.org, come esempio per altri servizi simili. Va osservato che la gestione di Gazie, nella vita reale, implica la manipolazione e la conservazione di dati personali (per esempio le anagrafiche di clienti e di fornitori), cosa che generalmente comporta la necessità di gestire i sistemi informativi in proprio. Pertanto, l'esempio mostrato vale a fini didattici, per comprendere le problematiche tecniche dell'installazione di Gazie, ma senza esaurire le questioni legali che vanno invece affrontate nella professione.
Per l'esempio che viene qui descritto, si suppone di avere registrato presso http://www.altervista.org il nome appunti2, corrispondente al dominio http://appunti2.altervista.org (video: ogv http://www.youtube.com/watch?v=-_mTFdz3h98). Valgono quindi le convenzioni seguenti presso AlterVista:
|
Quando l'utenza presso AlterVista è stata creata ed è stato attivata anche la base di dati (è sufficiente la funzionalità base, gratuita), si può procedere con la preparazione di una copia di Gazie, da trasmettere al sito remoto. Questa copia di Gazie deve essere stata estratta in una directory e due file devono essere stati modificati. Il primo è config/config/gconfig.php
, dove vanno modificati i dati di accesso alla base di dati:
|
Come si vede, non è necessario specificare la parola d'ordine, perché l'accesso avviene localmente.
L'altro file da ritoccare è quello che serve per popolare la base di dati, il quale non deve contenere le istruzioni di creazione della base di dati stessa. Si tratta del file setup/install/install_versione.sql
:
|
Supponendo che questa copia di Gazie si trovi temporaneamente nella directory /tmp/gazie/
, occorre provvedere a trasmetterla presso AlterVista, con l'ausilio del servizio FTP. Nella figura successiva si vede l'uso di FileZilla:
Terminata la copia, si può provare a eseguire Gazie presso AlterVista, in questo caso all'indirizzo http://appunti2.altervista.org/gazie/; tuttavia, non avendo ancora predisposto la base di dati si ottiene necessariamente un errore:
Con la registrazione dell'utenza presso AlterVista è necessario anche attivare la funzione della base di dati. Questa va poi popolata con le tabella usate da Gazie, caricando il file setup/install/install_versione.sql
, modificato in modo da non avere istruzioni per la creazione e selezione della base di dati. In alternativa potrebbe essere caricato un file equivalente, prodotto come copia della propria gestione. AlterVista offre phpMyAdmin per queste operazioni:
Al termine del caricamento, Gazie è pronto per l'uso consueto:
Presso https://docs.google.com/open?id=0B7kc1cYTL1pjNDExMmRkM2QtNDE4MS00NmViLWIyZWQtNmRhNzlhNDk0YmFl è disponibile GZT, un sistema per la didattica con Gazie, installabile ovunque sia disponibile un servente HTTP che possa eseguire codice PHP e MySQL. Il nome del pacchetto di GZT contiene la data di realizzazione e la versione di Gazie che incorpora. È sufficiente estrarre il file dove il servizio HTTP può raggiungerlo, modificando il file gzt/inc/config.inc.php
con dati appropriati per raggiungere la base di dati e poche altre informazioni. Quindi si avvia raggiungendo l'URI che permette di aprire la pagina gzt/home.php
e tutto il resto viene predisposto automaticamente. Nell'estratto seguente si vedono le parti del file di configurazione che vanno controllate necessariamente:
|
Se il sito presso il quale si installa GZT non consente di usare la funzione set_time_limit() del PHP, occorre modificare l'impostazione della variabile $gzt_disable_set_time_limit, nel modo seguente:
|
Per eliminare le gestioni che risultano troppo vecchie, è sufficiente avviare periodicamente robot.php, manualmente o attraverso un comando di Cron, secondo le opzioni fornite dal sito ospitante.
Per avere un'idea di come funziona GZT, si può visitare l'indirizzo http://gzt.informaticalibera.net. Va tenuto in considerazione che un servizio del genere deve poter servire all'uso simultaneo da parte di molte persone; tuttavia, spesso i siti (gratuiti o a pagamento) che possono ospitare GZT, non consentono una frequenza troppo grande di connessioni alla base di dati MySQL. Pertanto, se si intende utilizzare effettivamente nella didattica un'installazione di GZT, occorre fare delle verifiche pratiche sul campo per valutarne la fattibilità.
Antonio de Vincentiis, Gazie: gestione azienda
WampServer
XAMPP
2) Allo stato attuale, se è possibile, è preferibile WampServer per il miglior funzionamento di Gazie; con XAMPP, invece, possono manifestarsi degli errori che normalmente sono inesistenti.
4) WampServer GNU GPL
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net