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.