Diferencia entre revisiones de «Plantilla:Apache/Instalacion»
De WikiEducator
(→Cliente: varios nombres .. una ip) |
|||
(29 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 6: | Línea 6: | ||
sudo apt-get install apache2 | sudo apt-get install apache2 | ||
</source> | </source> | ||
− | |||
*Para verificar su instalación abrimos un navegador e invocamos al servidor, que en este momento será localhost, 127.0.0.1 o la ip que tengamos en nuestro equipo | *Para verificar su instalación abrimos un navegador e invocamos al servidor, que en este momento será localhost, 127.0.0.1 o la ip que tengamos en nuestro equipo | ||
+ | </div> | ||
+ | |||
<div class="slide"> | <div class="slide"> | ||
{{MRM_Actividad| | {{MRM_Actividad| | ||
Línea 13: | Línea 14: | ||
#Vemos el fichero de configuración | #Vemos el fichero de configuración | ||
}} | }} | ||
+ | [[Archivo:apache_arrancar.png|center|500px]] | ||
+ | <hr /> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
*Podemos ver el estado del servicio, así como pararlo, arrancarlo recargarlo, ... | *Podemos ver el estado del servicio, así como pararlo, arrancarlo recargarlo, ... | ||
− | [[Archivo:apache_acciones.png]] | + | [[Archivo:apache_acciones.png|center|500px]] |
+ | <hr /> | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
*Para ver la versión: | *Para ver la versión: | ||
<source lang=bash> | <source lang=bash> | ||
apache2 -v | apache2 -v | ||
</source> | </source> | ||
− | [[Archivo: | + | [[Archivo:apache_version_2019.png|center|350px]] |
+ | <hr /> | ||
</div> | </div> | ||
− | |||
+ | <div class="slide"> | ||
;Buscamos el directorio donde están los ficheros de configuración | ;Buscamos el directorio donde están los ficheros de configuración | ||
− | {{MRM_Actividad| | + | *Aquí un listado del contenido del directorio donde está toda la configuración |
− | + | {{MRM_Actividad|Title=Directorio de configuración| | |
+ | [[Archivo:apache_dir_configuracion.png|center|250px]] | ||
+ | }} | ||
+ | <br /> | ||
</div> | </div> | ||
<div class="slide"> | <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"> | ||
+ | *Listado de los ficheros '''''log''''' para conocer incidencias y notificiones | ||
+ | {{MRM_Actividad|Title=Directorio de log| | ||
+ | [[Archivo:apache_dir_log.png|center|250px]] | ||
+ | }} | ||
+ | </div> | ||
+ | |||
+ | <div class="slide"> | ||
+ | <br /> | ||
+ | *No es objetivo profundizar en estos ficheros, pero sí es importante conocer | ||
+ | ;apache.conf | ||
+ | fichero de configuración general. | ||
+ | en él se incorporar muchos otros ficheros de configuración. | ||
+ | </div> | ||
+ | <div class="slide"> | ||
+ | ===Servidor Web=== | ||
+ | ;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 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 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 | ;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"> | ||
+ | ;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> | ||
+ | a2dissite <site> | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | <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). | ||
− | *Como no vamos a entrar en configurar '''''bind''''' '''(DNS)''', modificaremos el fichero ''''' | + | *Como no vamos a entrar en configurar '''''bind''''' '''(DNS)''', modificaremos el fichero '''''hosts''''' |
+ | {{MRM_Puntos clave| | ||
+ | Debemos recordar que cuando queremos encontrar la ip de un dominio se siguen unos pasos | ||
+ | 1.-Primero miramos en el fichero /etc/hosts | ||
+ | a ver si hay una traducción directo. | ||
+ | 2.-Se mira en la caché. | ||
+ | 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"> | ||
Línea 73: | Línea 374: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
;Localizar el fichero de errores | ;Localizar el fichero de errores | ||
*Muy importante, el servidor generará errores cuando no pueda procesar algo (incluido php) | *Muy importante, el servidor generará errores cuando no pueda procesar algo (incluido php) | ||
Línea 83: | Línea 383: | ||
tail -f /var/log/apache2/error.log | tail -f /var/log/apache2/error.log | ||
}} | }} | ||
− | + | *Si quieres puedes crear un alias para no tener que escribir el comando completo | |
+ | *Se recomienda, ya que con bastante frecuencia consultaremos los errores cuando no funcionen la aplicación | ||
+ | {{MRM_Actividad|Title=Crea un alias| | ||
+ | *Edita el fichero oculto .basrc | ||
+ | *Añade el la última línea el comando | ||
+ | <source lang=bash> | ||
+ | alias e="tail -f /var/log/apahce2/error.log" | ||
+ | </source> | ||
+ | *Vuelve a cargar el fichero (esto no hará falta cuando vuelvas a cargar el sistema) | ||
+ | <source lang=bash> | ||
+ | source .basrc | ||
+ | </source> | ||
+ | *Ahora si escribes el alias '''''e''''', se ejecutará el comando asignado | ||
+ | }} | ||
</div> | </div> |