Diferència entre revisions de la pàgina «Servidors Web. Apache. Configuració II»

De wikijoan
Salta a la navegació Salta a la cerca
 
 
Línia 1: Línia 1:
 
__TOC__
 
__TOC__
=Introducció=
 
Seguim en la configuració del nostre servidor Apache. Farem que la nostra web de l'assignatura tingui un aspecte professional. L'associarem al domini ''www.iaw.org''.
 
 
 
=La web de l'assignatura: www.iaw.org. Utiltizar dominis en la xarxa local=
 
=La web de l'assignatura: www.iaw.org. Utiltizar dominis en la xarxa local=
 
'''actualització''': https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04
 
'''actualització''': https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04
Línia 68: Línia 65:
  
 
==Web de l'assignatura IAW d'un company==
 
==Web de l'assignatura IAW d'un company==
Aquesta prova la podeu fer amb el servidor d'un company (sabent quina és la IP, millor si és una IP fixa). I també es pot fer entre dues màquines virtuals.
+
Aquesta prova la podeu fer amb el servidor d'un company o del professor (sabent quina és la IP, millor si és una IP fixa). I també es pot fer entre dues màquines virtuals.
  
 
Editem el fitxer ''/etc/hosts'' amb la IP del company (i momentàniament deshabilitem la nostra referència local).
 
Editem el fitxer ''/etc/hosts'' amb la IP del company (i momentàniament deshabilitem la nostra referència local).
Línia 76: Línia 73:
 
*http://www.iaw.org
 
*http://www.iaw.org
 
i podem accedir al servidor del company. Recordem quin seria el procés:
 
i podem accedir al servidor del company. Recordem quin seria el procés:
#En el nostre client (Firefox) volem accedir a www.iaw.org
+
#En el nostre client (Chrome/Firefox) volem accedir a www.iaw.org
 
#El nostre fitxer /etc/hosts associa www.iaw.org a la IP 192.168.0.34
 
#El nostre fitxer /etc/hosts associa www.iaw.org a la IP 192.168.0.34
#Quan la petició arriba a la IP pel port 80, el servidor web localitza el fitxer ''index.html'' en la carpeta associada al site ''www.iaw.org'', segons consta en els fitxers de configuració de l'Apache.
+
#Quan la petició arriba a la IP del company pel port 80, el servidor web localitza el fitxer ''index.html'' en la carpeta associada al site ''www.iaw.org'', segons consta en els fitxers de configuració de l'Apache.
 
#La pàgina ja es pot servir en el camí invers fins arribar al client (el navegador web).
 
#La pàgina ja es pot servir en el camí invers fins arribar al client (el navegador web).
  
 
'''NOTA'''. També és important ficar els permisos correctes a la carpeta html/, o bé canviar-li el propietari. Recordem que l'accés al recurs web es fa a través de l'usuari ''www-data''.
 
'''NOTA'''. També és important ficar els permisos correctes a la carpeta html/, o bé canviar-li el propietari. Recordem que l'accés al recurs web es fa a través de l'usuari ''www-data''.
  
=Utilitzar https://www.iaw.org=
+
=La web de l'assignatura: http://www.iaw.org=
De la mateixa manera que ja funciona https;//localhost/iaw, i també http://www.iaw.org, ara ja estàs en condicions que configurar el domini www.iaw.org sota https.
+
Així doncs, la web de l'assignatura la tindrem accessible des d'aquestes dues direccions:
*https://www.iaw.org
+
*http://localhost/IAW
Ho deixem per l'alumne.
+
*http://www.iaw.org
=Sortir a Internet des d'una ADSL/fibra domèstica=
+
 
*Configuració del router Comtrend CT-5365: http://www.pcwintech.com/screenshots-comtrend-ct-5365-comtrend-firmware
+
Opcionalment, podem tenir l'accés a aquestes dues url's sota https (HTTP secure). Ho deixem opcionalment per a l'alumne.
 +
 
 +
Aquesta web ha de ser un reflex de tota la feina que anem fent al llarg de la UF1 i UF2. Quan comencem a estudiar PHP, aquí hauràs d'enllaçar tots els scripts i proves que vagin fent. Ha de ser un reflex de tota la feina que es va fent, i serà una nota de classe.
 +
 
 +
=Sortir a Internet des d'una fibra domèstica=
 +
==Referències==
 
*www.arsys.es
 
*www.arsys.es
*www.dyndns.org, http://dyn.com/dns/
+
*Dynamic DNS: www.dyndns.org, http://dyn.com/dns/, http://www.noip.com
*alternativa a dyndns: no-ip.org
 
 
*Configuració del Dyndns: [[DynDNS]]
 
*Configuració del Dyndns: [[DynDNS]]
Tenim configurats el domini www.iaw.org en la xarxa local. Un pas més endavant seria accedir a aquests dominis des de fora de l'institut, des d'internet. Si faig una petició des de casa, el camí seria:
+
==Configuració del router==
 +
Un router antic:
 +
*Configuració del router Comtrend CT-5365: http://www.pcwintech.com/screenshots-comtrend-ct-5365-comtrend-firmware
 +
Tothom ha de saber entrar i configurar els ports del seu router. Concretament les taules NAT
 +
==Manera de procedir==
 +
Teniu configurat el domini www.iaw.org en el vostre portàtil (on haureu posat una ip fixa preferiblement) dins de la xarxa local de casa. Ara volem accedir a aquests domini des de fora de casa, des de l'institut per exemple, o millor, des del mòbil o la tauleta amb la wifi desconnectada (és a dir, des d'internet, utilitzant les dades del vostre proveïdor).
 +
 
 +
En la vostra xarxa local teniu varis dispositius formant una sola xarxa local: la tele, el mòbil, la tauleta, l'ordinador, la nevera (dispositius IoT), etc. Tothom ha de saber entrar en el seu router, i configurar-lo de manera que les peticions que arribin pel port 80 es redirigeixin al nostre servidor Apache (on recordem haurem posat una IP fixa, o si més no sabem quina té en aquest moment).
 +
 
 +
També heu de saber quina és la IP pública actual:
 
<pre>
 
<pre>
$ ping www.iaw.org
+
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
PING www.iaw.org (208.87.32.69) 56(84) bytes of data.
 
64 bytes from web01.hostingnet.com (208.87.32.69): icmp_seq=1 ttl=252 time=200 ms
 
 
</pre>
 
</pre>
Com veiem la IP 208.87.32.69 és una IP pública, que no és de l'institut, i per tant segur que no ho podem fer.
+
Suposem que és: ''xxx.xxx.xxx.xxx''
  
Per tant, el primer objectiu seria registrar un domini (per exemple, www.iawbalmes.org) a un registrador de dominis, per exemple ''Nominalia'' o ''Arsys.es''. (Mirar el preu de registrar el domini i el parking, sense hosting). No necessitem hosting, doncs el hosting serem nosaltres mateixos.
+
Aleshores, des del mòbil/tauleta podeu accedir a la web de l'assignatura:
 +
*http://xxx.xxx.xxx.xxx/IAW
 +
Com que la IP pública pot anar canviant, millor si fem alguna cosa com ara:
 +
*http://joanqc.no-ip.biz/IAW
 +
I com ho fem això? Ens hem de registrar a https://www.noip.com/ i donar d'alta un Free Host Name. En el nostre portàtil hi haurà un client (una petita aplicació que es posi en contacte amb ''noip.com'' cada vegada que la IP del nostre router s'actualitzi.
 +
*www.pepito.com/IAW o http://IAW.pepito.com. Si no estem contents amb la url que ens proporciona noip.com, podem registrar el nostre propi domini (''pepito.com'', per ex), a Arsys per exemples (mirar pressupost). (Però compte! no és un hosting, només necessitem la compra del domini). Dins del penell de control del nostre domini a Arsys, anem a l'apartat de DNS i especifiquem la direcció a noip. D'aquesta manera, quan els usuaris vagin a pepito.com, aniran a noip, i finalment aniran al nostre router. Tot aquest camí es pot resseguir amb una eina com ''traceroute'':
 +
<pre>
 +
$ sudo apt-get install traceroute
 +
</pre>
 +
 
 +
Per configurar el servei ''no-ip'' està explicat en aquest enllaç:
 +
[[Update_Abril_2014._noip.com]]
 +
==Cas wiki del professor: wiki.joanillo.org==
 +
*El domini joanillo.org està hostatjat a Arsys
 +
*Actualment, la wiki està en el núvol, en un Virtual Server de OVH
 +
*La traducció de noms entre www.joanillo.org i la IP pública del núvol la fa el servei noip (joanqc.noip.com)
  
Un cop tenim registrat el domini, hem de configurar els DNS per a aquest domini (es fa dins d'Arsys.es, en la pestanya DNS). El DNS el que fa és que una persona quan fa ''ping  www.iawbalmes.org'' rebi la informació de la IP. Aleshores el que s'hauria de posar és la IP pública de l'institut.
+
Fem un traceroute (des d'una màquina de l'institut):
 
<pre>
 
<pre>
$ ping www.jaumebalmes.net
+
$ traceroute www.joanillo.org
PING www.jaumebalmes.net (80.25.160.251) 56(84) bytes of data.
+
traceroute to www.joanillo.org (51.210.179.7), 30 hops max, 60 byte packets
64 bytes from 251.Red-80-25-160.staticIP.rima-tde.net (80.25.160.251): icmp_seq=1 ttl=252 time=140 ms
+
1  router (192.168.0.1)  5.795 ms  5.785 ms  7.380 ms <- 192.168.0.1 és la direcció del router de l'institut
 +
2  10.13.32.1 (10.13.32.1)  7.377 ms  7.368 ms  7.802 ms <- és la ip pública de l'institut
 +
3  10.8.15.171 (10.8.15.171)  7.796 ms  8.385 ms  8.388 ms
 +
4  10.8.1.50 (10.8.1.50)  8.646 ms  9.653 ms  9.655 ms
 +
5  * * *
 +
6  * * *
 +
7  * * *
 +
8  be33-400-grtmadix2.net.telefonicaglobalsolutions.com (216.184.113.180)  11.924 ms  12.216 ms  12.205 ms
 +
9  be100-103.mad-1-a9.es.eu (94.23.122.92)  12.201 ms  14.125 ms 176.52.248.251 (176.52.248.251) 14.105 ms
 +
10  be100-103.mad-1-a9.es.eu (94.23.122.92)  15.149 ms be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153) 27.784 ms  27.498 ms
 +
11  be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153)  29.249 ms be102.gra-g1-nc5.fr.eu (91.121.215.176)  32.160 ms be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153)  27.324 ms
 +
12  * * *
 +
13  * * *
 +
14  * * *
 +
15  * * *
 +
16  * * *
 +
17  * * *
 +
18  * * *
 +
19  * * vps-f5d83567.vps.ovh.net (51.210.179.7) 31.362 ms
 
</pre>
 
</pre>
Quan la petició arriba a l'institut, els switchs de l'institut han de saber encaminar la petició al servidor Apache on està allotjada la pàgina. I el firewall ha d'estar ben configurat per tal de què el paquet IP no es perdi.
+
El paquet IP passa per diferents IPs, algunes ocultes, i arriba finalment a les màquines de ovh.net (51.210.179.7).
  
==Servidor Apache a casa. IP dinàmica. Utilitzar un servei de DNS dinàmic==
+
També es veu fent un ping:
És més didàctic fer aquesta pràctica de de casa (on tens ADSL/fibra). El mateix portàtil/ordinador on fas les pràctiques et serveix.
+
<pre>
 +
$ ping www.joanillo.org
 +
PING joanqc.no-ip.biz (51.210.179.7) 56(84) bytes of data.
 +
64 bytes from vps-f5d83567.vps.ovh.net (51.210.179.7): icmp_seq=1 ttl=46 time=30.6 ms
 +
64 bytes from vps-f5d83567.vps.ovh.net (51.210.179.7): icmp_seq=2 ttl=46 time=31.0 ms
 +
...
 +
</pre>
 +
Resumint, podem accedir a la wiki de joanillo.org des de 3 url's diferents:
 +
*http://wiki.joanillo.org
 +
*http://joanqc.no-ip.biz/wikijoan/ (o bé http://joanqc.no-ip.biz/wikijoan/index.php/P%C3%A0gina_principal (tot i que hi ha un problema amb el CSS))
 +
*http://51.210.179.7/wikijoan/ (o bé http://51.210.179.7/wikijoan/index.php/P%C3%A0gina_principal (tot i que hi ha un problema amb el CSS))
  
En el cas de què aquesta pràctica la vulguis fer des de casa no tens una IP pública, sinó dinàmica, i necessites un servei com ''no-ip.org'' o ''dyndns.org'' que tradueix de forma dinàmcia noms de domini i IP's (però això ja ho veurem més endavant).
+
==Servidor web amb una Raspberry Pi==
 +
Instal·lar un servidor web a casa i deixar l'ordinador de sobretaula o el portàtil encès les 24 hores no és molt pràctic. Una alternativa que sí que és viable és utilitzar una placa Raspberry Pi i els avantatges que comporta (preu baix, no ocupa espai, consumeix molt poc corrent). Hi ha molts enllaços on s'explica com fer-ho. Per ex,
 +
*https://geekytheory.com/tutorial-raspberry-pi-crear-servidor-web/
 +
En aquest anterior enllaç s'utilitza apache2, però recordem que hi ha altres servidors web com ara '''nginx''' i '''lighttpd''' que són més lleugers i per tant més idonis per a la RPi:
 +
*https://ca.wikipedia.org/wiki/Nginx.
 +
*https://www.lighttpd.net/
 +
=Logs a l'Apache=
 +
Els fitxers de ''log'' els trobarem com és habitual en la carpeta ''/var/log/'', on trobarem la carpeta ''apache2/''. Anem a veure si és veritat mirant el fitxer de configuració ''/etc/apache2/apache2.conf''. Cercant dins el fitxer trobem:
 +
<pre>
 +
# ErrorLog: The location of the error log file.
 +
# If you do not specify an ErrorLog directive within a <VirtualHost>
 +
# container, error messages relating to that virtual host will be
 +
# logged here.  If you *do* define an error logfile for a <VirtualHost>
 +
# container, that host's errors will be logged there and not here.
 +
#
 +
ErrorLog ${APACHE_LOG_DIR}/error.log
  
En els DNS d'Arsys no podem ficar una IP fixa, doncs no la tenim, hem de ficar la IP actual, que és dinàmcia. Per tal de solventar aquest problema, aniríem a www.dyndns.org, i ens regitrem. El producte que necessitem és el gratis: ''DynDNS Free'' ('''NOTA''': millor utilitzar no-ip.org, doncs ara mateix DynDNS ja no ofereix aquest servei de forma gratuïta).
+
#
*http://dyn.com/dns/dyndns-free/
+
# LogLevel: Control the number of messages logged to the error_log.
*https://www.dyndns.com/account/services/hosts/add.html
+
# Possible values include: debug, info, notice, warn, error, crit,
 
+
# alert, emerg.
Registraríem un ''New Host Name'', per exemple: ''iawbalmes.dyndns.org''. En el moment de registrar-nos hem de ficar la IP actual del router (la que ens proposa). Si vull saber quina és la meva IP pública actual també podem executar des de la consola:
+
#
 +
LogLevel warn
 +
...
 +
#
 +
# The following directives define some format nicknames for use with
 +
# a CustomLog directive (see below).
 +
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
 +
#
 +
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combine
 +
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
 +
LogFormat "%h %l %u %t \"%r\" %>s %O" common
 +
LogFormat "%{Referer}i -> %U" referer
 +
LogFormat "%{User-agent}i" agent
 +
</pre>
 +
Un altre lloc (posterior) on es pot definir una altra vegada el log és als fitxers de configuració dels sites, per exemple, a ''/etc/apache2/sites-available/000-default.conf'':
 
<pre>
 
<pre>
wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
+
ErrorLog ${APACHE_LOG_DIR}/error.log
 
</pre>
 
</pre>
 +
Dins la carpeta ''/var/log/apache2'' trobem el fitxer error.log actual, i tots els fitxers històrics que s'han generat anteriorment i que es guarden empaquetats. Quan el fitxer error.log arriba a un cert tamany, s'empaqueta i es renombra, i es comença amb un nou fitxer.
  
Ara anem a Arsys, i en l'apartat DNS del nostre domini www.iawbalmes.net, diem que el DNS és ''iawbalmes.dyndns.org''.
+
Anem a provocar un error. Accedim en el servidor a un recurs que no existeix. Per exemple:
  
Anem a veure ara com funciona una petició http:
+
*http://localhost/no_existeix
*Quan des d'un ordinador remot accedeixo a ''http://www.iawbalmes.org'' o faig un ping a ''www.iawbalmes.org'', la petició se'n va als servidors de DNS públics que s'han replicat per tota la Internet. La informació l'ha proporcionada Arsys i diu que ''www.iawbalmes.org'' està associat a ''iawbalmes.dyndns.org''. Aleshores, el servidor ''iawbalmes.dyndns.org'' té una taula que pot informar que la nostra IP és la IP dinàmica del nostre router. Per tant, ja podem accedir al router. Si el router està ben configurat, la petició pel port 80 anirà al nostre servidor Apache i podrem servir el domini www.iawbalmes.net o el que sigui. Evidentment, en la taula NAT podem dir quins ports tinc oberts i quines màquines de la xarxa local poden servir una petició (per exemple, HTTP, HTTPS, FTP, SSH,...).
 
  
Ara bé, la nostra IP és dinàmica. Què passa quan el nostre proveïdor (Movistar, Jazztel,...) ens canvia la IP? Doncs que la cadena es trenca. Per tant, hem de dir a ''dyndns.org'' quina és la nostra IP actual. Això es pot fer de forma dinàmica mitjanḉant un  dimoni que sempre va mirant la IP i que notifica  a dyndns els canvis que puguin  haver, tal com s'explica a [[DynDNS]]. En el cas d'Ubuntu:
+
Anem a veure el missatge que s'ha logat en el fitxer ''error.log'':
 
<pre>
 
<pre>
$ sudo apt-get install ddclient
+
$ tail error.log
 +
[Thu Oct 16 18:01:25 2014] [error] [client 127.0.0.1] File does not exist: /var/www/no_existeix
 
</pre>
 
</pre>
i té un fitxer de configuració a /etc/ddclient.conf.
+
Fem servir tail per veure les últimes línies del fitxer.
  
Per configurar el servei ''no-ip'' està explicat en aquest enllaç:
+
Si volem registrar els accessos que tenen les nostres pàgines es fa servir normalment el fitxer ''access.log'', tal com està definit a ''/etc/apache2/sites-available/000-default.conf'':
[[Update_Abril_2014._noip.com]]
+
<pre>
 +
CustomLog ${APACHE_LOG_DIR}/access.log combined
 +
</pre>
 +
Per exemple, el professor accedeix al recurs http://localhost/artropodes (un recurs que existeix), i en el fitxer ''access.log'' podem veure:
 +
<pre>
 +
127.0.0.1 - - [16/Oct/2014:18:21:47 +0200] "GET /icons/back.gif HTTP/1.1" 200 507 "http://localhost/artropodes/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"
 +
</pre>
 +
Aquí és interessant remarcar que podem tenir fitxers logs d'accés diferenciats en funció del site. Per exemple, podem definir que per al site ''www.iaw.org'', que l'alumne ha definit a ''/etc/apache2/sites-available/www.iaw.org'':
 +
<pre>
 +
CustomLog /var/log/apache2/access_iaw.log combined
 +
</pre>
 +
Amb la qual cosa tenim un log diferenciat per visualitzar els accessos a ''www.iaw.org''.
  
==Configuració del Router. Taules NAT==
+
Amb la informació continguda en aquests fitxers es poden fer estadístiques de pàgines més accedides, temps de residència en cada pàgina, temps de residència en el site, navegador i sistema operatiu. I amb la IP es pot saber el país de procedència.
Configuració del router Comtrend CT-5365 (un router comú en ADSL domèstica)
 
*http://www.pcwintech.com/screenshots-comtrend-ct-5365-comtrend-firmware
 
  
Si vull accedir a la URL ''http://wiki.joanillo.org'' estic fent una petició a la IP 87.221.76.91 pel port 80 (protocol http):
+
'''NOTA''', cas pràctic. A vegades pot ser interessant cercar dins dels fitxers per una paraula concreta. Utiltizem la comanda ''find''. Per exemple, si volem cercar ''artropodes'' en els fitxers continguts en el directori ''/var/log/apache2'' faríem:
 
<pre>
 
<pre>
$ PING wikijoan.dyndns.org (87.221.76.91) 56(84) bytes of data.
+
$ find /var/log/apache2 -type f -print | xargs egrep -i artropodes
 +
./ssl_access.log:127.0.0.1 - - [10/Oct/2014:16:52:59 +0200] "GET /artropodes/ HTTP/1.1" 200 1036 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"
 +
./ssl_access.log:127.0.0.1 - - [10/Oct/2014:16:52:59 +0200] "GET /icons/folder.gif HTTP/1.1" 200 618 "https://localhost/artropodes/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"
 
</pre>
 
</pre>
Però a casa no tenim un ordinador, sinó varis ordinadors i dispositius connectats a Internet. Només un d'ells és el servidor Apache on està hostatjada la pàgina web que vull que surti a l'exterior. Dins del Router hi ha la configuració de les taules NAT, que diuen  cap a on s'ha de redirigir una petició depenent del port. Així doncs, he d'afegir una nova entrada a les taules NAT i dir que les peticions pel port 80 vagin a la IP, per ex, 192.168.0.25 (evidentment és important tenir IP fixes en la xarxa local). Si tinc altres serveis a la xarxa (servidor de streaming, SSH, FTP, SGBD...) no cal que tots els servidors estiguin en la mateixa màquina.
 
 
Resumint, podem accedir a la wiki de joanillo.org des de 3 url's diferents:
 
*http://wiki.joanillo.org
 
*http://joanqc.no-ip.biz/wiki/index.php/P%C3%A0gina_principal
 
*http://37.14.108.125/wiki/index.php/P%C3%A0gina_principal
 
==Servidor web amb una Raspberry Pi==
 
Ara l'alumne ja no té cap excusa per poder realitzar aquesta pràctica optativa, ja que es pot realitzar amb la Raspberry Pi i els avantatges que comporta (preu baix, no ocupa espai, consumeix molt poc corrent). Hi ha molts enllaços on s'explica com fer-ho. Per ex,
 
*https://geekytheory.com/tutorial-raspberry-pi-crear-servidor-web/
 
En aquest anterior enllaç s'utilitza apache2, però recordem que hi ha altres servidors web com ara ''lighttpd''.
 
  
{{Autor}}, setembre 2018
+
{{Autor}}, octubre 2020
 
[[Categoria: Institut Jaume Balmes]]
 
[[Categoria: Institut Jaume Balmes]]
 
[[Categoria: ASIX-M09-IAW]]
 
[[Categoria: ASIX-M09-IAW]]

Revisió de 23:53, 17 oct 2020

La web de l'assignatura: www.iaw.org. Utiltizar dominis en la xarxa local

actualització: https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04

Anem a crear un nom de domini per a l'assignatura de IAW: www.iaw.org. Evidentment es tracta d'un domini local, que només és vàlid dins el nostre ordinador, o potser dins de la nostra xarxa local. Si fem una cerca per Internet, actualment el domini públic www.iaw.org està lliure.

El primer serà ficar una entrada en el fitxer /etc/hosts, que és el fitxer que associa IPs amb noms de màquina o domin. Afegeixo les següents línies a /etc/hosts:

127.0.0.2       www.iaw.org

En el cas de què tinguem una IP fixa, podem associar el domini www.iaw.org a la nostra IP. Això també val si un company vol accedir al nostre domini www.iaw.org des del seu ordinador:

192.168.1.9       www.iaw.org

El que fa el fitxer /etc/hosts és una traducció de IP a nom de domini, i això és el que fan els servidors DNS. Podem pensar que és un DNS local, i que no cal anar a mirar a Internet i a un servidor DNS remot aquests noms de domini.

A /etc/apache2/sites-available he de crear un fitxer de configuració. Reaprofitem el fitxer 000-default.conf:

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/www.iaw.org.conf
$ sudo joe /etc/apache2/sites-available/www.iaw.org.conf

ServerName www.iaw.org
ServerAlias www.iaw.org
DocumentRoot /home/joan/IAW/html

Hem d'habilitar aquest site, creant un enllaç simbòlic a sites-enabled:

$ sudo a2ensite www.iaw.org.conf

Reiniciem el servei amb qualsevol d'aquestes comandes:

$ sudo systemctl restart apache2
$ sudo service apache2 restart
$ sudo /etc/init.d/apache2 restart

I ara accedim a

Ja funciona, però segurament encara tenim un problema de permisos (Permission Denied). Afegim les següents línies:

<Directory /home/joan/IAW/html>
Require all granted
</Directory>

Reiniciem i ara sí que ha de funcionar. Per tant, hem d'accedir a la web de l'assignatura de dues maneres diferents:

El fitxer www.iaw.org.conf ha quedat de la següent manera:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName www.iaw.org
        ServerAlias www.iaw.org
        DocumentRoot /home/joan/IAW/html

        #Posem logs personalitzats per al domini iaw.org
        ErrorLog ${APACHE_LOG_DIR}/error_iaw.log
        CustomLog ${APACHE_LOG_DIR}/access_iaw.log combined

        <Directory /home/joan/IAW/html>
                Require all granted
        </Directory>
</VirtualHost>


Web de l'assignatura IAW d'un company

Aquesta prova la podeu fer amb el servidor d'un company o del professor (sabent quina és la IP, millor si és una IP fixa). I també es pot fer entre dues màquines virtuals.

Editem el fitxer /etc/hosts amb la IP del company (i momentàniament deshabilitem la nostra referència local).

192.168.0.34 www.iaw.org

i podem accedir al servidor del company. Recordem quin seria el procés:

  1. En el nostre client (Chrome/Firefox) volem accedir a www.iaw.org
  2. El nostre fitxer /etc/hosts associa www.iaw.org a la IP 192.168.0.34
  3. Quan la petició arriba a la IP del company pel port 80, el servidor web localitza el fitxer index.html en la carpeta associada al site www.iaw.org, segons consta en els fitxers de configuració de l'Apache.
  4. La pàgina ja es pot servir en el camí invers fins arribar al client (el navegador web).

NOTA. També és important ficar els permisos correctes a la carpeta html/, o bé canviar-li el propietari. Recordem que l'accés al recurs web es fa a través de l'usuari www-data.

La web de l'assignatura: http://www.iaw.org

Així doncs, la web de l'assignatura la tindrem accessible des d'aquestes dues direccions:

Opcionalment, podem tenir l'accés a aquestes dues url's sota https (HTTP secure). Ho deixem opcionalment per a l'alumne.

Aquesta web ha de ser un reflex de tota la feina que anem fent al llarg de la UF1 i UF2. Quan comencem a estudiar PHP, aquí hauràs d'enllaçar tots els scripts i proves que vagin fent. Ha de ser un reflex de tota la feina que es va fent, i serà una nota de classe.

Sortir a Internet des d'una fibra domèstica

Referències

Configuració del router

Un router antic:

Tothom ha de saber entrar i configurar els ports del seu router. Concretament les taules NAT

Manera de procedir

Teniu configurat el domini www.iaw.org en el vostre portàtil (on haureu posat una ip fixa preferiblement) dins de la xarxa local de casa. Ara volem accedir a aquests domini des de fora de casa, des de l'institut per exemple, o millor, des del mòbil o la tauleta amb la wifi desconnectada (és a dir, des d'internet, utilitzant les dades del vostre proveïdor).

En la vostra xarxa local teniu varis dispositius formant una sola xarxa local: la tele, el mòbil, la tauleta, l'ordinador, la nevera (dispositius IoT), etc. Tothom ha de saber entrar en el seu router, i configurar-lo de manera que les peticions que arribin pel port 80 es redirigeixin al nostre servidor Apache (on recordem haurem posat una IP fixa, o si més no sabem quina té en aquest moment).

També heu de saber quina és la IP pública actual:

wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1

Suposem que és: xxx.xxx.xxx.xxx

Aleshores, des del mòbil/tauleta podeu accedir a la web de l'assignatura:

Com que la IP pública pot anar canviant, millor si fem alguna cosa com ara:

I com ho fem això? Ens hem de registrar a https://www.noip.com/ i donar d'alta un Free Host Name. En el nostre portàtil hi haurà un client (una petita aplicació que es posi en contacte amb noip.com cada vegada que la IP del nostre router s'actualitzi.

  • www.pepito.com/IAW o http://IAW.pepito.com. Si no estem contents amb la url que ens proporciona noip.com, podem registrar el nostre propi domini (pepito.com, per ex), a Arsys per exemples (mirar pressupost). (Però compte! no és un hosting, només necessitem la compra del domini). Dins del penell de control del nostre domini a Arsys, anem a l'apartat de DNS i especifiquem la direcció a noip. D'aquesta manera, quan els usuaris vagin a pepito.com, aniran a noip, i finalment aniran al nostre router. Tot aquest camí es pot resseguir amb una eina com traceroute:
$ sudo apt-get install traceroute

Per configurar el servei no-ip està explicat en aquest enllaç: Update_Abril_2014._noip.com

Cas wiki del professor: wiki.joanillo.org

  • El domini joanillo.org està hostatjat a Arsys
  • Actualment, la wiki està en el núvol, en un Virtual Server de OVH
  • La traducció de noms entre www.joanillo.org i la IP pública del núvol la fa el servei noip (joanqc.noip.com)

Fem un traceroute (des d'una màquina de l'institut):

$ traceroute www.joanillo.org
traceroute to www.joanillo.org (51.210.179.7), 30 hops max, 60 byte packets
 1  router (192.168.0.1)  5.795 ms  5.785 ms  7.380 ms <- 192.168.0.1 és la direcció del router de l'institut
 2  10.13.32.1 (10.13.32.1)  7.377 ms  7.368 ms  7.802 ms <- és la ip pública de l'institut
 3  10.8.15.171 (10.8.15.171)  7.796 ms  8.385 ms  8.388 ms
 4  10.8.1.50 (10.8.1.50)  8.646 ms  9.653 ms  9.655 ms
 5  * * *
 6  * * *
 7  * * *
 8  be33-400-grtmadix2.net.telefonicaglobalsolutions.com (216.184.113.180)  11.924 ms  12.216 ms  12.205 ms
 9  be100-103.mad-1-a9.es.eu (94.23.122.92)  12.201 ms  14.125 ms 176.52.248.251 (176.52.248.251)  14.105 ms
10  be100-103.mad-1-a9.es.eu (94.23.122.92)  15.149 ms be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153)  27.784 ms  27.498 ms
11  be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153)  29.249 ms be102.gra-g1-nc5.fr.eu (91.121.215.176)  32.160 ms be106.par-gsw-sbb1-nc5.fr.eu (91.121.131.153)  27.324 ms
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * vps-f5d83567.vps.ovh.net (51.210.179.7)  31.362 ms

El paquet IP passa per diferents IPs, algunes ocultes, i arriba finalment a les màquines de ovh.net (51.210.179.7).

També es veu fent un ping:

$ ping www.joanillo.org
PING joanqc.no-ip.biz (51.210.179.7) 56(84) bytes of data.
64 bytes from vps-f5d83567.vps.ovh.net (51.210.179.7): icmp_seq=1 ttl=46 time=30.6 ms
64 bytes from vps-f5d83567.vps.ovh.net (51.210.179.7): icmp_seq=2 ttl=46 time=31.0 ms
...

Resumint, podem accedir a la wiki de joanillo.org des de 3 url's diferents:

Servidor web amb una Raspberry Pi

Instal·lar un servidor web a casa i deixar l'ordinador de sobretaula o el portàtil encès les 24 hores no és molt pràctic. Una alternativa que sí que és viable és utilitzar una placa Raspberry Pi i els avantatges que comporta (preu baix, no ocupa espai, consumeix molt poc corrent). Hi ha molts enllaços on s'explica com fer-ho. Per ex,

En aquest anterior enllaç s'utilitza apache2, però recordem que hi ha altres servidors web com ara nginx i lighttpd que són més lleugers i per tant més idonis per a la RPi:

Logs a l'Apache

Els fitxers de log els trobarem com és habitual en la carpeta /var/log/, on trobarem la carpeta apache2/. Anem a veure si és veritat mirant el fitxer de configuració /etc/apache2/apache2.conf. Cercant dins el fitxer trobem:

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
...
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combine
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

Un altre lloc (posterior) on es pot definir una altra vegada el log és als fitxers de configuració dels sites, per exemple, a /etc/apache2/sites-available/000-default.conf:

ErrorLog ${APACHE_LOG_DIR}/error.log

Dins la carpeta /var/log/apache2 trobem el fitxer error.log actual, i tots els fitxers històrics que s'han generat anteriorment i que es guarden empaquetats. Quan el fitxer error.log arriba a un cert tamany, s'empaqueta i es renombra, i es comença amb un nou fitxer.

Anem a provocar un error. Accedim en el servidor a un recurs que no existeix. Per exemple:

Anem a veure el missatge que s'ha logat en el fitxer error.log:

$ tail error.log
[Thu Oct 16 18:01:25 2014] [error] [client 127.0.0.1] File does not exist: /var/www/no_existeix

Fem servir tail per veure les últimes línies del fitxer.

Si volem registrar els accessos que tenen les nostres pàgines es fa servir normalment el fitxer access.log, tal com està definit a /etc/apache2/sites-available/000-default.conf:

CustomLog ${APACHE_LOG_DIR}/access.log combined

Per exemple, el professor accedeix al recurs http://localhost/artropodes (un recurs que existeix), i en el fitxer access.log podem veure:

127.0.0.1 - - [16/Oct/2014:18:21:47 +0200] "GET /icons/back.gif HTTP/1.1" 200 507 "http://localhost/artropodes/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"

Aquí és interessant remarcar que podem tenir fitxers logs d'accés diferenciats en funció del site. Per exemple, podem definir que per al site www.iaw.org, que l'alumne ha definit a /etc/apache2/sites-available/www.iaw.org:

CustomLog /var/log/apache2/access_iaw.log combined

Amb la qual cosa tenim un log diferenciat per visualitzar els accessos a www.iaw.org.

Amb la informació continguda en aquests fitxers es poden fer estadístiques de pàgines més accedides, temps de residència en cada pàgina, temps de residència en el site, navegador i sistema operatiu. I amb la IP es pot saber el país de procedència.

NOTA, cas pràctic. A vegades pot ser interessant cercar dins dels fitxers per una paraula concreta. Utiltizem la comanda find. Per exemple, si volem cercar artropodes en els fitxers continguts en el directori /var/log/apache2 faríem:

$ find /var/log/apache2 -type f -print | xargs egrep -i artropodes
./ssl_access.log:127.0.0.1 - - [10/Oct/2014:16:52:59 +0200] "GET /artropodes/ HTTP/1.1" 200 1036 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"
./ssl_access.log:127.0.0.1 - - [10/Oct/2014:16:52:59 +0200] "GET /icons/folder.gif HTTP/1.1" 200 618 "https://localhost/artropodes/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:27.0) Gecko/20100101 Firefox/27.0"

creat per Joan Quintana Compte, octubre 2020