VFront - Guida all'installazione

Versione documento: 1.03 - Ultima modifica: 2007-10-02

Licenza di questa documentazione

Copyright (c) 2007 Marcello Verona <marcelloverona@gmail.com>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License".

Requisiti di base

Per funzionare VFront necessita del seguente software:
Sono richiesti inoltre i seguenti moduli per PHP:
Opzionalmente si richiedono inoltre i seguenti moduli
Per le operazioni relative alla reportistica è richiesto il parametro allow_url_fopen impostato su TRUE.
Il parametro è impostabile nel file php.ini oppure nel file httpd.conf (non ad esempio in un .htaccess).
La sezione statistiche utilizza invece PEAR (http://pear.php.net/) per la generazione dei grafici. Sono richiesti dunque, oltre a PEAR i pacchetti:
Nota bene: al momento in cui si scrive il pacchetto Image_Graph è alla release 0.72. Questa release ha un piccolo bug nella generazione delle etichette dei grafici a torta, che non vengono mostrate senza generare alcun errore. Per risolvere il problema utilizzare la versione CVS del file Image/Graph/Plot/Pie.php recuperabile dall'indirizzo
http://cvs.php.net/viewcvs.cgi/pear/Image_Graph/Graph/Plot/Pie.php?content-type=text%2Fplain&view=co


2.1 Nota importante per gli utilizzatori di PostgreSQL

VFront fa grande uso delle viste dello schema "information_schema". Ci sono alcune viste che possiedono dei bug per quanto riguarda l'attribuzione dei diritti, errori documentati sui forum del sito di Postgres (Si legga ad esempio http://archives.postgresql.org/pgsql-bugs/2006-12/msg00168.php e
http://archives.postgresql.org/pgsql-hackers/2007-08/msg00329.php). Le viste coinvolte sono key_column_usage e table_contraints. Questi bug si sono trascinati in numerose versioni di Postgres dalla 7.4 (nella quale è stato aggiunto l'information_schema) alla 8.2.

La conseguenza delle viste "bacate" di Postgres su VFront è l'impossibilità di rilevare la presenza di chiavi primarie e chiavi esterne nelle tabelle, compromettendo il funzionamento dell'intera applicazione. Il problema non si presenta nel caso di utilizzo di un utente "SUPERUSER" come utente di VFront per leggere il database, scelta peraltro sconsigliata per ragioni di sicurezza.

Per risolvere il bug è possibile eseguire lo script presente nella cartella _install dal nome

_install/postgres.information_schema.bugfix.sql

come utente superadmin (ad es. "postgres"). Lo script (che ricrea le viste con le giuste attribuzioni di diritti) funziona sicuramente nella versione 8.1. Per altre versioni è forse necessario apportare alcune modifiche al bugfix.


Per chi ha fretta...

  1. Estrai i file di VFront sulla cartella htdocs di Apache
  2. Apri il file conf/conf.vfront.php e impostare correttamente i parametri seguendo i commenti del file
  3. Apri il file inc/conn.php e per includere il path reale del file di configurazione conf.vfront.php
  4. Esegui l'installazione da http://nome_del_server/path_vfront/_install/
  5. Accedi all'amministrazione di Vfront, inizializzalo e configura da interfaccia grafica diritti e tabelle.
  6. Appena hai più tempo leggiti il resto del documento...


Copia dei file ed impostazione dei diritti a file e cartelle

Scompattare l'archivio di VFront nella directory sottoposta a browsing.
La struttura della directory dovrebbe apparire così:

VFRONT_ROOT
- _install
- admin
- conf
- files
-- docs
-- tmp
-- xls_custom
- html
- img
- inc
- locale
- js
- plugins
-- FCKeditor
-- phpmailer
-- phpgettext
-- ods
- stats
- sty
- tmp
- usr
- xml

Alcune cartelle devono essere scrivibili da Apache. Queste sono:
Qualora si volesse utilizzare il debug attraverso il fil rpc.debug.txt (si veda oltre per una descrizione) anche questo file deve essere accessibile in scrittura da Apache.


Il file di configurazione

Il file di configurazione si chiama conf/conf.vfront.php. Per ragioni di sicurezza, si suggerisce di spostare la cartella conf in un'area del server non sottoposta a browsing.
Attraverso il file di configurazione si possono impostare gran parte dei parametri di VFront. Altri parametri relativi all'uso ed all'aspetto saranno impostabili mediante l'area di amministrazione e la configurazione delle variabili della tabella "variabili".

Connessione al database

La prima sezione del file di configurazione è relativa alla connessione al database.
E' possibile scegliere se utilizzare VFront come front-end di un database MySQL 5.x oppure PostgreSQL 8.x. Si ricorda che mentre il supporto per MySQL 5.x ha avuto numerosi test ed applicazioni reali, il supporto per PostgreSQL è allo stato attuale ancora instabile e da considerarsi in fase alpha.

I parametri richiesti sono:

$db1['dbtype']="mysql"; 
// indica la tipologia di databas: può essere "mysql" oppure "postgres". DEVE essere specificato

$db1['host']="localhost";
// host del server:

$db1['port']="3306";
// porta del server: di default 3306 per MySQL e 5432 per PosgreSQL

$db1['user']="nomeutente";
// utente per la connessione al database

$db1['passw']="segreta";
// password per la connessione al database

$db1['dbname']="banca";
// nome del database: nel caso di postgres utilizzare "public", cioè il nome dello schema

$db1['frontend']="vfront_test";
// nome del database di VFront. In postgres corrisponde al nome dello schema (si suggerisce "frontend")

$db1['postgres_dbname']="nome_database";
// nome reale del database (solo nel caso si utilizzi Postgres)


Impostazioni di autenticazione

VFront permette l'autenticazione mediante la propria tabella "utente", oppure mediante altro sistema. La logica di autenticazione e quella di accreditamento di diritti dell'utente sono infatti disgiunte.
Quando si fa un'autenticazione esterna (ad esempio mediante LDAP) se l'utente esiste viene automaticamente autenticato su VFront. Il passaggio successivo sarà l'accreditamento di diritti mediante la tabella utente: qualora l'utente esistesse su LDAP e non sulla tabella utente verrà automaticamente iscritto in questa, e gli saranno attribuiti i diritti di default (gruppo 0). Per maggiori informazioni sull'uso dei gruppi e i diritti degli utenti si rimanda alla documentazione di VFront.

Il parametro per l'autenticazione è

$conf_auth['tipo_external_auth']= ''; 
Se impostato ='' oppure =null l'autenticazione avverrà mediante il database di VFront e la sua tabella utente.
Gli altri parametri possibili al momento sono
Qualora si impostasse uno di questi parametri saranno richiesti altre variabili:

$conf_auth['campo_email']='email';
// indica il nome del campo database o LDAP per recuperare l'email dell'utente,
// utilizzata per l'autenticazione

$conf_auth['campo_password']='passwd';
// indica il nome del campo database o LDAP per recuperare la password dell'utente,
// utilizzata per l'autenticazione

$conf_auth['campo_nome']='nome'; // opzionale
// Indica il nome del campo database o LDAP da cui recuperare il nome dell'utente

$conf_auth['campo_cognome']='cognome'; // opzionale
// Indica il nome del campo database o LDAP da cui recuperare il nome dell'utente

$conf_auth['password_crypt']='md5'; // md5 | sha1 | null
// Qualora le password fossero archiviate come hash md5 o sha1 impostare questo parametro


Autenticazione mediante database presente sullo stesso server (solo MySQL)

Qualora si sia scelta l'autenticazione esterna mediante DB diverso da VFront, impostare i seguenti parametri :

$conf_auth['db']['database']='nome_database'; 
// deve risiedere sullo stesso server (Solo Mysql) -- per altri server utilizzare DB_EXT, SOAP o altri metodi

$conf_auth['db']['tabella']='nome_tabella';
// nome della tabella da interrogare per l'autenticazione

Autenticazione mediante database esterno e/o residente su altro server (MySQL, PostgreSQL, ODBC)


Qualora si sia scelta l'autenticazione esterna mediante DB esterno e|o residente su altro server, impostare i seguenti parametri
$conf_auth['db_ext']['dbtype']="mysql"; 
// Può essere "mysql" oppure "postgres" oppure genericamente "odbc"

$conf_auth['db_ext']['host']="localhost";
// host del server DB esterno utilizzato per l'autenticazione

$conf_auth['db_ext']['port']="3306";
// porta del server DB esterno utilizzato per l'autenticazione:
// di default 3306 per MySQL e 5432 per PostgreSQL

$conf_auth['db_ext']['user']="utente";
// utente per l'autenticazione

$conf_auth['db_ext']['passw']="barchetta";
// password

$conf_auth['db_ext']['dbname']="vfront_test";
// nome del database

$conf_auth['db_ext']['tabella']="utente";
// nome della tabella

$conf_auth['db_ext']['odbc_dsn']="";
// solo per connessioni ODBC: scrivere il DSN

Autenticazione mediante LDAP o Active Directory

Qualora si sia scelta l'autenticazione esterna mediante LDAP (o Active Directory) impostare i seguenti parametri :

$conf_auth['ldap']['base_dn']='o=Nome del server,c=IT';
// DN completo del server LDAP

$conf_auth['ldap']['host']='localhost';
// host del server LDAP


Autenticazione mediante SOAP (sperimentale)

L'autenticazione SOAP è sperimentale e per ora si basa su file WSDL
Qualora si sia scelta l'autenticazione esterna mediante SOAP impostare i seguenti parametri :

$conf_auth['soap']['wsdl']='';
// indirizzo http(s) del file WSDL

$conf_auth['soap']['function_get_user']='';
//nome di funzione per interrogare l'elenco degli utenti

$conf_auth['soap']['function_get_user_results']='';
// nome di funzione per recuperare i dati degli utenti


Sezione SMTP e e-mail

VFront utilizza la classe PHPMailer per l'invio delle email. Per maggiori approfondimenti si veda http://phpmailer.sourceforge.net/
E' possibile configurare l'invio di email tramite SMTP mediante i seguenti parametri:

$conf_mail['SMTP_AUTH']=false;
// indica se utilizzare un SMTP personalizzato. In caso contrario verrà utilizzato l'SMTP del server.

// Le seguenti tre variabili sono da impostare qualora l'autenticazione SMTP sia impostata su TRUE:

$conf_mail['SMTP']="";
// Indirizzo SMTP da utilizzare qualora si voglia fare uso di STMP personalizzato

$conf_mail['SMTP_AUTH_USER']="";
// utente smtp

$conf_mail['SMTP_AUTH_PASSW']="";
// password smtp


$conf_mail['MAIL_SENDER']="";
// email del mittente per gli invii effettuati da VFront (principalmente per il debug)
// ad esempio "noreply@vfront.org"

$conf_mail['MAIL_SENDER_NAME']="";
// Nome in chiaro del mittente per gli invii effettuati da VFront
// ad esempio "Admin VFront"

E' richiesto inoltre di impostare le costanti:

// mail amministratore di sistema
define('_SYS_ADMIN_MAIL','admin@vfront.org');

// mail dello sviluppatore (per le email di debug)
define('_DEV_MAIL','dev@vfront.org');
La mail dello sviluppatore può essere utile qualora si volesse far arrivare un debug allo sviluppatore. Le email vengono inviate qualora VFront generi un errore e il debug sia impostato su FALSE (si veda la sezione successiva)


Sezione Debug

La sezione debug consta di tre variabili qui descritte:
// errori a video | errori in email
$DEBUG_SQL=true;

In ambiente di produzione si consiglia di impostare la variabile su FALSE: in caso di errore verrà spedita una email all'amministratore ed allo sviluppatore. L'utente vedrà in questo caso una schermata dove si comunica che è stato generato un errore.
In caso la variabile sia TRUE gli errori e l'SQL verranno invece mostrati a video.

$RPC_DEBUG=true;
// scrivi le chiamate SQL in un file (di default ./rpc.debug.txt) - default: FALSE

Questa funzione  può essere molto utile per leggere cosa VFront ha eseguito mediante chiamate esterne. Il file ./rpc.debug.txt deve essere scrivibile da Apache.


Sezione Log

In questa sezione è presente una sola variabile che abilita o disabilita i log.
Il log di VFront permette di registrare data, ora, e autore di tutte le operazioni compiute attraverso le maschere, mostra uno storico dei record e permette un rollback delle cancellazioni e delle modifiche. Si consiglia caldamente di tenere il parametro impostato su TRUE.
$RPC_LOG=true;
// scrive un log delle chiamate SQL di inserimento, modifica e cancellazione - default: TRUE

Sezione localizzazione: lingua e codifica

In questa sezione sono impostate la lingua e la codifica. Le lingue sono impostate in modalità "language country" come ad esempio en_US per la dicitura "en". La traduzione del javascript avviene leggendo l'impostazione linguistica nelle sue due prime lettere (ad esempio per en_US verrà automaticamente letto 'en').
/**
* Language : Valori possibili: it_IT, en_US, fr_FR , etc.
*/
define('FRONT_LANG','en_US');
Per quanto riguarda la codifica si suggerisce di mantenere l'UTF-8:

/**  
* Encoding
*/
define('FRONT_ENCODING','UTF-8');

Sezione Path

In questa sezione sono configurati gli indirizzi web e sul server di VFront:

// path reale
define('FRONT_ROOT','D:/htdocs/vfront_test');

// path reale
define('FRONT_REALPATH','D:/htdocs/vfront_test');

// Path della document root
define('FRONT_DOCROOT','http://localhost/vfront_test');



// Nella maggior parte dei casi i seguenti si possono lasciare così come sono:

// path mysqldump (per l'esportazione di MySQL) - Default: mysqldump
define('_PATH_MYSQLDUMP',"mysqldump");

// path pg_dump (per l'esportazione di Postgres) - Default: pg_dump
define('_PATH_PG_DUMP',"pg_dump");

// path per il filesystem allegati
define('_PATH_ATTACHMENT',FRONT_REALPATH."/files");

// path di tmp per il filesystem allegati
define('_PATH_ATTACHMENT_TMP',FRONT_REALPATH."/files/tmp");

// path per il filesystem documenti utili
define('_PATH_HELPDOCS',FRONT_REALPATH."/files/docs");

// path di tmp accessibile via web
define('_PATH_TMP',FRONT_REALPATH."/tmp");

// path per i fogli di stile XSL allegati
define('_PATH_XSL',FRONT_REALPATH."/files/xsl_custom");

// path web per i fogli di stile XSL allegati
define('_PATH_WEB_XSL',FRONT_DOCROOT."/files/xsl_custom");


Sezione FOP

VFront utilizza Apache FOP ( http://xmlgraphics.apache.org/fop/ )per le trasformazioni XSL-FO e la generazione dei report in PDF.
FOP non è distribuito insieme a VFront, ma va scaricato ed installato a parte.

// Imposta se VFront può utilizzare l'applicazione FOP (true o false)
define('_FOP_ENABLED',true);

// Path di FOP sul server:
//define('_PATH_FOP','C:/fop-0.20.5/foptest/fop.bat');
//define('_PATH_FOP','/usr/local/fop/fop.sh');
Il server Apache deve poter eseguire FOP perché le funzioni vengano eseguite correttamente.


Sezione Allegati e Link

Ogni tabella del database su cui si sta eseguendo VFront può essere potenzialmente abilitata al supporto di allegati e link.
I seguenti parametri solitamente sono funzionanti e si consiglia di modificarli solo qualora si utilizzassero altre tabelle per allegati e link.
Si noti che in tal caso i nomi dei campi dovrebbero coincidere con quelli delle tabelle del database VFront.

// definizione della tabella allegato
define('_TABELLA_ALLEGATO',"{$db1['frontend']}.allegato");

// definizione della tabella link
define('_TABELLA_LINK',"{$db1['frontend']}.link");

Sezione Misc

In questa sezione sono definite costanti di vario genere:

define('_MAX_TEMPO_EDIT',240);
VFront è pensato come front-end multiutente: per evitare accessi concorrenti in modifica allo stesso record, c'è una procedura di "lock" del singolo record quando questo viene aperto in modifica da un utente. Questa costante esprime in secondi il tempo massimo secondo il quale il record debba essere considerato bloccato (di default 240 secondi, cioè 4 minuti).


define('_BASE64_PASSFRASE',"passfrase");
In alcune operazioni viene utilizzata una codifica in base64 di parametri negli URL. Questa costante imposta una frase per la codifica.

define('_IMG_LOGO',FRONT_DOCROOT.'/img/vfront090.jpg');
Indica il path del logo in alto a sinistra per le pagine di VFront

define('_NOME_PROJ','VFront');
Nome descrittivo dell'installazione di VFront  (ad esempio "Front-end Biblioteca" o semplicemente "VFront")



Inclusione del file di configurazione


Come ultima operazione di configurazione è necessario aprire il file inc/conn.php per scrivere il path reale del file di configurazione.
####################################################
#
# COLLEGAMENTO AL FILE CONF
#

// ad esempio
require_once("D:/htdocs/vfront_test/conf/conf.vfront.php");

// oppure
require_once("/var/www/vfront/conf/conf.vfront.php");


Procedura di installazione automatica

VFront possiede un installer automatico. Prima di avviare la procedura, assicurarsi che il file conf.vfront.php sia stato correttamente configurato. La procedura di installazione si avvia direttamente da web mediante l'url:

http://nome_del_server/path_vfront/_install/

La procedura richiederà
  1. Il path del file di configurazione, che verrà letto per l'installazione
  2. Un'autenticazione di alto livello sul database (root o simile) per creare le tabelle, l'utente specificato nel file CONF e i diritti a lui riservati 
  3. email e password per il primo utente (l'amministratore)
Durante l'installazione è possibile dare un'occhiata alle query che si stanno per eseguire.
Dopo l'installazione si consiglia caldamente di cancellare la cartella _install per ovvie ragioni di sicurezza.



Procedura di installazione manuale

Qualora non si volesse o non si potesse lanciare la procedura di installazione automatica procedere come segue:
  1. assicurarsi che il file conf.vfront.php sia stato correttamente configurato
  2. Modificare il file inc/conn.php per puntare correttamente al file di configurazione
  3. Creare l'utente database specificato nel file conf e attribuire diritti d'uso (SELECT, DELETE,INSERT, UPDATE) nonché il diritto SHOW VIEW sul database che si vuole leggere con VFront
  4. Attribuire i diritti d'uso sul database (o schema su Postgres) di VFront
  5. Attribuire i diritti di lettura sull' information_schema se necessario
  6. Eseguire sul server database i file _install/vfront.mysql.sql oppure _install/vfront.postgres.sql a seconda del DB che si vuole utilizzare
  7. Creare un utente nella tabella "utente" del database (o schema) di VFront che abbia livello=3 e gruppo=0. Nota bene che la password deve essere espressa in hash md5. Per generare un hash md5 della tua password utilizzare md5 da shell (su Linux) oppure utilizzare uno dei tanti convertitori presenti su web, ad es. http://pajhome.org.uk/crypt/md5/

Dopo l'installazione si consiglia caldamente di cancellare la cartella _install per ovvie ragioni di sicurezza.


Dopo l'installazione

Inizializzazione del sistema

Una volta eseguita l'installazione è necessario inizializzare il sistema. VFront deve leggere l'information schema e inserire le informazioni sul database che si sta leggendo nelle proprie tabelle. Per farlo
  1. Fare login con il proprio account di amministratore
  2. Accedere alla sezione amministrazione
  3. Nel primo menu scegliere "Inizializza registri"
Verrà avviata una procedura automatica che creerà le regole di base per la consultazione delle tabelle.
Per la configurazione delle tabelle si rimanda al manuale di riferimento di VFront.

Test impostazioni VFront

Si suggerisce inoltre di accedere al menu di Amministrazione, sezione "Varie" ed eseguire il "Test impostazioni VFront".

Per ulteriori informazioni si rimanda al manuale di riferimento di VFront.


// fine del documento