Ho seguito questa guida e non ho avuto problemi:
http://www.debuntu.org/2006/02/22/7-virtual-hosting-using-apache-2
In pratica:
- In /home/nicola/Pubblici/www/prova.com ho creato un file index.html
- Nella directory /etc/apaches/site-avaiable ho creato un file dal nome prova.com.conf così fatto:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
#We want to be able to access the web site using www.dev.example.com or dev.example.com
ServerAlias www.prova.com
DocumentRoot /home/nicola/Pubblici/www/prova.com
#if using awstats
ScriptAlias /awstats/ /usr/lib/cgi-bin/
#we want specific log file for this server
CustomLog /var/log/apache2/prova.com-access.log combined
</VirtualHost>
- ho aggiunto nel file /etc/hosts la voce
127.0.0.1 www.prova.com
- ho riavviato apache
- ho impostato i permessi di lettura alla cartella www:
sudo chmod -R a=rx /home/nicola/Pubblici/www
Il sistema operativo è fedora 11 a 64 bit. Ho installato apache 2 tramite il repository. Venendo da una ubuntu, le directory sono diverse, non si chiamano apache2 ma httpd.
In ogni caso, qui ho trovato una ottima guida su come fare per gestire più virtual host in locale:
http://www.mjmwired.net/resources/mjm-apache-virtual-sites.html
Per esempio ho questi due siti in locale:
/home/nicola/www/prova.com
/home/nicola/www/nicolacolonna.it
a questo punto come dice la guida occorre fare qualche modifica al file httpd.conf che in fedora 11 si trova nella directory /etc/httpd/conf/httpd.conf
La direttiva UserDir di default è disabilitata, occorre impostarla in questo modo:
<IfModule mod_userdir.c>
#
# UserDir is disabled by default since it can confirm the presence
# of a username on the system (depending on home directory
# permissions).
#
#UserDir disabled#
# To enable requests to /~user/ to serve the user's public_html
# directory, remove the "UserDir disabled" line above, and uncomment
# the following line instead:
#
UserDir /home/nicola/www</IfModule>
ho commentato UserDir disabled e impostato UserDir /home/nicola/www.
Poi ho tolto il commento alla direttiva NameVirtualHost
#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
poi ho compilato due virtual host:
<VirtualHost *:80>
ServerName prova.com
DocumentRoot /home/nicola/www/prova.com
<Directory /home/nicola/www/prova.com>
AllowOverride All
Options All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName nicolacolonna.it
DocumentRoot /home/nicola/www/nicolacolonna.it
<Directory /home/nicola/www/nicolacolonna.it>
AllowOverride All
Options All
</Directory></VirtualHost>
Ricordarsi di riavviare apache dopo ogni modifica al file httpd.conf:
sudo /etc/init.d/httpd stop
sudo /etc/init.d/httpd start
con sudo kwrite /etc/hosts vado ad inserire due righe nel file hosts:
127.0.0.1 prova.com
127.0.0.1 nicolacolonna.it
Dopo aver riavviato apache sia prova.com, che nicolacolonna.it puntano alla pagina di default di fedora. Per rimuoverla è sufficiente commentare il contenuto dl file /etc/httpd/conf.d/welcome.conf, come indicato nella stessa pagina di default.
Installando elgg ho dovuto abilitare il mod_rewrite di apache.
Per vedere se è già presente è sufficiente la funzione phpinfo, che restituisce, sotto la sezione apache2handler la voce Loaded Modules il modulo mod_rewrite.
Se non c’è, questo è quello che ho fatto per attivarlo:
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Poi ho aperto il file 000-default, nella directory /etc/apache2/sites-enabled, e modificato la riga
AllowOverride None
in
AllowOverride all
nel tag riferito al virtual host interessato (nel mio caso <Directory /var/www/>). Infine un ultimo riavvio di apache.
Può capitare, come capita sempre a me, che quando si installano wordpress, joomla, drupal e compagnia, spesso e volentieri l’installazione si interrompe perchè non si hanno i permessi per scrivere nella cartella www di Apache.
Occorre importare come user della cartella lo stesso utente usato da Apache per accedere al file system. In generale, con un
sudo cat /etc/group
si riesce ad individuare lo user ed il gruppo relativo, e poi è sufficiente il
sudo chown -R user:group
per assegnarlo alla cartella interessata.
Un’altro modo carino, che ho trovato nel forum italiano di Ubuntu è quello di creare un un file php con il seguente codice:
<?php echo exec('whoami') ?>
Chiamata la pagina l’utente appare sullo schermo.