UF1 1: Servidors Web. Apache. Instal.lació i configuració

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Què és un servidor Web?

Apache

Mòduls per instal.lar

A mida que els necessitem instal.larem els mòduls de php que necessitem. Per exemple, amb PHP necessitarem fer encriptació (mòdul php5-mcrypt), generar documents pdf amb fpdf, fer gràfiques, enviar mails amb un servidor SMTP... i és clar, connectar-nos a bases de dades. Necessitarem els connectors php5-mysql i php5-pgsql per a Mysql i PostgreSQL.

Per cercar els mòduls que comencen per php5-:

$ apt-cache search php5 | grep php5-

LAMP i similars

   * LAMP i similars.
         o http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29
         o http://www.easyphp.org/
         o http://www.apachefriends.org/en/xampp.html
         o solució nativa: instal.lar Apache, mysql, PHP a Ubuntu. 

Configuració d'Apache

utilitzar dominis .com en la xarxa local

Anem a crear dos noms de domini per a les assignatures de SAD i IAW: www.sad.org i www.iaw.org

El primer serà ficar una entrada en el fitxer /etc/hosts

afegeixo les següents línies (en el servidor Apache):

127.0.0.2       www.sad.org
127.0.0.3       www.iaw.org

i en qualsevol altre ordinador que vulgui accedir des de la xarxa farà:

192.168.1.9       www.iaw.org
192.168.1.9       www.2asix.org

En aquest cas, 192.168.1.9 és el servidor de referència, però si el servidor Apache on es fan les proves és un altre aleshores ficar la IP que es correspongui. És clar que una IP estàtica és el més interessant.

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 (de fet, www.iaw.org i www.sad.org existeixen a Internet).

A /etc/apache2/sites-available creo els fitxers www.iaw.org i www.sad.org que contenen la següent informació:

<VirtualHost *:80>
        ServerName www.iaw.org
        ServerAdmin joan_quintana@yahoo.com
        DocumentRoot /var/www/iaw
        <Directory />
        Options FollowSymLinks
        AllowOverride All
        </Directory>
        <Directory /var/www/iaw>
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access_iaw.log combined
</VirtualHost>
<VirtualHost *:80>
        ServerName www.sad.org
        ServerAdmin joan_quintana@yahoo.com
        DocumentRoot /var/www/sad
        <Directory />
        Options FollowSymLinks
        AllowOverride All
        </Directory>
        <Directory /var/www/sad>
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access_sad.log combined
</VirtualHost>

Fixem-nos que els fitxers de log són diferents. Això ho fem així perque m'interessarà separar les estadístiques dels dos sites.

També creem els llocs /var/www/sad i /var/www/iaw, i els dotem de contingut.

Per tal d'habilitar aquests dos virtual hosts s'ha de copiar els arxius anteriors a sites-enabled/. Millor que copiar, es fa un enllaç simbòlic que es pot fer de dues maneres.

$ sudo a2ensite www.sad.org
o bé
$ cd /etc/apache2/sites-enabled
$ sudo ln -s /etc/apache2/sites-available/www.sad.org www.sad.org

Per tal de fer efectius els canvis: (no cal fer restart, amb reload s'aliquen els canvis que s'han fet en els fitxers de configuració)

$ sudo /etc/init.d/apache2 reload

I si ara faig un ping ja veig que la cosa funciona, respon l'ordinador local:

$ ping www.sad.org
PING www.sad.org (127.0.0.2) 56(84) bytes of data.
64 bytes from www.sad.org (127.0.0.2): icmp_seq=1 ttl=64 time=0.050 ms

$ ping www.iaw.org
PING www.iaw.org (127.0.0.3) 56(84) bytes of data.
64 bytes from www.iaw.org (127.0.0.3): icmp_seq=1 ttl=64 time=0.051 ms

i per tant ja puc accedir a les webs (si la cache no juga cap mala passada)

Logs de l'Apache. Anàlisi d'Estadístiques

protegir un recurs web amb login i password

Està explicat a: Instal.lació_i_configuració_d'Apache_amb_Ubuntu#Protecci.C3.B3_d.27una_carpeta_amb_login_i_password

Anem a protegir el site www.sad.org. Resumint:

AuthUserFile /home/joan/.htpasswd
AuthName "Seguretat i Alta Disponibilitat"
AuthType Basic

require user asi2a01

Ara anem a crear el fitxer .htpasswd, que ha d'estar situat en una carpeta no accessible des de la web. Per exemple /home/joan. Ha de ser la ruta que hem indicat en el fitxer .htpasswd.

$ cd /home/joan
$ htpasswd -cb .htpasswd asi2a01 asi
$ cat .htpasswd 
asi2a01:BrJ91mVz.68sc

reiniciem el servidor

$ sudo /etc/init.d/apache2 restart

I ara la cosa que falta és anar a la configuració Apache del site www.sad.org, i posar l'opció AllowOverride all

$ joe /etc/apache2/sites-available/www.sad.org

        <Directory /var/www/sad>
                Options Indexes FollowSymLinks
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
$ sudo /etc/init.d/apache2 restart

I ara ja ens demana login i pwd quan volem entrar a http://www.sad.org

https: http secure

Hypertext Transfer Protocol sobre Secure Socket Layer

https funciona pel port 443 (http escolta pel port 80)

El fitxer de configuració per defecte està a /etc/apache2/sites-available/default-ssl, i el DocumentRoot també és /var/www

Intentem accedir a https://localhost, i evidentment dóna un error: La pàgina que esteu provant de visualitzar no pot mostrar-se perquè no pot verificar-se l'autenticitat de les dades rebudes.. Necessito un certificat.

There is a default HTTPS configuration file in /etc/apache2/sites-available/default-ssl. In order for Apache2 to provide HTTPS, a certificate and key file are also needed. The default HTTPS configuration will use a certificate and key generated by the ssl-cert package. They are good for testing, but the auto-generated certificate and key should be replaced by a certificate specific to the site or server. For information on generating a key and obtaining a certificate see the section called “Certificates”

El paquet ssl-cert ja estava instal.lat.

Certificats i Autoritats de Certificació (CA)

Està molt ben explicat a:

$ openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
............++++++
.................................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key: jq****
Verifying - Enter pass phrase for server.key:
jq****
$ openssl rsa -in server.key -out server.key.insecure
$ mv server.key server.key.secure
$ mv server.key.insecure server.key
$ openssl req -new -key server.key -out server.csr

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Barcelona
Locality Name (eg, city) []:Barcelona
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Joan Quintana
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Joan Quintana
Email Address []:joanqc@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:      
An optional company name []:

Creating a Self-Signed Certificate

$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=ES/ST=Barcelona/L=Barcelona/O=Joan Quintana/CN=Joan Quintana/emailAddress=joanqc@gmail.com
Getting Private key

Installing the Certificate

You can install the key file server.key and certificate file server.crt, or the certificate file issued by your CA, by running following commands at a terminal prompt:

$ sudo cp server.crt /etc/ssl/certs
$ sudo cp server.key /etc/ssl/private

Ara ja puc fer

i ja no em surt el missatge d'error, sinó que em surt la pantalla https.png

Excepcio https.jpg
No es pot confiar en la connexió

Heu demanat al Firefox connectar-se
de forma segura a localhost, però no podem confirmar que la vostra connexió ho sigui.

Normalment, quan intenteu connectar-vos de forma segura,
els llocs web us presentaran una identificació pertinent per a demostrar-vos que aneu
al lloc adequat. No obstant això, la identitat d'aquest lloc no es pot verificar.

Què caldria que fes?

Si normalment us connecteu a
aquest lloc sense problemes, podria voler dir que algú altre
vol fer-se'n amb la identitat i, per tant, no hauríeu de continuar.

Detalls tècnics

Entenc els riscos

Clico Entenc els riscos, i Afegeixo una excepció:

Si sabeu què esteu fent, podeu
dir al Firefox que confiï en la identificació del lloc.
Fins i tot, si hi confieu, aquest error podria donar-se perquè algú
estigués interferint en la vostra connexió.

No afegiu una excepció a menys
que sapigueu del cert perquè aquest lloc web no utilitza una identificació pertinent.

Finalment Confirmo l'excepció de seguretat, i ja puc veure una web segura: https://localhost

És la pàgina web per defecte definida a /etc/apache2/sites-available/default-ssl

Sortir a Internet des d'una ADSL domèstica

Tenim configurats els dominis www.sad.org i 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:

$ ping www.sad.org
PING www.sad.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

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.

Per tant, el primer objectiu seria registrar un domini (per exemple, www.sadbalmes.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.

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.sadbalmes.org rebi la informació de la IP. Aleshores el que s'hauria de posar és la IP pública de l'institut.

$ ping www.jaumebalmes.net
PING www.jaumebalmes.net (80.25.160.251) 56(84) bytes of data.
64 bytes from 251.Red-80-25-160.staticIP.rima-tde.net (80.25.160.251): icmp_seq=1 ttl=252 time=140 ms

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 dyndns.org que tradueix de forma dinàmcia noms de domini i IP's (però això ja ho veurem més endavant).

Tenint ben configurat els DNS dins d'Arsys, quan una persona faci ping www.sadbalmes.org li respondrà la IP de l'institut (80.25.160.251), que de fet representa el router.

Per tant, ara hem d'entrar en el router de l'institut i configurar les taules NAT de manera que les peticions que arriben pel port 80 es redirigeixin cap al servidor Apache. Així és com està configurat el domini jaumebalmes.net o bé el Moodle, que es poden accedir des de l'exterior.

Tenim una IP dinàmcia. Utilitzar un servei de DNS dinàmic

En els DNS d'Arsys no podem ficar una IP fixa, doncs no la tenim, hem de ficar una IP dinàmcia.

Aniríem a www.dyndns.org, i ens regitrem. El producte que necessitem és el gratis: DynDNS Free

Registraríem un New Host Name, per exemple: sadbalmes.dyndns.org. En el moment de registrar-nos hem de ficar la IP actual del router (la que ens proposa).

Ara anem a Arsys, i en l'apartat DNS del nostre domini www.sadbalmes.net, diem que el DNS és sadbalmes.dyndns.org.

Anem a veure ara com funciona una petició http:

Ara bé, la nostra IP és dinàmica. Què passa quan el nostre proveïdor (Telefònica, 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:

$ sudo apt-get install ddclient

i té un fitxer de configuració a /etc/ddclient.conf.



creat per Joan Quintana Compte, setembre 2018

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
Institut Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines