Newsgroup: it.comp.www.php
Titolo: Applicazione multi-host

Ciao a tutti,
mi trovo nelle condizioni di dover fornire accesso ad un'webapp. a
piu' domini. Stavo pensando a come gestire la cosa al meglio evitando
ridondanza, cioe' evitare di ri-pubblicare n volte la stessa struttura
di file e directory per ogni host (francamente e' una situazione nella
quale non sono mai incappato).
La primissima cosa che mi e' balzata alla testa e' di creare un grosso
aliasing. In parole povere diciamo di posizionare l'applicazione in
una directory chiamata "core". Quindi creare le root-directory dei
singoli host, e linkare staticamente il contenuto di "core" nelle
directory host. Sono esclusi ovviamente i file di configurazione,
che oltre a fornire le necessarie customizzazioni contengono anche le
informazioni per l'accesso al DB.
Pensavo ad una cosa brutale del tipo: ln -s path/to/core/file path/to/
host/file. Potrebbe addiritura essere un sistema molto comodo per
gestire un qualsiasi aggiornamento.
Il fatto e' che mi sembra cosi semplice e lineare che a conti fatti
potrebbe trattarsi anche di un abbaglio o di una fregatura. Qualche
idea e/o suggerimento in proposito ?
Grazie a tutti
   Giuseppe

 e/o suggerimento in proposito ?
dovra forse combattere un po' con i permessi (ma se sei solo in lettura 
neanche tanto).
È una cosa che non ho mai fatto, quindi non mi ci sono mai scontrato.
Valuta anche la possibilità di montare con -bind il core nei vari vhost .

Praticamente stai facendo un'installazione multisite ;)
Uso questa tecnica con drupal, core unico, ogni sito ha i suo files,
configurazioni, moduli personalizzati e temi propri, in più può
'pescare' da moduli comuni quelli testati al 100%
se ti può interessare, mi ero scritto un appunto qui:
http://daniel-strae.posterous.com/configurazione-drupal-6-multisite-con-plesk
non è molto aggiornato, manca di qualche accorgimento, ma la base è
quella.. altrimenti googla per 'drupal multisite' e trovi mille tipi
di configurazione, a grandi linee è quello che devi fare te.

 di file e directory per ogni host
Lascialo fare al server web, aggiungi gli FQDN a cui deve rispondere 
alla configurazione.

 rispondere alla configurazione.
Uh, non capisco che vuoi dire :P
Saluti
   Giuseppe

 Uh, non capisco che vuoi dire :P
Che tipicamente i webserver possono associare una certa configurazione, 
ad esempio una cartella con i file del sito, a più di "un dominio".
Non c'è bisogno di creare un link "cartella_sito_B" che punti 
"cartella_sito_A", basta aggiungere "www.minnie.invalid" alla 
configurazione di "www.minoprio.invalid" e il webserver risponderà ad 
entrambi. Ovviamente vale anche per più di due nomi di dominio.
Se non mi sono spiegato non c'è problema, rileggi.

 ad esempio una cartella con i file del sito, a più di "un dominio".
[...cut...]
Ok, quindi se non ho capito male tu suggeriresti un situazione del
genere:
<VirtualHost 1.2.3.4>
ServerName www.vatteloapesca1.tdl
DocumentRoot /var/www/wepabb/public
...
</VirtualHost>
<VirtualHost 1.2.3.4>
ServerName www.vatteloapesca2.tdl
DocumentRoot /var/www/wepabb/public
...
</VirtualHost>
dove tutti i domini condividono la stessa DocRoot, e poi usare un
sistema via mod_rewrite o via direttamente via scripting per andare
a mappare le configurazioni corrette per i vari domini. Si potrebbe
funzionare in effetti...
Grazie
Giuseppe
Beppe


wrote:

Mhh in effetti così eviti di lasciare in giro per il server vari link
simbolici, potrebbe essere una valida alternativa.

 simbolici, potrebbe essere una valida alternativa.
Gia', si presenta come una tra le soluzioni piu' pulite e lineari.
Resta da vedere come gestire eventuali customizzazioni (di cui per il
momento non mi preoccupo) ad eventuali aree come i templates, ma per
il resto...

 domini. 
Cosa devi mappare?

 Cosa devi mappare?
Dei file *.ini che contengo delle direttive di configurazione e
(ovviamente) variano di dominio in dominio...
Ciao
Giuseppe

 il resto...
Questo dipende molto dal tuo applicativo.
Drupal gestisce la cosa in modo molto semplice: nella cartella /sites
ci sono le cartelle 'all', che contiene i file/moduli/temi in comune,
'default' (non utilizzata in multisite) con le configurazioni del sito
(sito singolo), poi una cartella per ogni dominio, tipo 
example.com
,
con la stessa struttura della cartella 'all' ma logicamente con files,
moduli e temi visibili solo per il domino 
example.com
.
A ogni richiesta, analizza il dominio richiesto e cerca la prima
cartella valida, ad esempio se il dominio è 
pippo.example.com
 drupal
cerca i moduli/temi nelle cartelle (in ordine):
/sites/
pippo.example.com
/sites/
example.com
/sites/com
/sites/default
/sites/all
questo dà anche una possibiltà in più se bisogna gestrire diversi
sottodimini di varie configurazioni.
Il sistema dei link simbolici è funzionale perchè in questo modo nella
cartella del sito avrai solo
/sites/all -> link simbolico alla cartella all della codebase drupal,
accesso in sola lettura
/sites/
example.com
 -> tutta la roba del domino
Forse invece dei link simbolici si potrebbe usare gli hard-link, che
se non ricordo male si autoaggiornano se sposti la codebase o se la
elimini, in modo da non avere link sparsi per l'hard disk.
Certo, puoi fare la stessa cosa con la DocumentRoot di apache..non
saprei, direi che andrebbero provate entrambe ;)

 o se la elimini
Un elemento che ha più hard link non lo puoi eliminare, eliminare vuol 
dire appunto cancellare tutti i descrittori che puntano a quel i-node.