Apache2 és el servidor web més conegut, juntament a lighttpd o Nginx.
Podem instal·lar Apache2 directament en la nostra distribució Linux amb:
$ sudo apt-get install apache2
Amb el què immediatament podem veure si funciona accedint a la web:
http://<ip_del_server>
…i t'hauria d'aparèixer un missatge que diu «It works!».
Si hem d'instal·lar aplicacions web (CMSs com Wordpress, Moodle, Joomla!, Drupal, etc.) també sol ser necessari afegir els paquets php, mysql i phpmyadmin.
Per engegar i apagar Apache ho pots fer com la resta de serveis amb un:
$ sudo service apache2 stop
(comprova ara que si intentes accedir a la web et dona error).
Per tornar a engegar el servei Apache:
$ sudo service apache2 start
I per saber l'estat del servei:
$ service apache2 status
Els arxius públics principals del servidor web estan a /var/www/html
. Si feu
$ ls -la /var/www/html drwxrwxr-x 17 root root 4096 2011-05-01 22:45 . drwxr-xr-x 17 root root 4096 2010-11-08 14:15 .. -rw-r--r-- 1 root root 693 2011-04-22 13:49 index.html
En principi heu de veure un sol fitxer, index.html
. Si no especifiquem cap arxiu quan apuntem amb el navegador, aquest és el fitxer per defecte que visualitzem.
Prova de modificar aquest arxiu HTML de les següents maneres:
addgroup
. Si no estàs segur de com va, ja saps, UTILITZA EL MANUAL: $ man addgroup
permisos i propietari
(recordeu! usuari:grup) adequats a la carpeta /var/www/html, per tal que pertanyi al grup «web».adduser
, usermod
o directament modificant l'arxiu /etc/groups
.Recorda explicar a l'informe les comandes exactes que has utilitzat i justifica els permisos assignats.
Per instal·lar PHP a la darrera versió ho podem fer amb:
$ sudo apt-get install libapache2-mod-php
…i reiniciar el servei amb
$ sudo service apache2 restart
Per comprovar si funciona, aneu a la carpeta /var/www/html
i creeu un arxiu prova.php
amb el següent contingut:
<html> <body> <?php phpinfo(); ?> </body> </html>
Visualitzeu-lo amb el navegador. Recorda de posar una captura de pantalla a l'informe. I que es vegi l'escriptori, res de retallades.
L'apache permet visualitzar els arxius que hi ha a una determinada carpeta.
Per comprovar-ho, canvia el nom de index.html a index2.html.
RECORDA: A PARTIR D'ARA NO TREBALLIS COM A ROOT, SINÓ COM A USUARI PRINCIPAL («funky» si utilitzes el funkyserver).
Quin efecte té? (Explica-ho a l'informe i inclou pantallada).
La gent veu els nostres arxius si falta l'arxiu index.html
, això pot resultar un forat de seguretat ja per un descuit nostre podrien conèixer la estructura de la web i atacar arxius que contenen codi executable. Si ho volem evitar cal desactivar els «Indexes».
Busca articles on expliqui com desactivar els indexes de les següents maneres:
.htaccess
dins de la carpeta que vols anul·lar els índexes. També et caldrà activar l'ús d'aquests arxius al fitxer de configuració del directori virtual, en particular cal tocar el «AllowOverride», però abans de fer-ho documenteu-vos).Resultat final:
Realitza-ho, captura pantalles i documenta-ho adequadament a l'informe.
L'apache disposa de certs mòduls (complements o plugins) que afegeixen més funcionalitats al servei. Els arxius estan a:
/etc/apache2/mods-available
: tots els mòduls disponibles./etc/apache2/mods-enabled
: mòduls actius. Fixa't en què si els llistes veuràs que no son arxius, són enllaços simbòlics a la carpeta mods-available
.Una possible manera d'activar un mòdul és creant els enllaços adequats de mods-enabled a mods-available, però és massa «manual». És més còmode amb les comandes:
a2enmod
: activa mòdula2dismod
: desactiva mòdulÉs molt útil per un servidor que cada usuari pugui tenir el seu espai web i que no interfereixi al dels altres usuaris. Apache ho té contemplat amb el mòdul «userdir». Per activar-lo és tan senzill com:
$ sudo a2enmod userdir
El directori de /etc/apache/mods-enabled
(son links simbòlics) ara hi figura userdir, també:
zeus@zeusserver:~$ ls /etc/apache2/mods-enabled/ alias.conf authz_host.load deflate.load negotiation.conf rewrite.load userdir.load alias.load authz_user.load dir.conf negotiation.load setenvif.conf auth_basic.load autoindex.conf dir.load php7.0.conf setenvif.load authn_file.load autoindex.load env.load php7.0.load status.conf authz_default.load cgi.load mime.conf reqtimeout.conf status.load authz_groupfile.load deflate.conf mime.load reqtimeout.load userdir.conf
Si tenim l'usuari zeus
(cal crear l'usuari del sistema operatiu), podrem accedir a la carpeta '/home/zeus/public_html
' apuntant el navegador a:
http://<ip_del_server>/~zeus
La «tilde» de la lletra «ñ» s'aconsegueix amb [AltGr]+[ñ] (amb el teclat castellà). Si esteu en Windows i se us resisteix, premeu [Alt]+126 en el teclat numèric.
Per defecte, l'ús de PHP en els directoris d'usuari està desactivat. Ara l'activarem.
Troba un article que expliqui com activar el PHP en els userdir. Si ja has vist on estan els arxius dels mods-available
potser t'atreveixes a fer-ho per teu compte… oi? L'arxiu adequat és el phpX.conf
(on X és la versió: 7.1, 7.4, 8.0, …). En els comentaris de dintre de l'arxiu ja explica què cal fer exactament.
OJU! Pensa a reiniciar el servei!!
Els «Virtual Hosts» serveixen per poder tenir diverses «sites» (dominis) en una mateixa màquina. És una pràctica molt comuna, ja que la majoria de dominis no tenen gaires visites i, per tant, es poden allotjar al mateix servidor.
Similarment als mòduls, disposem de dos directoris on estan els arxius de configuració de les diverses «sites»:
L'objectiu d'aquest apartat serà tenir 2 dominis diferents al mateix servidor. Cadascun d'aquests dominis anirà a parar a una web d'un usuari diferent:
www.zeus.local
→ /home/zeus/public_htmlwww.mercuri.local
→ /home/mercuri/public_htmlULL: aquest exercici no el podreu fer si no heu entès i activat correctament el mòdul «userdir» (explicat més amunt).
Per poder-ho realitzar caldrà que facis diverses coses:
'/etc/hosts del CLIENT (on tens el browser) i del servidor
' (simulant un DNS) per tal que coneguin els 2 dominis i que apuntin a la IP del teu servidor.http://www.mercuri.local
/etc/apache2/sites-available
. Crea una nova site copiant l'arxiu 000-default.conf
a mercuri.conf
(has de tenir, doncs, 2 arxius) a «sites-available».mercuri.conf
amb:ServerName
(el default no la té ja que serveix a tothom qui ho demani).DocumentRoot
i el Directory
per tal que apuntin a la carpeta de l'usuari mercuri (public_html).$ man a2ensite
/etc/apache2/sites-enabled
cap al nou fitxer mercuri.conf
:zeus@zeusserver:/etc/apache2/sites-available$ ls /etc/apache2/sites-available/ 000-default.conf default-ssl.conf mercuri.conf zeus@zeusserver:/etc/apache2/sites-available$ ll /etc/apache2/sites-enabled/ total 8 drwxr-xr-x 2 root root 4096 2012-01-18 06:10 ./ drwxr-xr-x 7 root root 4096 2012-01-17 23:17 ../ lrwxrwxrwx 1 root root 26 2012-01-17 18:15 000-default.conf -> ../sites-available/000-default.conf lrwxrwxrwx 1 root root 26 2012-01-18 06:10 mercuri.conf -> ../sites-available/mercuri.conf
$ sudo service apache2 reload
www.elteunom.local
(per exemple www.enric.local
).NOTA: Aquest exercici és el que haureu de mostrar com a «demo» a classe.