Activitat 1. Instal·lació i configuració del nostre web server

De Lordwektabyte Wiki
Salta a la navegació Salta a la cerca

Objectius

L'objectiu serà aprendre a instal.lar i configurar el nostre web server, i començar a crear llocs virtuals. Concretament, crearàs el site que doni suport a l'assignatura d’aquest mòdul: http://localhost/M9

Enunciat

Les tasques a realitzar en aquesta pràctica són:

1. Instal·lar apache a una màquina virtual de nova creació

Em basaré en una màquina amb una instal·lació minimalista de CentOS 7 amb adreça IP 192.168.56.200.
Per a instal·lar Apache hem d'instal·lar el paquet httpd, disponible des dels repositoris base de CentOS:

yum install httpd -y

Per tal d'evitar problemes i simplificar la solució, desactivaré el SELinux i deshabilitaré el Firewall del sistema amb les comandes:

setenforce 0
systemctl disable firewalld
systemctl stop firewalld

Una vegada instal·lat el programa, el podem engegar i habilitar perquè arrenqui automàticament amb el sistema amb:

systemctl enable httpd
systemctl start httpd

Per a comprovar-ho, podem obrir el navegador des de l'ordinador client (la màquina física) i demanar per http://192.168.56.200. Si tot ha anat bé i Apache està funcionant, ens sortirà la pàgina principal que s'activa per defecte a l'instal·lar-lo:

M09UF1PT11.png


2. Crear el site http://localhost/M9

Simplificaré la creació d'aquest directori posant l'arrel del site al directori /var/www/html/M9 de manera que, la configuració per defecte d'Apache servirà el contingut d'aquest directori sense necessitat de fer-hi canvis.

Crearé el directori amb

mkdir /var/www/html/M9

i li donaré permisos al servidor web per tal que pugui llegir el contingut i servir-lo

chown apache.apache /var/www/html/M9

Una vegada creat el subdirectori, crearem un arxiu index.html que serà el que servirà el web server per defecte quan naveguem cap a http://192.168.56.200/M9

nano /var/www/html/M9/index.html

i hi afegirem un contingut HTML bàsic com ara

<h1>Web Guillem</h1>

desarem l'arxiu i obrirem el navegador i demanarem per http://192.168.56.200/M9 i ens sortirà el contingut de l'arxiu HTML que hem creat abans:

M09UF1PT12.png


3. Utilitza un port diferent del 80 per accedir a la web

Per exemple:
http://localhost:8080/M9


Per a poder canviar el port d'escolta del servidor web haurem de modificar l'arxiu de configuració del dimoni del servidor. En CentOS 7 (i versions equivalents de Fedora i Red Hat Enterprise Linux) es troba a /etc/httpd/conf/httpd.conf. Editarem l'arxiu amb nano, per exemple, i buscarem la línia on es defineix la directiva Listen:

(...)

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

(...)

Una vegada haguem localitzat aquesta línia, podem canviar el valor per defecte pel nou port que volguem configurar. Podem fer que deixi d'escoltar pel 80 i escolti pel 8080 o bé podríem optar per afegir una nova directiva Listen i fer que el servidor web escoltés en múltiples ports; sempre i quan no estiguin en ús per a altres serveis.

Jo opto per a deixar d'escoltar pel 80 i escoltar només les peticions pel 1996; de manera que la línia remarcada anteriorment es converteix en:

(...)

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 1996

(...)

A continuació hem de parar i tornar a engegar el servidor web per tal que recarregui la configuració nova i passi a escoltar peticions pel port 1996:

systemctl restart httpd

Una vegada aplicada la nova configuració, podem accedir a la web pel port triat, definint-lo a la URL tal que http://192.168.56.200:1996/M9 i obtindrem el mateix resultat que abans:

M09UF1PT13.png


Nota

Es pot veure que la directiva Listen permet un número com a argument per a referir-se al port a través del que volem que escolti el servidor, però també podem definir una combinació adreça IP+port en el format x.y.z.t:pppp. Això pot ser útil per a servidors on tenim més d'una targeta de xarxa i volem restringir l'accés a través de només una d'elles. Si el meu servidor estigués accessible en 2 xarxes diferents com ara 192.168.56.0/24 i 172.20.20.0/24, podria decidir que només els usuaris des de la xarxa 192.168.56.0 tinguessin accés si definís la directiva com:

Listen 192.168.56.200:1996

D'aquesta manera, li estic dient a Apache que només escolti les peticions HTTP que li provinguin per la targeta de xarxa que té IP=192.168.56.200 i que no escolti per la 172.20.20.X.

4. Protegir amb password i contrasenya el site http://localhost/M9

Recorda posar la directiva AllowOverride all. Un cop funciona, ho pots desactivar.

Per a protegir el directori de M9 d'usuaris no autoritzats podem afegir un arxiu de configuració addicional dins el directori mateix des d'on se serveix la web /var/www/html/M9 amb el nom .htaccess amb el següent contingut:

AuthType Basic
AuthName "Area restringida"
AuthUserFile /var/www/html/.htpasswd
Require valid-user

La línia important és la que defineix una ruta a un arxiu anomenat .htpasswd. És important perquè en aquest arxiu és on definirem una relació entre usuaris i passwords de manera que Apache consulti aquest arxiu per a saber si un usuari pot accedir a aquell directori o no. Per a crear aquest arxiu de claus, usarem la comanda htpasswd:

htpasswd -c /var/www/html/.htpasswd guillem

Aquesta comanda crea un arxiu .htpasswd a la ruta desitjada i ens demanarà la contrasenya que volem definir per a l'usuari que li passem com a últim paràmetre de manera que, una vegada "registrat" aquell usuari amb la seva contrasenya, podem veure que l'arxiu .htpasswd que s'ha creat té el següent contingut:

guillem:$apr1$9CRXnHWv$s4M.oat2SCzHMdKfz4Mhp0

on s'hi relaciona un usuari guillem amb un 'hash de la contrasenya que li hem definit. Si volem afegir més usuaris podem repetir la mateixa ordre que abans i afegir, per exemple, l'usuari xavi. Aleshores, el contingut serà:

guillem:$apr1$9CRXnHWv$s4M.oat2SCzHMdKfz4Mhp0
xavi:$apr1$MsHBx2XT$zCA5wq378FS15DWOq4Bdz/

Segons la configuració actual, la directiva Require valid-user permetria l'accés a qualsevol dels usuaris definits en l'arxiu .htpasswd:

Accés mitjançant l'usuari guillem


Accés mitjançant l'usuari xavi


Però podem modificar aquest comportament si en comptes de posar la directiva

Require valid-user</code>
la modifiquem per
<source>Require user guillem

Amb això estem restringint l'accés a només un usuari concret, encara que al fitxer .htpasswd també hi existeixi un tal xavi, de manera que podem accedir si som guillem però no ens permet l'accés si som xavi:

M09UF1PT16.png


5. Accedir a la web d'un company

Hem de conèixer la IP del company. Per ex, 192.168.10.20. Hauràs d'accedir a la seva web: http://<IP company>/M9 Recorda que el company haurà de permetre que una IP de la xarxa pugui entrar al seu site, modificant convenientment les directives Deny i Allow.

6. Fes el teu site segur amb un certificat SSL

https://localhost/M9

7. Instal·lar PHP. Configura el teu web server per a que pugui processar PHP. Per tant necessitem instal·lar els paquets necessaris de MySQL i PHP

8. Fes la teva primera pàgina PHP

Crea una pàgina PHP que mostri el teu nom i cognoms en pantalla per comprovar que tota la instal·lació anterior ha estat correcta.