Introduzione CELIA (Corpus Elettronico delle Lingue dell Italia Antica) è un software open source per la gestione dell epigrafia dei corpus di lingue antiche. È scritto in PHP grazie al framework symfony Prerequisiti Prima di installare CELIA, si deve verificare che il server abbia ogni cosa installata e configurata correttamente. Una lettura approfondita di questo capitolo e l'esecuzione di tutti i passi richiesti per verificare la propria configurazione potrebbe far risparmiare molto tempo successivamente. Programmi di terze parti Prima di tutto, occorre verificare che il server disponga di un server web (come Apache), di un database MySQL e di PHP 5.2.4 (o una versione successiva). Per l'indicizzazione e la ricerca è necessaria un'installazione di Apache Solr 3.2.0 (o una versione successiva). Configurazione di PHP Siccome le configurazioni di PHP possono variare molto da un sistema operativo all'altro, o anche tra diverse distribuzioni Linux, occorre verificare che la propria configurazione di PHP soddisfi i requisiti minimi di symfony. Innanzitutto, assicurarsi di avere almeno PHP 5.2.4 installato, usando la funzione di libreria phpinfo(), oppure eseguendo php -v nella riga di comando. Fare attenzione: in alcune configurazioni, si potrebbero avere installate versioni di PHP diverse, una per la riga di comando e l'altra per il web. Quindi, scaricare lo script di symfony per la verifica della configurazione, al seguente indirizzo: http://sf-to.org/1.4/check.php Salvare lo script da qualche parte nella cartella radice del server web. Lanciare lo script di verifica della configurazione dalla riga di comando: $ php check_configuration.php Se c'è un problema con la configurazione di PHP, il risultato del comando darà alcuni consigli su cosa sistemare e su come farlo. Si dovrebbe eseguire lo script anche da un browser e sistemare gli eventuali problemi scoperti. Questo perché PHP può avere un file di configurazione php.ini diverso per questi due ambienti, con diverse impostazioni. ATTENZIONE Non dimenticare di rimuovere il file dalla cartella radice del server web quando si ha finito. Installazione di CELIA Inizializzare la cartella del progetto Il progetto usa Git. Per inizializzarlo: $ git clone gitolite@normandy.dmi.unipg.it:celia.git Inizializzare i sottomoduli L'applicazione utilizza diversi plugin di symfony per, ad esempio, la gestione degli utenti o la comunicazione con l'istanza di Solr. Questi plugin risiedono nella cartella plugins, mentre il framework stesso viene installato nella cartella lib/vendor del progetto. Sia il framework che i plugin vengono installati come sottomoduli del progetto tramite Git: $ cd celia $ git submodule init $ git submodule update Verifica dell'installazione Ora che CELIA è installato, verificare che sia tutto a posto, utilizzando la riga di comando per visualizzare la versione di symfony (attenzione alla V maiuscola):
$ php symfony -V Configurazione del database Il framework symfony supporta nativamente tutti i database supportati da PDO) (MySQL, PostgreSQL, SQLite, Oracle, MSSQL, ). Appoggiandosi a PDO, symfony è distribuito con due strumenti ORM: Propel e Doctrine. Quando si crea un nuovo progetto, Doctrine è abilitato in modo predefinito. La configurazione del database è semplificata dall'uso del task configure:database : $ php symfony configure:database "mysql:host=localhost;dbname=dbname" root mysecret Il task configure:database accetta tre parametri: il DSN di PDO, il nome utente e la password per accedere al database. Se non si ha bisogno di una password per accedere al database sul server di sviluppo, basta omettere il terzo parametro. Configurazione di Solr Un'installazione di Solr è già inclusa in un plugin, nella directory lib/vendor/solr. È un'installazione di default, l'unico file modificato è lo schema.xml. Nel caso in cui si voglia usare un'altra installazione basta aggiungere le seguenti righe nello schema, nella sezione types : <fieldtype name="epidoc" class="solr.textfield"> <analyzer> <charfilter class="solr.htmlstripcharfilterfactory"/> <tokenizer class="solr.whitespacetokenizerfactory"/> </analyzer> </fieldtype> Nella sezione fields : <!-- unique document id --> <field name="sf_unique_id" type="string" indexed="true" stored="true" required="true" /> <!-- indexed object class --> <field name="sf_meta_class" type="string" indexed="true" stored="true" required="true" /> <!-- indexed object id --> <field name="sf_meta_id" type="sint" indexed="true" stored="true" required="true" /> <!-- default search field --> <field name="sf_text" type="text" indexed="true" stored="true" multivalued="true" /> <field name="epidoc" type="epidoc" indexed="true" stored="true" multivalued="false"/> E dopo la definizione dei campi: <!-- Field to use to determine and enforce document uniqueness. Unless this field is marked with required="false", it will be a required field --> <uniquekey>sf_unique_id</uniquekey> <!-- field for the QueryParser to use when an explicit fieldname is absent --> <defaultsearchfield>sf_text</defaultsearchfield> <!-- copyfield commands copy one field to another at the time a document is added to the index. It's used either to index the same field differently, or to add multiple fields to the same field for easier/faster searching. --> <copyfield source="*_t" dest="sf_text" /> <copyfield source="*_s" dest="sf_text" /> Prima di far partire Solr bisogna creare la directory dei log. $ mkdir log/solr Una volta completata la configurazione si può far partire il servizio. Ovviamente Solr richiede un'installazione di Java. $ cd plugins/tjsolrdoctrinebehaviorplugin/lib/vendor/solr $ java -jar start.jar
Permessi sulla struttura delle cartelle Prima di provare ad accedere al nuovo progetto, occorre creare e impostare i permessi di scrittura sulle cartella cache/ e log/ ai livelli appropriati, in modo tale che il server web possa scriverci dentro: $ mkdir cache $ chmod 777 cache/ $ mkdir log $ chmod 777 log/ SICUREZZA L'applicazione è protetta da due delle vulnerabilità più diffuse sul web. Per prevenire gli attacchi XSS, l'escape dell'output è stato abilitato; per prevenire gli attacchi CSRF, è stato configurato un CSRF segreto. Configurazione del Web Server In ambito web è buona prassi posizionare all'interno della cartella radice del server web solo i file che necessitano l'accesso da parte del browser web, come ad esempio fogli di stile, JavaScript e immagini. All'interno della cartella web/ sono presenti alcune sottocartelle delle varie risorse web ( css/ e images/ ) e il front controller index.php. Questo è l'unico file PHP posizionato all'interno della cartella web. Tutti gli altri file PHP sono nascosti, non raggiungibili dal browser web, che è una buona soluzione per la sicurezza dell'applicativo. Configurazione del server web L'applicazione va resa accessibile esternamente usando un moderno server web, in questa sezione mostreremo la configurazione di Apache. Individuare e aprire il file di configurazione httpd.conf e aggiungere le seguenti righe alla fine dello stesso: <VirtualHost 127.0.0.1:80> ServerName celia.localhost DocumentRoot "/home/celia/web" DirectoryIndex index.php <Directory "/home/celia/web"> AllowOverride All Allow from All </Directory> Alias /sf /home/celia/lib/vendor/symfony/data/web/sf <Directory "/home/celia/lib/vendor/symfony/data/web/sf"> AllowOverride All Allow from All </Directory> </VirtualHost> NOTE L'alias /sf permette l'accesso alle immagini e file JavaScript necessari alla visualizzazione delle pagine predefinite di symfony e alla web debug toolbar. Su Windows, bisogna rimpiazzare la riga che definisce l' Alias con Alias /sf "c:\dev\celia\lib\vendor\symfony\data\web\sf" e /home/celia/web dovrebbe essere rimpiazzato con: c:\dev\celia\web La configurazione appena descritta rende il sito web raggiungibile al seguente URL: http://celia.localhost/ È possibile sostituire 8080 con qualsiasi altro numero, ma è preferibile utilizzare numeri superiori a 1024, in quanto non richiedono privilegi di amministratore.
SIDEBAR Configurazione di un dominio dedicato Il dominio celia.localhost utilizzato nella configurazione di Apache deve essere dichiarato localmente. Su un sistema Linux, modificare il file /etc/hosts. In un sistema Windows, invece, il file si trova nella cartella C:\WINDOWS\system32\drivers\etc\. Aggiungere la riga seguente: 127.0.0.1 celia.localhost Testare la nuova configurazione Riavviare Apache e controllare che sia possibile l'accesso alla nuova applicazione, aprendo un browser web e digitando http://celia.localhost/index.php/. TIP Se il modulo mod_rewrite di Apache è installato e attivo, è possibile rimuovere index.php/ dall'url. Questo è possibile grazie alle regole di riscrittura presenti nel file web/.htaccess. Licenza & Credits Parti di questa documentazione sono tratte dalla guida Getting Started with symfony ed è distribuita con licenza Creative Commons Attribuzione - Condividi allo stesso modo 3.0 Unported. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.