Diferencia entre revisiones de «Plantilla:Apache/Instalacion»
De WikiEducator
(→Cliente: varios nombres .. una ip) |
|||
(17 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 29: | Línea 29: | ||
apache2 -v | apache2 -v | ||
</source> | </source> | ||
− | [[Archivo: | + | [[Archivo:apache_version_2019.png|center|350px]] |
<hr /> | <hr /> | ||
</div> | </div> | ||
Línea 39: | Línea 39: | ||
[[Archivo:apache_dir_configuracion.png|center|250px]] | [[Archivo:apache_dir_configuracion.png|center|250px]] | ||
}} | }} | ||
+ | <br /> | ||
</div> | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | ;Directivas de configuración | ||
+ | |||
+ | *El servidio (como todos el linux), se configura con '''directivas de configuración''' | ||
+ | *Son variables que tengo en un fichero y especifican el comportamiento de este programa | ||
+ | *Por ejemplo '''cuál es el directorio dónde apache va a buscar los recursos solicitados''' | ||
+ | |||
+ | {{MRM_Actividad|Title=Modificar el document root| | ||
+ | *Edita el fichero de configuración '''000-default.conf''' ubicado en '''/etc/apache2/sites-enabled''' con privilegios de root | ||
+ | <source lang=bash> | ||
+ | sudo gedit /etc/apache2/sites-enabled/000-default.conf | ||
+ | </source> | ||
+ | *Modifica la direciva '''DocumentRoot''' | ||
+ | <source lang=bash> | ||
+ | DocumentRoot /var/www | ||
+ | </source> | ||
+ | *Rebota el servicio | ||
+ | <source lang=bash> | ||
+ | sudo service apache2 restart | ||
+ | </source> | ||
+ | </div> | ||
+ | }} | ||
<div class="slide"> | <div class="slide"> | ||
Línea 49: | Línea 73: | ||
<div class="slide"> | <div class="slide"> | ||
+ | <br /> | ||
*No es objetivo profundizar en estos ficheros, pero sí es importante conocer | *No es objetivo profundizar en estos ficheros, pero sí es importante conocer | ||
;apache.conf | ;apache.conf | ||
Línea 56: | Línea 81: | ||
<div class="slide"> | <div class="slide"> | ||
===Servidor Web=== | ===Servidor Web=== | ||
− | [[Archivo: | + | ;Proceso de comunición '''''tcp/ip''''' |
+ | [[Archivo:transmision_tcp_ip2.png|center]] | ||
+ | *Es importante entender el concepto de protocolo. | ||
+ | {{MRM_Definicion|Title=Protocolo| | ||
+ | ;Un programa que implementa una serie de reglas y normas para que dos partes diferentes se puedan comunicar. | ||
+ | }} | ||
+ | *Un protocolo es un programa, pero solo el programa de '''''nivel de aplicación''''' vamos a gestinar (instalar, eliminar, configurar), el resto de software (protocolos de otros niveles), son parte del kernel del sistema operativo, a los que no tenemos acceso de gestionar, pero sí, a veces, de configurar, como estalbecer el ''número ip' dentro del '''''protocolo ip o protocolo de internet'''''. | ||
+ | |||
+ | ;El Servidor | ||
+ | *La imagen anterior, muestra el proceso de comunicación tcp/ip entre dos dispositivos. | ||
+ | *El equipo que recibe la comunicación se conoce como servidor, por el hecho de que están ejecutándose en él diferentes programas servidores. | ||
+ | *Cada programa está escuchando por un puerto, que es quién le identifica, de modo que cuando la tarjeta de red recibe un paquete, datagrama o fragmento (un grupo de bits), si el nivel de red, decide que es él el destinatario, desde el nivel de transporte sabe a qué aplicación entregarlo. | ||
+ | |||
+ | [[Archivo:solicitud_web_2.png|center]] | ||
</div> | </div> | ||
+ | |||
+ | |||
<div class="slide"> | <div class="slide"> | ||
− | ; | + | ====Permisos de ficheros==== |
− | + | Parar poder acceder a un fichero necesitamos tener una referencia a él (Tanto para escribir como para leer). | |
− | + | ;Temas de permisos de <span style=color:red>apache</span> | |
− | {{ | + | A pesar de que no somos administradores/as debemos tener conocimientos para ciertos temas. |
− | ; | + | Lo primero debemos tener claro es que cuando '''php''' le dice en el script a apache que actúe sobre el sistema de ficheros, es en última instancia el usuario apache quién quiere hacer la acciones |
− | + | *Lee atentamente el siguiente cuadro y asegúrate de tener claro cada punto, si no, pregunta. | |
+ | {{MRM_Actividad|Title=Puntos fundamentales sobre permisos| | ||
+ | 1.- En '''''linux''''' todo '''fichero''' tiene un '''propietario''', y también todo '''proceso'''. | ||
+ | *El '''''propietario''''' del proceso es el '''''usuario que lazó''''' dicho proceso. | ||
+ | *Cuando un proceso quiere hacer algo sobre un fichero, el usuario que lanzó el proceso, debe tener '''''permisos sobre el fichero''''' para hacerlo. | ||
+ | *El usuario que lanza '''''apache''''' es '''''www-data''''' | ||
+ | *Para hacer a un usuario propietario de un fichero o a su grupo usamos la sentencia | ||
+ | <source lang=bash> | ||
+ | sudo chown usuario:grupo fichero (-R) }} | ||
+ | </source> | ||
+ | {{Nota|*'''''-R''''' parámetro opcional que actuaría de forma recursiva. | ||
+ | *En php un '''''directorio es igual que un fichero''''' cuyo contenido son los ficheros y directorios que contiene.}} | ||
+ | |||
+ | |||
+ | ;Para dar permisos sobre un fichero a un usuario usamos la sentencia | ||
+ | <source lang=bash> | ||
+ | sudo chmod permisos fichero (-R) }} | ||
+ | </source> | ||
+ | {{Nota| | ||
+ | *'''''permisos'''' es un número de tres dígitos en '''octal''', ver tabla de abajo. | ||
+ | *'''''fichero''''' al cual le queremos dar permisos, se puede usar * para especificar todos. | ||
+ | *'''''-R''''' parámetro opcional que actuaría de forma recursiva. | ||
+ | }} | ||
}} | }} | ||
+ | |||
+ | |||
+ | {| class="wikitable" colspec="C4" | ||
+ | |- | ||
+ | ! Número | ||
+ | ! Binario | ||
+ | ! Lectura (''r'') | ||
+ | ! Escritura (''w'') | ||
+ | ! Ejecución (''x'') | ||
+ | |- | ||
+ | | 0 | ||
+ | | 000 | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | |- | ||
+ | | 1 | ||
+ | | 001 | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|centeconcatenaciónr]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | |- | ||
+ | | 2 | ||
+ | | 010 | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | |- | ||
+ | | 3 | ||
+ | | 011 | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | |- | ||
+ | | 4 | ||
+ | | 100 | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | |- | ||
+ | | 5 | ||
+ | | 101 | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | |- | ||
+ | | 6 | ||
+ | | 110 | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:No-Symbol.svg|20px|center]] | ||
+ | |- | ||
+ | | 7 | ||
+ | | 111 | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | | [[Archivo:Symbol OK.svg|20px|center]] | ||
+ | |} | ||
+ | |||
+ | Por ejemplo: | ||
+ | <source lang="bash"> | ||
+ | chmod 766 file.txt # brinda acceso total al dueño | ||
+ | # y lectura y escritura a los demás | ||
+ | chmod 770 file.txt # brinda acceso total al dueño y al grupo | ||
+ | # y elimina todos los permisos a los demás usuarios | ||
+ | chmod 635 file.txt # Permite lectura y escritura al dueño, | ||
+ | # escritura y ejecución al grupo, | ||
+ | # y lectura y ejecución al resto | ||
+ | </source> | ||
+ | |||
+ | |||
+ | |||
+ | {{Nota| Recuerda que es el usuario '''''apache''''' el que ha de tener los permisos necesarios '''(leer(r),escribir (w), ejecutar (x)'''}} | ||
</div> | </div> | ||
− | |||
− | |||
+ | <div class="slide"> | ||
+ | ===Configuración de un servidor web=== | ||
+ | La configuración se basa en un VirtualHost. | ||
+ | {{MRM_Actividad|Title=VirtualHost| | ||
+ | ;Forma de configurar en una única máquina (una ip) Apache. | ||
+ | conjunto sitios web (1 o más) | ||
+ | basados en nombres de dominio (cada uno un nombre) | ||
+ | cada dominio su configuración independiente (directivas de apache) | ||
+ | }} | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | <br /> | ||
+ | ====Virtual Host==== | ||
+ | [[Imagen:configuracion_virutalhost1.png|400px|center]] | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ;VirtualHost | ||
+ | ;Una única ip, varios dominios | ||
+ | *Cada dominio configurado en el Virtualhost | ||
+ | *Cada VirtualHost su propia configuración | ||
+ | *Se configura a través de directivas de '''''apache''''' | ||
+ | *Mejor en fichero independiente en el directorio | ||
+ | [[Imagen:ficheros_sitios_web.png|center]] | ||
+ | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | ;VirtualHost | ||
+ | <br /> | ||
+ | {{MRM_Web| | ||
+ | [https://httpd.apache.org/docs/2.4/vhosts/| Web oficial] | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | |||
+ | <div class="slide"> | ||
+ | ;VirtualHost | ||
+ | ;sites_enabled vs sites_available | ||
+ | {{MRM_Actividad|Title=Organización de los ficheros de configuración| | ||
+ | *Tener todos los posibles sitios virtuales en el directorio '''''sites-available''''' | ||
+ | *Solo aquellos que quiero que estén activos establezco un enlace simbólico en el directorio '''''sites-enabled''''' | ||
+ | {{Tip|Solo los ficheros que haya en el directorio '''sites-enabled''' estarán activos}} | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <br /> | ||
+ | |||
+ | ;VirtualHost | ||
+ | *Para crear un enlace simbólico | ||
+ | <source lang=bash> | ||
+ | ln -s directorio/fichero_fisico directorio/fichero_enlace | ||
+ | </source> | ||
+ | *Podemos usar comando de apache | ||
+ | <source lang=bash> | ||
a2ensite <site> | a2ensite <site> | ||
a2dissite <site> | a2dissite <site> | ||
+ | </source> | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | + | ====Algunas directivas importantes==== | |
− | + | ;ServerName | |
− | ; | + | Directiva que especifica el directorio base para buscar ficheros |
− | + | ;DocumentRoot | |
− | + | Directiva que especifica el directorio base para buscar ficheros | |
− | + | ;DirectoryIndex | |
+ | Nombre de fichero/s que se entregan por defecto al solicitar recurso | ||
+ | ;<Directory ./../..> </Directory> | ||
+ | Para configurar de forma particular algún directorio dentr del sitio web de esta configuración | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ====Ejemplo Confituracion virutalHost==== | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
;VirtualHost | ;VirtualHost | ||
− | * | + | *Los valores principales serían |
#'''''DocumentRoot''''' Que es la ruta base de nuestro servidor web | #'''''DocumentRoot''''' Que es la ruta base de nuestro servidor web | ||
#'''''ServerName''''' . Que es el nombre del host donde está nuestro servidor web | #'''''ServerName''''' . Que es el nombre del host donde está nuestro servidor web | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | |||
+ | ====Cliente: varios nombres .. una ip==== | ||
+ | [[Archivo:ip_server_cliente.png]] | ||
+ | </div> | ||
+ | <div class="slide"> | ||
;Especificando varios nombres de host | ;Especificando varios nombres de host | ||
*Un mismo host (ip), puede ser especificado con diferentes dominios (esto no puede ser al contrario). | *Un mismo host (ip), puede ser especificado con diferentes dominios (esto no puede ser al contrario). | ||
Línea 107: | Línea 307: | ||
3.-Se busca o pregunta a nuestro servidor '''''dns''''' que nos lo resuelva. | 3.-Se busca o pregunta a nuestro servidor '''''dns''''' que nos lo resuelva. | ||
}} | }} | ||
+ | {{Plegable|hide|Pasos a realizar| | ||
+ | ;1º Agregamos en la configuracion de apache los nuevos VirtualHost | ||
+ | *Creamos los ficheros de configuración en la carpeta correspondiente | ||
+ | /etc/apache2/sites-available/informatica.conf | ||
+ | /etc/apache2/sites-available/manuel.conf | ||
+ | /etc/apache2/sites-available/musica.conf | ||
+ | *En su contenido, especificamos los valores para DocumentRoot y para ServerName (comenta su significado). | ||
+ | {{Plegable|hide|Contenido de informatica.conf sin comentarios| | ||
<source lang=bash> | <source lang=bash> | ||
− | sudo | + | <VirtualHost *:80> |
+ | ServerName www.informatica.com | ||
+ | DocumentRoot /var/www/informatica | ||
+ | </VirtualHost> | ||
+ | </source> | ||
+ | }} | ||
+ | *Rebotamos el servicio (al haber cambiado el fichero de configuración) | ||
+ | <source lang=bash> | ||
+ | sudo service apache2 restart | ||
+ | </source> | ||
+ | ;2º Creo los recursos en la web | ||
+ | *Hemos establecido que cuando se acceda a este servidor web con el nombre '''''informatica.com''''' se ha de ir a buscar los recursos a '''''/var/www/informatica'''''. Ahora debemos de crear esa estructura de carpetas, y ubicar ahí algún recurso (página html). | ||
+ | *Para realizar esta acción, debes de asegurarte de tener premisos de escritura en esta carpeta. | ||
+ | |||
+ | ;3º Modificamos el fichero /etc/hosts para la resolución de direcciones ip, aportando un nombre | ||
+ | <source lang=bash> | ||
+ | sudo gedit /etc/host | ||
</source> | </source> | ||
</div> | </div> | ||
+ | *Agregamos las ip de los nombres, observa que la ip que pongo es la de loopback (127.0.0.1), o bien la ip que tenga asignada mi equipo | ||
+ | <source lang=bash> | ||
+ | 127.0.0.1 manuel.com | ||
+ | 127.0.0.1 informatica.com | ||
+ | #127.0.0.1 musica.com | ||
+ | 172.30.1.120 musica.com | ||
+ | </source> | ||
+ | {{MRM_Pregunta| | ||
+ | ;¿Cómo puedo comprobar que está bien esta configuracioń de ip-nombres? | ||
+ | }} | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | }} | ||
<div class="slide"> | <div class="slide"> |