Diferencia entre revisiones de «Plantilla:Apache/Instalacion»

De WikiEducator
Saltar a: navegación, buscar
(Cliente: varios nombres .. una ip)
 
(6 revisiones intermedias por el mismo usuario no mostrado)
Línea 81: Línea 81:
 
<div class="slide">
 
<div class="slide">
 
===Servidor Web===
 
===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]]
 
[[Archivo:solicitud_web_2.png|center]]
 
</div>
 
</div>
Línea 88: Línea 101:
  
 
<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 class="slide">
 +
 
===Configuración de un servidor web===
 
===Configuración de un servidor web===
 
La configuración se basa en un VirtualHost.
 
La configuración se basa en un VirtualHost.
Línea 105: Línea 225:
 
<div class="slide">
 
<div class="slide">
  
====VirtualHost====
+
;VirtualHost
 
;Una  única ip, varios dominios
 
;Una  única ip, varios dominios
 
*Cada dominio configurado en el Virtualhost
 
*Cada dominio configurado en el Virtualhost
Línea 116: Línea 236:
  
 
<div class="slide">
 
<div class="slide">
====VirtualHost====
+
;VirtualHost
 
<br />
 
<br />
 
{{MRM_Web|
 
{{MRM_Web|
Línea 125: Línea 245:
  
 
<div class="slide">
 
<div class="slide">
====VirtualHost====
+
;VirtualHost
 
;sites_enabled vs sites_available
 
;sites_enabled vs sites_available
 
{{MRM_Actividad|Title=Organización de los ficheros de configuración|
 
{{MRM_Actividad|Title=Organización de los ficheros de configuración|
Línea 137: Línea 257:
 
<br />
 
<br />
  
====VirtualHost====
+
;VirtualHost
 
*Para crear un enlace simbólico
 
*Para crear un enlace simbólico
 
<source lang=bash>
 
<source lang=bash>
Línea 162: Línea 282:
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
====Ejemplo Confituracion virutalHost
+
====Ejemplo Confituracion virutalHost====
[[Archivo:ejemplo_virtual_hols.png|center]]
+
 
</div>
 
</div>
  
Línea 173: Línea 292:
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
 +
 
====Cliente: varios nombres .. una ip====
 
====Cliente: varios nombres .. una ip====
 
[[Archivo:ip_server_cliente.png]]
 
[[Archivo:ip_server_cliente.png]]
Línea 187: 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 vim /etc/host
+
<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">

Última revisión de 18:49 25 nov 2022

  1. Instalamos apache

Apache.png

  • Se instala directamente del repositorio de ubuntu
 sudo apt-get install apache2
  • 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


Icon activity.jpg
Actividad
  1. Probamos a ver si responde nuestro servidor web (En nuestro caso localhost
  2. Vemos el fichero de configuración



Apache arrancar.png

  • Podemos ver el estado del servicio, así como pararlo, arrancarlo recargarlo, ...
Apache acciones.png

  • Para ver la versión:
 apache2 -v
Apache version 2019.png

Buscamos el directorio donde están los ficheros de configuración
  • Aquí un listado del contenido del directorio donde está toda la configuración


Icon activity.jpg
Directorio de configuración
Apache dir configuracion.png




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



Icon activity.jpg
Modificar el document root
  • Edita el fichero de configuración 000-default.conf ubicado en /etc/apache2/sites-enabled con privilegios de root
 sudo gedit  /etc/apache2/sites-enabled/000-default.conf
  • Modifica la direciva DocumentRoot
 DocumentRoot /var/www
  • Rebota el servicio
 sudo service apache2 restart




  • Listado de los ficheros log para conocer incidencias y notificiones


Icon activity.jpg
Directorio de log
Apache dir log.png




  • 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.

Servidor Web

Proceso de comunición tcp/ip
Transmision tcp ip2.png
  • Es importante entender el concepto de protocolo.


Icon define.gif
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.
Solicitud web 2.png



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 apache

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.


Icon activity.jpg
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
 sudo chown usuario:grupo fichero (-R) }}

(Comment.gif: *-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
 sudo chmod permisos fichero (-R) }}

(Comment.gif:

  • 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.

)





Número Binario Lectura (r) Escritura (w) Ejecución (x)
0 000
No-Symbol.svg
No-Symbol.svg
No-Symbol.svg
1 001
No-Symbol.svg
centeconcatenaciónr
Symbol OK.svg
2 010
No-Symbol.svg
Symbol OK.svg
No-Symbol.svg
3 011
No-Symbol.svg
Symbol OK.svg
Symbol OK.svg
4 100
Symbol OK.svg
No-Symbol.svg
No-Symbol.svg
5 101
Symbol OK.svg
No-Symbol.svg
Symbol OK.svg
6 110
Symbol OK.svg
Symbol OK.svg
No-Symbol.svg
7 111
Symbol OK.svg
Symbol OK.svg
Symbol OK.svg

Por ejemplo:

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



(Comment.gif: Recuerda que es el usuario apache el que ha de tener los permisos necesarios (leer(r),escribir (w), ejecutar (x))



Configuración de un servidor web

La configuración se basa en un VirtualHost.


Icon activity.jpg
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)




Virtual Host

Configuracion virutalhost1.png
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
Ficheros sitios web.png


VirtualHost





VirtualHost
sites_enabled vs sites_available


Icon activity.jpg
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
Icon present.gif
Tip: Solo los ficheros que haya en el directorio sites-enabled estarán activos





VirtualHost
  • Para crear un enlace simbólico
ln -s directorio/fichero_fisico directorio/fichero_enlace
  • Podemos usar comando de apache
a2ensite <site>
a2dissite <site>


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

Ejemplo Confituracion virutalHost

VirtualHost
  • Los valores principales serían
#DocumentRoot Que es la ruta base de nuestro servidor web
#ServerName . Que es el nombre del host donde está nuestro servidor web

Cliente: varios nombres .. una ip

Ip server cliente.png

Especificando varios nombres de host
  • 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 hosts


Icon key points.gif

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.


</table> }}



Icon activity.jpg
Crea 3 sitios web
  • Crea 3 sitios web con los siguiente nombres
#www.informatica.dwes.es 
#www.tuNombre.es
#www.musica.es
  • Que cada uno de ellos vaya a buscar su fichero index.html a las carpetas respectivas
#/var/www/informatica
#/var/www/tuNombre
#/var/www/musica




(Comment.gif: Mira la sección de ejercicios donde verás una posible solución)


Arrancar y parar el servido
  • para parar y arrancar el servicio
sudo /etc/init.d/apache2 stop|start
  • Siempre que modifiquemos la configuración, tenemos que rearmar el servicio
Localizar el fichero de errores
  • Muy importante, el servidor generará errores cuando no pueda procesar algo (incluido php)


Icon activity.jpg
Fichero de errores de apache
/var/log/apache2/error.log





Icon key points.gif

Puntos clave

  • Usa el comando tail -f para tenerlo abierto en caliente con las últimas líneas añadidas
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


Icon activity.jpg
Crea un alias
  • Edita el fichero oculto .basrc
  • Añade el la última línea el comando
 alias e="tail -f /var/log/apahce2/error.log"
  • Vuelve a cargar el fichero (esto no hará falta cuando vuelvas a cargar el sistema)
 source .basrc
  • Ahora si escribes el alias e, se ejecutará el comando asignado



Obtenido de «https://es.wikieducator.org/index.php?title=Plantilla:Apache/Instalacion&oldid=29955»