Camargue: vademecum per l`amministratore di sistema

Camargue: vademecum per l'amministratore di sistema
Requisiti di sistema
Camargue funziona sia su Linux che su Windows, anche se su Linux è decisamente più collaudato.
I software necessari al funzionamento di Camargue sono:
•
Server Apache2 con htaccess (mod_rewrite) abilitato
•
PHP 5.2 o superiore
•
Mysql 5.0 o superiore (su localhost o su un'altra macchina)
Inoltre, se il sito prevede l'invio di e-mail, occorre anche installare (su Linux) i seguenti pacchetti (i
nomi potrebbero variare a seconda della distro, così come potrebbero anche essere già installati di
default):
•
sendmail
•
php-mail
Requisiti per un'installazione Camargue ex-novo
Per installare un Camargue 'fresco' (i.e. usando l'installer di Camargue) su un webserver occorre avere
una directory (la root del sito) sulla quale l'utente del web server (normalmente, e d'ora in poi in questo
documento, www-data) abbia accesso di scrittura. Questo perché durante l'installazione Camargue crea
alcune directory e alcuni file nella cartella root del sito.
Di norma serve anche che un utente (il webmaster) connesso in ftp o ssh possa creare e modificare i
file, ragion per cui sarebbe opportuno dare alla cartella in questione come owner il webmaster e come
gruppo www-data, dando alla cartella permessi di rw sia all'owner che al gruppo.
Una volta che Camargue è stato installato, si possono restringere i permessi come descritto nel
paragrafo Requisiti per un Camargue in produzione.
Installare Camargue usando l'installer
Dopo aver verificato i requisiti descritti nel paragrafo precedente, occorre creare sulla root del sito un
file index.php nella forma:
<?php
require {PATH_A_CAMARGUE.PHP};
Cmg::hiYo({PERCORSO_HTTP_DI_CAMARGUE_SRC});
?>
Dove:
•
{PATH_A_CAMARGUE.PHP} di solito è 'camargue/src/cmg/camargue.php' se la cartella
camargue sta nella root del sito, altrimenti da personalizzare secondo il caso (vedi più sotto
Condivisione dalla cartella Camargue tra vari siti)
•
{PERCORSO_HTTP_DI_CAMARGUE_SRC} di solito è '/camargue/src', se la cartella
camargue sta nella root del sito e se la root del sito è la root del dominio. Altrimenti da
modificare secondo il caso.
Fatto questo occorre creare un database MySQL in cui Camargue possa creare le proprie tabelle.
A questo punto si può chiamare l'index.php testè creato attraverso un browser (preferibilmente Chrome,
Chromium o Safari) e partirà l'installer di Camargue. Seguire le istruzioni e in pochi click
l'installazione sarà completata.
Requisiti per un Camargue in produzione
Una volta che tutte le cartelle e i file sono stati creati (o da un'installazione ex novo o perché qualcuno
ce li ha copiati da un'ambiente di sviluppo), quel che serve a livello di permessi è:
•
L'utente www-data deve poter leggere tutti i file (di norma si dà a tutto l'albero dei file wwwdata come gruppo).
•
Inoltre www-data deve avere diritto di scrittura sulle cartelle media e cache (si può settare
www-data come owner o dare il permesso di scrittura al gruppo: la prima è un po' più
restrittiva, ma la seconda offre un po' più di flessibilità nel caso il webmaster debba intervenire
manualmente per risolvere qualche problema in queste cartelle, cosa che di norma comunque
non dovrebbe essere necessario).
•
Diversamente da quanto richiesto per poter installare un Camargue ex-novo, non occorre che
www-data abbia diritto di scrittura sulla root del sito.
Impostazioni di sicurezza in php.ini
Per minimizzare il rischio di attacchi è opportuno disabilitare una serie di funzioni PHP potenzialmente
pericolose inserendo in php.ini la seguente direttiva (o aggiornandola se esiste):
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec,
curl_multi_exec, parse_ini_file, show_source
Massime dimensioni dei file da uploadare
Camargue, durante l'installazione, crea un file .htaccess nella root del sito in cui inserisce (tra le altre)
le seguenti direttive:
php_value upload_max_filesize 100M
php_value post_max_size 100M
Se sono necessari valori più alti occorre modificare il file e incrementare i limiti.
ATTENZIONE: su alcuni servizi di hosting queste direttive causano un Internal Server Error perché il
server è configurato in modo tale da impedire a htaccess di sovrascriverle. In questo caso occorre
rimuovere manualmente le due direttive e accettare i limiti imposti dal servizio di hosting.
Condivisione dalla cartella Camargue tra vari siti
Un sito fatto con Camargue ha di norma due cartelle contenenti i file sorgenti (php, html, javascript,
css, immagini e quan'altro). Una è la cartella di Camargue e di norma si chiama camargue, l'altra si
chiama custom, sta nella root del sito e contiene tutte le personalizzazioni.
Nel caso di un unico sito ospitato da un server, la cartella camargue sta di norma nella root del
medesimo (quindi parallela a custom). Se ci sono vari siti che girano su Camargue, non occorre
duplicare la cartella ma basta fare in ogni root di ogni sito un symlink verso una stessa cartella
camargue. In questo caso l'unico requisito è che la cartella camargue sia accessibile a www-data
(normalmente si setta su tutto l'albero www-data come gruppo).
Spostare i file di un sito su un nuovo server
Per spostare i file di un sito fatto con Camargue su un nuovo server basta copiarli sul nuovo server e
riassegnare i permessi come descritto sopra in Requisiti per un Camargue in produzione (al netto delle
necessarie impostazioni di DNS e di Apache sul nuovo server).
Fare un dump del database
Per fare un dump del database (con finalità di backup o per ricrearlo su un nuovo server mysql) occorre
esportare, oltre ai dati, anche le procedure. Il tool consigliato è mysqldump da riga di comando. La
sintassi del comando è la seguente:
mysqldump --routines -u {DBUSER} -p -h {DBHOST} {DBNAME} > {NOME_FILE}
verrà chiesta la password del database e verrà creato un file chiamato {NOME_FILE} contenente il
dump.
Per importare il dump in un database:
mysql -u {DBUSER} -p -h {DBHOST} {DBNAME} < {NOME_FILE}
ATTENZIONE: il dump del database contiene riferimenti all'utente del database di origine nelle
direttive per la creazione delle stored procedures. Se il nome utente del database di origine non è lo
stesso del nome utente del database di destinazione, occorre eliminare questi riferimenti. Nei sorgenti
di Camargue esiste uno script che fa questo lavoro. Il file si trova in:
{…}/camargue/src/@lib/sancho/sql/strip_definer.sh
Per usarlo occorre per prima cosa assicurarsi che sia impostato come eseguibile (che lo sia o meno
dipende da come sono stati copiati i file di Camargue sul server), ed eventualmente provvedere con:
chmod u+x {…}/camargue/src/@lib/sancho/sql/strip_definer.sh
Dopodiché occorre lanciare lo script seguito dal nome del file con il dump:
{…}/camargue/src/@lib/sancho/sql/strip_definer.sh {NOME_FILE}
Questo creerà un file chiamato {NOME_FILE}.nodefiner e questo potrà essere importato nel nuovo
database anche se i nomi degli utenti non corrispondono.