Diferència entre revisions de la pàgina «Apache2 en GNU/Linux»
(Hi ha 10 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 14: | Línia 14: | ||
=== Accés als fitxers www === | === Accés als fitxers www === | ||
− | Els arxius públics principals del servidor web estan a '''/var/www'''. Si feu | + | Els arxius públics principals del servidor web estan a '''/var/www/html'''. Si feu |
− | $ '''ls -la /var/www''' | + | $ '''ls -la /var/www/html''' |
drwxrwxr-x 17 root root 4096 2011-05-01 22:45 . | drwxrwxr-x 17 root root 4096 2011-05-01 22:45 . | ||
drwxr-xr-x 17 root root 4096 2010-11-08 14:15 .. | 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. | + | -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. | 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. | ||
Línia 29: | Línia 29: | ||
# Busca una manera de modificar aquest arxiu i d'afegir-ne de nous '''sense actuar com a root''' (o sigui, sense ''sudo''). La idea és que donis permisos (MAI 777!) adequats i que la carpeta sigui d'un grup, per exemple "web". | # Busca una manera de modificar aquest arxiu i d'afegir-ne de nous '''sense actuar com a root''' (o sigui, sense ''sudo''). La idea és que donis permisos (MAI 777!) adequats i que la carpeta sigui d'un grup, per exemple "web". | ||
#* Crea el grup "web" amb la comanda '''''addgroup'''''. Si no estàs segur de com va, ja saps, UTILITZA EL MANUAL: <pre>$ man addgroup</pre> | #* Crea el grup "web" amb la comanda '''''addgroup'''''. Si no estàs segur de com va, ja saps, UTILITZA EL MANUAL: <pre>$ man addgroup</pre> | ||
− | #* Dona els '''permisos i propietari''' (recordeu! usuari:grup) adequats a la carpeta /var/www, per tal que pertanyi al grup "web". | + | #* Dona els '''permisos i propietari''' (recordeu! usuari:grup) adequats a la carpeta /var/www/html, per tal que pertanyi al grup "web". |
#*: Recordeu que cal utilitzar les comandes chmod i chown per realitzar-ho. | #*: Recordeu que cal utilitzar les comandes chmod i chown per realitzar-ho. | ||
#* Afegeix l'usuari principal a aquest grup: es pot fer amb diverses comandes com '''''adduser''''', '''''usermod''''' o directament modificant l'arxiu '''''/etc/groups'''''. | #* Afegeix l'usuari principal a aquest grup: es pot fer amb diverses comandes com '''''adduser''''', '''''usermod''''' o directament modificant l'arxiu '''''/etc/groups'''''. | ||
Línia 41: | Línia 41: | ||
=== PHP === | === PHP === | ||
− | Per instal·lar PHP versió | + | Per instal·lar PHP a la darrera versió ho podem fer amb: |
− | $ sudo apt-get install | + | $ sudo apt-get install libapache2-mod-php |
...i reiniciar el servei amb | ...i reiniciar el servei amb | ||
Línia 48: | Línia 48: | ||
<div class="exercici"><big>Exercici</big> | <div class="exercici"><big>Exercici</big> | ||
− | Per comprovar si funciona, aneu a la carpeta /var/www i creeu un arxiu "prova.php" amb el següent contingut: | + | Per comprovar si funciona, aneu a la carpeta /var/www/html i creeu un arxiu "prova.php" amb el següent contingut: |
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
<html> | <html> | ||
Línia 63: | Línia 63: | ||
</div> | </div> | ||
<br /> | <br /> | ||
− | |||
== Indexes == | == Indexes == | ||
Línia 111: | Línia 110: | ||
alias.conf authz_host.load deflate.load negotiation.conf rewrite.load '''userdir.load''' | alias.conf authz_host.load deflate.load negotiation.conf rewrite.load '''userdir.load''' | ||
alias.load authz_user.load dir.conf negotiation.load setenvif.conf | alias.load authz_user.load dir.conf negotiation.load setenvif.conf | ||
− | auth_basic.load autoindex.conf dir.load | + | auth_basic.load autoindex.conf dir.load php7.0.conf setenvif.load |
− | authn_file.load autoindex.load env.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_default.load cgi.load mime.conf reqtimeout.conf status.load | ||
authz_groupfile.load deflate.conf mime.load reqtimeout.load '''userdir.conf''' | authz_groupfile.load deflate.conf mime.load reqtimeout.load '''userdir.conf''' | ||
Línia 136: | Línia 135: | ||
<big>Exercici</big> | <big>Exercici</big> | ||
− | 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 ''' | + | 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ó, ara per ara 7.0). En els comentaris de dintre de l'arxiu ja explica què cal fer exactament. |
OJU! Pensa a reiniciar el servei!! | OJU! Pensa a reiniciar el servei!! | ||
Línia 148: | Línia 147: | ||
== Hosts virtuals == | == Hosts virtuals == | ||
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. | 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"''': | ||
+ | * '''/etc/apache2/sites-available''' : hi ha un arxiu per cada site. També es podrien posar 2 sites en un arxiu però seria més confús. | ||
+ | * '''/etc/apache2/sites-enabled''' : symbolic links a les "sites available". Si hi ha link és que està activada. | ||
+ | |||
<div class="exercici"> | <div class="exercici"> | ||
Línia 153: | Línia 157: | ||
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: | 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_html | + | * '''www.zeus.local''' -> /home/zeus/public_html |
− | * www.mercuri.local -> /home/mercuri/public_html | + | * '''www.mercuri.local''' -> /home/mercuri/public_html |
+ | |||
+ | ULL: aquest exercici no el podreu fer si no heu entès i activat correctament el mòdul "userdir" (explicat més amunt). | ||
</div> | </div> | ||
Línia 168: | Línia 174: | ||
=== Configurar un nou Virtual Host === | === Configurar un nou Virtual Host === | ||
<ol> | <ol> | ||
− | <li>'''Arxiu de virtual host''': cada site (domini) ha de tenir un arxiu a '''/etc/apache2/sites-available'''. Crea una nova site copiant l'arxiu | + | <li>'''Arxiu de virtual host''': cada site (domini) ha de tenir un arxiu a '''<code>/etc/apache2/sites-available</code>'''. Crea una nova site copiant l'arxiu '''<code>000-default.conf</code>''' a '''<code>mercuri.conf</code>''' (has de tenir, doncs, 2 arxius) a "sites-available".</li> |
<li>'''Configura''' el teu nou VirtualHost. Utilitza el següent article: | <li>'''Configura''' el teu nou VirtualHost. Utilitza el següent article: | ||
*http://httpd.apache.org/docs/2.2/vhosts/name-based.html : la millor font sempre és la pàgina oficial. | *http://httpd.apache.org/docs/2.2/vhosts/name-based.html : la millor font sempre és la pàgina oficial. | ||
*:ULL! No ho feu "a la tuntún". En l'article està tot en el mateix arxiu, i nosaltres el tenim repartit en 2. | *:ULL! No ho feu "a la tuntún". En l'article està tot en el mateix arxiu, i nosaltres el tenim repartit en 2. | ||
− | *Bàsicament es tracta de modificar el nou arxiu | + | *Bàsicament es tracta de modificar el nou arxiu <code>mercuri.conf</code> amb: |
**Afegir la directiva '''''ServerName''''' (el default no la té ja que serveix a tothom qui ho demani).</li> | **Afegir la directiva '''''ServerName''''' (el default no la té ja que serveix a tothom qui ho demani).</li> | ||
**Modificar '''''DocumentRoot''''' i el '''''Directory''''' per tal que apuntin a la carpeta de l'usuari mercuri (public_html). | **Modificar '''''DocumentRoot''''' i el '''''Directory''''' per tal que apuntin a la carpeta de l'usuari mercuri (public_html). | ||
<li>'''Activar la site''' amb la <u>comanda a2ensite</u>. Esbrina com fer-ho utilitzant el manual: '''$ man a2ensite''' | <li>'''Activar la site''' amb la <u>comanda a2ensite</u>. Esbrina com fer-ho utilitzant el manual: '''$ man a2ensite''' | ||
− | <br/>Comprova que s'ha activat bé: ha d'haver un link simbòlic a '''/etc/apache2/sites-enabled''' cap al nou fitxer "mercuri". | + | <br/>Comprova que s'ha activat bé: ha d'haver un link simbòlic a '''/etc/apache2/sites-enabled''' cap al nou fitxer "mercuri.conf". |
<pre> | <pre> | ||
zeus@zeusserver:/etc/apache2/sites-available$ ls /etc/apache2/sites-available/ | zeus@zeusserver:/etc/apache2/sites-available$ ls /etc/apache2/sites-available/ | ||
− | default default-ssl mercuri | + | 000-default.conf default-ssl.conf mercuri.conf |
zeus@zeusserver:/etc/apache2/sites-available$ ll /etc/apache2/sites-enabled/ | zeus@zeusserver:/etc/apache2/sites-available$ ll /etc/apache2/sites-enabled/ | ||
total 8 | total 8 | ||
drwxr-xr-x 2 root root 4096 2012-01-18 06:10 ./ | drwxr-xr-x 2 root root 4096 2012-01-18 06:10 ./ | ||
drwxr-xr-x 7 root root 4096 2012-01-17 23:17 ../ | drwxr-xr-x 7 root root 4096 2012-01-17 23:17 ../ | ||
− | lrwxrwxrwx 1 root root 26 2012-01-17 18:15 000-default -> ../sites-available/default | + | 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 -> ../sites-available/mercuri</pre></li> | + | lrwxrwxrwx 1 root root 26 2012-01-18 06:10 mercuri.conf -> ../sites-available/mercuri.conf</pre></li> |
<li>'''Recarrega (ull, no reinicia) el servei Apache2''': <pre>$ sudo service apache2 reload</pre></li> | <li>'''Recarrega (ull, no reinicia) el servei Apache2''': <pre>$ sudo service apache2 reload</pre></li> | ||
</ol> | </ol> | ||
+ | |||
+ | <br /> | ||
+ | |||
+ | == Exercici FINAL == | ||
+ | <div class="exercici" style="border: solid 3px red;"> | ||
+ | <big>Exercici FINAL</big> | ||
+ | |||
+ | *Realitza el mateix exercici però amb un usuari amb el teu nom (per exemple "enric") i la ''site'' amb el domini www.elteunom.local (per exemple "www.enric.local"). | ||
+ | *Penja una pàgina en PHP al teu domini. | ||
+ | |||
+ | NOTA: Aquest exercici és el que haureu de mostrar com a "demo" a classe. | ||
+ | </div> |
Revisió de 17:48, 21 set 2016
Apache2 és el servidor web més conegut.
Contingut
Instal·lació[modifica]
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 Joomla!, Drupal, etc.) també sol ser necessari afegir els paquets php, mysql i phpmyadmin.
Accés als fitxers www[modifica]
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.
Exercici
Prova de modificar aquest arxiu HTML de les següents maneres:
- Com usuari root i amb un editor (sudo). Posa-hi un missatge de benvinguda personalitzat.
- Busca una manera de modificar aquest arxiu i d'afegir-ne de nous sense actuar com a root (o sigui, sense sudo). La idea és que donis permisos (MAI 777!) adequats i que la carpeta sigui d'un grup, per exemple "web".
- Crea el grup "web" amb la comanda addgroup. Si no estàs segur de com va, ja saps, UTILITZA EL MANUAL:
$ man addgroup
- Dona els permisos i propietari (recordeu! usuari:grup) adequats a la carpeta /var/www/html, per tal que pertanyi al grup "web".
- Recordeu que cal utilitzar les comandes chmod i chown per realitzar-ho.
- Afegeix l'usuari principal a aquest grup: es pot fer amb diverses comandes com adduser, usermod o directament modificant l'arxiu /etc/groups.
- Surt de la sessió de l'usuari principal i torna a entrar, i crea una nova pàgina HTML amb algun text.
- Visualitza-la amb el navegador.
- Crea el grup "web" amb la comanda addgroup. Si no estàs segur de com va, ja saps, UTILITZA EL MANUAL:
Recorda explicar a l'informe les comandes exactes que has utilitzat i justifica els permisos assignats.
PHP[modifica]
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.
Indexes[modifica]
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'índex.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:
- Desactivar indexes per tota la web (PISTA: busca els arxius de configuració dels directoris virtuals).
- Desactivar indexes per un directori concret. Per realitzar això caldrà utilitzar un arxiu .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:
- Deixa els índexes activats per la web sencera.
- Prohibeix-los de la carpeta "fotos", on pujaràs 3 fotos d'exemple amb aquests noms: 1.png, 2.png, 3.png
Realitza-ho, captura pantalles i documenta-ho adequadament a l'informe.
Mòduls de l'apache2[modifica]
L'apache disposa de certs mòduls (complements) 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òdul
- a2dismod : desactiva mòdul
Mòdul Userdir[modifica]
É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 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 (per exemple), podrem accedir a la carpeta /home/zeus/public_html (OJU! S'ha de crear "a mà") apuntant el navegador a:
http://<ip_del_server>/~zeus
La "tilde" de la lletra "ñ" s'aconsegueix amb [AltGr]+[ñ]. Si esteu en Windows i se us resisteix, premeu [Alt]+126 en el teclat numèric.
Exercici
- Activa els "userdir"
- Crea la carpeta de l'usuari principal (zeus, funky, super o el què sigui).
- Afegeix una pàgina HTML. Captureu pantalla visualitzant-la.
PHP en userdirs[modifica]
Per defecte, l'ús de PHP en els directoris d'usuari està desactivat. Ara l'activarem.
Exercici
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ó, ara per ara 7.0). En els comentaris de dintre de l'arxiu ja explica què cal fer exactament.
OJU! Pensa a reiniciar el servei!!
- Per comprovar-ho utilitza la pàgina de prova en php que he utilitzat abans. Captura pantallada.
- Posa l'article trobat en la webgrafia de l'informe.
Hosts virtuals[modifica]
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":
- /etc/apache2/sites-available : hi ha un arxiu per cada site. També es podrien posar 2 sites en un arxiu però seria més confús.
- /etc/apache2/sites-enabled : symbolic links a les "sites available". Si hi ha link és que està activada.
Exercici
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_html
- www.mercuri.local -> /home/mercuri/public_html
ULL: 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:
- Crear els usuaris zeus i mercuri i les seves respectives carpetes web.
- Posa una pàgina HTML de benvinguda diferent a cada directori d'usuari per distingir si ens estem connectant correctament.
- Configurar el /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.
- NOTA: si el client és Windows, el fitxer de hosts està a C:\Windows\system32\drivers\etc\hosts
- Comprova que pots accedir indistintament a www.zeus.local i a www.mercuri.local des del client (browser) amb:
http://www.mercuri.local
- Configurar els servidors virtuals de l'Apache.
Configurar un nou Virtual Host[modifica]
- Arxiu de virtual host: cada site (domini) ha de tenir un arxiu a
/etc/apache2/sites-available
. Crea una nova site copiant l'arxiu000-default.conf
amercuri.conf
(has de tenir, doncs, 2 arxius) a "sites-available". - Configura el teu nou VirtualHost. Utilitza el següent article:
- http://httpd.apache.org/docs/2.2/vhosts/name-based.html : la millor font sempre és la pàgina oficial.
- ULL! No ho feu "a la tuntún". En l'article està tot en el mateix arxiu, i nosaltres el tenim repartit en 2.
- Bàsicament es tracta de modificar el nou arxiu
mercuri.conf
amb:- Afegir la directiva ServerName (el default no la té ja que serveix a tothom qui ho demani).
- Modificar DocumentRoot i el Directory per tal que apuntin a la carpeta de l'usuari mercuri (public_html).
- http://httpd.apache.org/docs/2.2/vhosts/name-based.html : la millor font sempre és la pàgina oficial.
- Activar la site amb la comanda a2ensite. Esbrina com fer-ho utilitzant el manual: $ man a2ensite
Comprova que s'ha activat bé: ha d'haver un link simbòlic a /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
- Recarrega (ull, no reinicia) el servei Apache2:
$ sudo service apache2 reload
Exercici FINAL[modifica]
Exercici FINAL
- Realitza el mateix exercici però amb un usuari amb el teu nom (per exemple "enric") i la site amb el domini www.elteunom.local (per exemple "www.enric.local").
- Penja una pàgina en PHP al teu domini.
NOTA: Aquest exercici és el que haureu de mostrar com a "demo" a classe.