Passes per a crear un virtual host: #
- Copiar el fitxer default del directori /etc/apache2/sites-available amb un altre nom (el nom és el que vulguem, a l'exemple posem el de la web):
cp /etc/apache2/sites-available/000-default /etc/apache2/sites-available/acme.conf
- Editar el nou fitxer amb els paràmetres que necessitem. Esborrem les directives que no necessitem. Normlament, tocarem la directiva
per posar una adreça IP i /o un port diferents. - A més, canviarem la ubicació del directori arrel del lloc virtual (DocumentRoot).
- Si la carpeta que conté els fitxers del lloc web no existeix, l'haurem de crear i ficar a dintre el contingut del lloc web MAI no posarem la carpeta del nou lloc web dintre de /var/www/html ja que és l'arrel del lloc web per defecte. Crearem una carpeta "germana" (per comoditat posarem tots els llocs web a la carpeta /var/www, però podem posar-los on vulguem), per exemple: mkdir /var/www/acme".
- Comprovem sintaxi dels fitxers de configuració de l'Apache (inclòs el que hem creat) amb:
apache2ctl configtest
(mireu també altres opcions de la comanda, per exemple "fullstatus"). 6. Si s'ha canviat el numero de port del lloc virtual, i Apache no escolta en aquest port, cal anar al fitxer /etc/apache2/ports.conf i afegir una directiva "Listen" amb el nou port. Per exemple:
"Listen 8008".
- Activar el nou lloc virtual: Això crea un enllaç tou (soft-link) des del directori sites-enabled cap al fitxer que acabem de crear a sites-available. En aquest directori es troben tots els llocs virtuals activats. Executem:
a2ensite acme.conf
- Activar els móduls que necessitem si cal. Per exemple, per suport de php5 cal fer: "a2enmod php5". Si posem a2enmod sense paràmetre, ens diu les opcions de que disposem.
- Reiniciar el servidor Apache: sudo service apache2 restart (o reload).
- Només si és necessari, podem desactivar un lloc virtual amb "a2dissite acme.conf" i desactivar un mòdul amb "a2dismod php5"
Default Virtual Host #
- El contingut del fitxer /etc/apache2/sites-available/000-default:
- Capçalera de virtual host, ha d'existir el tancament al final del fitxer
<VirtualHost *:80>
# Cal posar * (qualsevol IP i port 80 per defecte) o bé
# *:port (qualsevol IP, amb port determinat) o bé
# IP (adreça específica, port per defecte, serà 80) o bé
# IP:port (IP i port específic)
ServerAdmin webmaster@localhost # Adreça de correu de l'admin
DocumentRoot /var/www/html # Directori arrel del lloc virtual, on es trobarà el fitxer index.html
ErrorLog ${APACHE_LOG_DIR}/error.log # Directori on es troba el fitxer de logs
</VirtualHost>
Tenir més d'un lloc web al mateix servidor Apache #
-
Si volem tenir llocs web que semblin diferents (en realitat només hi hauria un) podem posar cada lloc web a un directori virtual. Això es pot aconseguir:
-
Creant un subdirectori que pengi del directori de DocumentRoot i posant a dintre els fitxers de lloc que volem veure.
-
Per exemple, si el directori de DocumentRoot és /var/www/html i volem tenir un Joomla i un Moodle (CMS d'exemple), crearem a dintre /var/www/html/moodle i /var/www/html/joomla i hi posarem els fitxers dels CMS esmentats.
-
Per accedir a cada un d'aquests llocs, al navegador client posarem:
http://<ip-servidor>/joomla
http://<ip-servidor>/moodle
- Amb la directiva Alias, que fa que dintre de DocumentRoot sembli que hi ha un directori nou que en realitat no es troba dintre del directori de DocumentRoot.
- Per exemple, si el directori de DocumentRoot és /var/www/html i volem tenir un Joomla i un Moodle (CMS d'exemple), si posem els fitxers a /var/joomla i a /var/moodle, posarem dues directives Alias amb la Directory associada:
Alias /joo "/var/joomla/" (joo serà el nom del directori que sembla penjar del DocumentRoot)
<Directory "/var/joomla/">
...
</Directory>
Alias /mdl "/var/moodle/"
<Directory "/var/moodle/">
...
</Directory>
Per accedir a cada un d'aquests llocs, al navegador client posarem:
http://<ip-servidor>/joo
http://<ip-servidor>/mdl
Varis Virtual Host al mateix servidor #
- Podem tenir més d'un virtual host al mateix servidor Apache. Evidentment han de diferenciar-se en alguna cosa uns dels altres. Com a mínim tindrem el virtualhost per defecte quan instal·lem Apache.
Mètode 1: Adreça IP #
-
Posem una adreça IP diferent per a cada lloc virtual.
-
Requereix que el Servidor tingui més d'una adreça IP.
-
Només hem de canviar a la directiva
l'adreça IP per a que sigui diferent de la dels altres VirtualHost.
<VirtualHost IP:80> amb el número de port que correspongui.
- Al navegador posarem, per accedir a un lloc o l'altre:
http://<IP1-server> (pel primer virtualhost)
http://<IP2-server> (pel segon virtualhost).
Mètode 2: port #
- Port: Posem un número de port diferent per a cada lloc virtual.
- Només hem de canviar a la directiva
el port
<VirtualHost IP:port> amb el número de port que correspongui.
- Al fitxer de configuració ports.conf ens hem d'assegurar que contingui l'etiqueta Listen que especifiqui el port. En el següent exemple estariem habilitant que es pugui utilitzar el port 8008
Listen 8008
-
Requereix que Apache escolti en tots els ports que indiquem als virtual hosts. Cal al fitxer /etc/apache2/ports.conf una directiva Listen per a cada port.
-
Al navegador posarem, per accedir a un lloc o l'altre:
http://<IP-server>:port1 (pel primer virtualhost)
http://<IP-server>:port2 (pel segon virtualhost).
Mètode 3: Nom #
- Posem un nom de host DNS diferent per cada lloc virtual.
- Es fan grups de VirtualHost amb la mateixa capçalera
. Per exemple, tots els VirtualHost tindran la capçalera:
<VirtualHost 172.16.0.1:80>
-
(es pot fer amb la capçalera per defecte <VirtualHost *:80>, si volem)
-
Depenent de la versió d'apache haurem de posar una línia "NameVirtualHost 172.16.0.1" (o sigui, el que vé darrera de VirtualHost a totes les capçaleres).
-
ATENCIÓ: Requereix que els noms de host que fem servir es puguin resoldre (és a dir, obtenir l'adreça IP a partir del nom de host).
-
Com que tots els VirtualHost tenen la mateixa capçalera, per diferenciar-los posem a dintre de cada VirtualHost una directiva ServerName, que indica el nom DNS del virtualhost:
<VirtualHost 172.16.0.1>
....
ServerName www.acme.com
ServerAlias web.acme.com # si volem tenir més d'un nom pel aquest lloc virtual, si no, no cal posar-la
....
</VirtualHost>
<VirtualHost 172.16.0.1>
....
ServerName altrelloc.acme.com
...
</VirtualHost>
- Al navegador posarem, per accedir a un lloc o l'altre:
http://www.acme.com (pel primer virtualhost, o bé, pel mateix lloc, hhtp://web.acme.com)
http://altrelloc.acme.com (pel segon virtualhost).