Apache 2

Manual de APACHE 2.0 08/10/2012 2º DAW Despliegue aplicaciones informaticas José María Moreno Moya José María Moreno

Views 126 Downloads 7 File size 948KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Manual de APACHE 2.0

08/10/2012 2º DAW Despliegue aplicaciones informaticas José María Moreno Moya

José María Moreno Moya

APACHE2.0

2

INDICE INTRODUCCIÓN _______________________________________________________ 3 INSTALACIÓN DE APACHE _______________________________________________ 6 ESTRUCTURA DE APACHE _______________________________________________ 8 CONFIGURACIÓN DE APACHE ___________________________________________ 11 HOSTS VIRTUALES ____________________________________________________ 17 SSL EN APACHE _______________________________________________________ 20 OTRAS OPCIONES DE APACHE ___________________________________________ 25 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN _______________________ 30

José María Moreno Moya

APACHE2.0

3

INTRODUCCIÓN Servidor Web La wikipedia define el servidor web como “un programa que implementa el protocolo HTTP (hypertext transfer protocol). Este protocolo está diseñado para transferir lo que llamamos hipertextos, páginas web o páginas HTML (hypertext markup language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones reproductores de sonidos.” La arquitectura utilizada es cliente/servidor, es decir, el equipo cliente hace una solicitud o petición al equipo servidor, y éste atiende dicha solicitud. En el equipo cliente se ejecuta una aplicación llamada 'navegador o cliente web' que: Sirve de interfaz con el usuario: atiende sus peticiones, muestra los resultados de las consultas y proporciona al usuario un conjunto de herramientas que facilitan su comunicación con el servidor. Se comunica con el servidor web: transmite las peticiones de los usuarios. En el equipo servidor la única tarea es atender las diferentes peticiones recibidas desde los diferentes navegadores o clientes web y hacerlo de forma eficiente y segura. Este es el caso de los servidores web seguros que solicitan un nombre de usuario y una contraseña para permitir el acceso sólo a usuarios registrados y por tanto, con permiso para visualizar la página/s. El objetivo de un servidor web es servir o suministrar páginas web a los clientes web o navegadores que las solicitan. Un usuario, por ejemplo desde el navegador Firefox, al hacer 'click' sobre un enlace a una página web está enviando una solicitud al servidor web que aloja dicha página para que se la muestre (servir la página). El servidor web si la encuentra la envía y si no la encuentra devuelve al cliente un mensaje de error. El cliente cuando recibe la página web interpreta el código HTML mostrando las fuentes, colores, imágenes que la componen, etc, de forma correcta. Pero el servidor web, además de servir páginas web HTML estáticas también permite la ejecución de una serie scripts, en diferentes lenguajes de programación, que proporcionan dinamismo a las páginas web. Estos lenguajes son PHP, CGI3, applets de Java4, etc.

Navegación Web

José María Moreno Moya

APACHE2.0

4

Para que el navegador pueda llegar al servidor web (ya sea en una red local o en Internet) el servidor debe tener asignada una dirección IP (Internet Protocol) única que identifica el equipo en la red. Cuando el navegador hace una petición al servidor web utiliza un nombre que identifica al servidor y esta solicitud se transmite a un servidor DNS. Éste resuelve el nombre y devuelve la dirección IP que corresponde al nombre. La solicitud del navegador entonces se encamina al servidor web correcto. La información que el usuario proporciona al navegador para conectar con un servidor web se llama URL (Uniform Resource Locators). protocolo://servidor/ruta/recurso

URL de solicitud de un recurso consta de: 1. Protocolo a utilizar: http, https, ftp, ftps,... 2. Servidor: es la dirección IP o el nombre del servidor (FQDN) que contiene el recurso. 3. Ruta_al_recurso: directorio y subdirectorios del sitio web donde está ubicado el recurs 4. Recurso: recurso al que se quiere acceder. http://es.wikipedia.org/wiki/Localizador_uniforme_de_recursos

Protocolo HTTP Las siglas HTTP significan Hyper Text Transfer Protocol, Protocolo de Transferencia de HiperTexto y es el protocolo usado en las transacciones de la web (www). El hipertexto es el contenido de las páginas web, y el protocolo de transferencia es el conjunto de normas mediante las que se envían las peticiones de acceso a una web y la respuesta de esa web. HTTP es el protocolo de la web. Se define como un conjunto de normas que permiten la comunicación entre el servidor y los clientes y la transferencia de información (archivos de texto, imágenes, archivos de música, ...) entre ambos.     

HTTP es un protocolo cliente/servidor cuyo funcionamiento está basado en el envío de mensajes y consiste en que: El usuario especifica en el cliente web (navegador) la dirección de la página que quiere consultar según un formato http://dirección[:puerto][path]. El cliente web decodifica la información de la URL diferenciando el protocolo de acceso, IP o nombre de dominio del servidor, puerto,... El cliente web establece una conexión (socket) con el servidor web y solicita la página (mensaje request). El servidor envía dicha página (si no existe envía un código de error) y el cliente web interpreta el código HTML recibido. Mensaje response del servidor.

Se cierra la conexión.

José María Moreno Moya

APACHE2.0

5

El protocolo HTTP es un protocolo sin estado, es decir, no recuerda nada relativo a conexiones anteriores a la actual Para cada objeto que se transfiere por la red se realiza una conexión independiente. Ejemplo: si el cliente web solicita una página que incorpora varias imágenes se realizan las siguientes conexiones: una para el documento HTML y una por cada una de las imágenes. Para resolver estas situaciones de “falta de memoria” del protocolo, además de recordar la información de la sesión actual (cuya información se pierde, por ejemplo, al cerrar el navegador), se utilizan las cookies. Las cookies son archivos de texto que se intercambian entre el cliente web y el servidor. Cuando se solicite de nuevo un intercambio de información entre estos mismos puntos se tendrá en cuenta la información almacenada en esos archivos. Por ejemplo, para un mensaje de petición al servidor la primera línea tiene la estructura: GET /index.html

HTTP/1.0

que debe interpretarse como una petición (GET) del archivo index.html que está en el directorio raíz compatible con la versión 1.0 del protocolo HTTP. Por ejemplo, para un mensaje de respuesta del servidor la primera línea tiene la estructura: HTTP/1.0 200 OK,

que debe interpretarse como la respuesta de petición servida (código 2001) con éxito e indica la versión de HTTP utilizada (1.0). El texto OK está relacionado con el código de error correspondiente. El protocolo que se usa ahora es HTTP v. 1.1 es más potente y presenta entre otras novedades las conexiones persistentes.

Servidor Web Apache

José María Moreno Moya

APACHE2.0

6

El servidor web apache es una de las aplicaciones estrella del mundo Linux. Es el servidor web más implantado entre los distintos servidores que ofertan servicios web en Internet. Apache es un servidor Web que surgió a partir del servidor de HTTP más famoso y difundido en su época: NCSA. Desde entonces se convirtió en un poderoso rival de todos los servidores Unix utilizados hasta la fecha por su eficiencia, funcionalidad y rapidez. Es por ello que se conoce como el rey de los servidores Web. Se desarrolla de forma estable y segura gracias a la cooperación y los esfuerzos de un grupo de personas conocidas como grupo Apache (Apache Group), los cuales se comunican a través de Internet y del Web. Juntos se dedican a perfeccionar el servidor y su documentación regidos por la ASF (Apache Software Foundation). En la actualidad Apache es el servidor Web más utilizado en el mundo de acuerdo con las estadísticas de http://news.netcraft.com que lo colocan en más de 100 millones de servidores, lo cual significa más del 45% en todo el mundo. Entre las características principales del Apache se encuentran:       



Estable: es un servicio muy robusto y que no se cuelga con facilidad. Es un servidor Web potente, flexible y altamente configurable. Extensible, modular. Puede ser ajustado a través de la definición de módulos empleando su propio API (Aplication Programming Interface). Puede crear servidores virtuales. Éstos pueden ser seguros. Software libre. Provee todo su código fuente de forma libre y se distribuye bajo una licencia no restrictiva. Tiene su propia licencia. Multiplataforma. Está disponible para casi todos los sistemas operativos: Windows Cliente/Servidor, Macintosh, Linux, Unix,... Apache se distribuye en dos "ramas" separadas de código, que corresponden a la versión 2.0.xx y la versión 1.3.xx. La versión 1.3 corresponde a la edición clásica de Apache, especialmente optimizada para las plataformas Unix. La versión 2.2.X en con la que se recomienda trabajar que incluye muchas novedades. Apache significa ``A PAtCHy sErver'', o sea se basa en un código y un conjunto de ficheros ``parches''. Otros desarrolladores relacionan su nombre con el de las tribus nativas americanas de Apaches.

INSTALACIÓN DE APACHE

José María Moreno Moya

APACHE2.0

7

Vamos a realizar una instalación de apache en un distribución Ubuntu. Gracias al sistema de paquetes de Ubuntu (basado en Debian), la instalación de nuevas aplicaiones es muy sencilla. Basta con usar el comandoaptitude install y a continuación el nombre del paquete a instalar. Instalaremos apache2. Hay que recodar que en linux sólo el administrador del sistema, root, puede instalar aplicaiones, así que necesitaremos permisos para hacerlo. Se podría instalar desde una consola de root, o, siguiendo la filosofía de ubuntu desde una consola norma añadiendo el comando sudo y escribiendo la contraseña. // Instalar Apache2 $ sudo aptitude install apache2

Por defecto, al instalarse el servicio se inicia cuando arranca el sistema, sin necesidad de iniciar sesión ningún usuario. Al instalar, si no estamos dentro de un dominio, nos dará el siguiente error:

No nos preocupamos por eso de momento, ya que está funcionado correctamente, lo comprobamos: Abrimos el Navegador y escribimos localhost en la barra de direcciones

Localhost, es una palabra que el sistema siempre identifica con la IP de lopback (normalmente 127.0.0.1), de esta menera podemos acceder a nuestro propio pc desde nuestro pc. Si quremos navegar deste otros pc hay que usar la dirección IP asignada.

José María Moreno Moya

APACHE2.0

8

Si la dirección IP de nuestro servidor fuera 192.168.1.100, podemos ir con el navegador a la dirección http://192.168.1.100 y obtendremos el mismo resultado. Como vemos en la pantalla anterior, la instalación de Apache se produjo de forma adecuada, así pues hemos completado este apartado satisfactoriamente.

Arranque y parada del servidor web apache El servidor web apache2, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d. // Arrancar o reiniciar el servidor apache2 $ sudo /etc/init.d/apache2 restart // Parar el servidor apache $ sudo /etc/init.d/apache2 stop // Recargar apache con la nueva configuración $ sudo /etc/init.d/apache2 reload

Primera configuración de Apache Los archivos de configuración de apache2 se encuentran en la carpeta /etc/apache2. El archivo principal de configuración es/etc/apache2/apache2.conf. Antes de realizar cualquier cambio en este archivo, es conveniente realizar una copia de seguridad del mismo ya que si apache encuentra algún error en el archivo de configuración, no arrancará. Se pueden configurar infinidad de parámetros. Aquí, para poner en marcha el servidor, editaremos el archivo apache2.conf y añadiremos únicamente el siguiente parámetro: // Añadir en apache2.conf ServerName www.iesrioja.red // Añadir en /etc/hosts 127.0.0.1 localhost

www.iesrioja.red

De esta manera el servidor tendrá un nombre de dominio cualificado, y además desde el mismo ordenador se podrá acceder con ese nombre. Para que se pudiese acceder desde otros ordenadores debería existir un servidor DNS donde introducir el nombre.

ESTRUCTURA DE APACHE

José María Moreno Moya

APACHE2.0

9

Archivos de configuración Apache se configura poniendo directivas en los ficheros de configuración en texto simple. El fichero principal de configuración suele llamarsehttpd.conf, o bien apache2.conf. En las distribuciones basadas en Debian apache2.conf es el que se usa. Además, se pueden adicionar otros ficheros de configuración usando la directiva Include. Cualquier directiva se puede colocar en cualquiera de estos ficheros de configuración. Apache solo reconocerá los cambios en los ficheros de configuración durante el arranque o reinicio.

Directivas include que hay dentro de apache2.conf . Todos estos ficheros se tendrán en cuenta para la configuración de Apache. Se separa en diferentes ficheros para organizar mejor la configuración, pero realmente da igual en qué fichero se escriban las directivas. # Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # Include all the user configurations: Include /etc/apache2/httpd.conf # Include ports listing Include /etc/apache2/ports.conf # Include generic snippets of statements Include /etc/apache2/conf.d/ # Include the virtual host configurations: Include /etc/apache2/sites-enabled/

El directorio de configuración por defecto es /etc/apache2. Dentro de este directorio tenemos la siguientes estructura:

Ficheros: 

apache2.conf: Fichero de configuración general.

José María Moreno Moya  

APACHE2.0

10

ports.conf: Fichero de configuración de los puertos en los que escucha Apache. httpd.conf: Archivo vacío que no se usa en la distribución Ubuntu.

Directorios:     

conf.d: Son archivos de configuración de los distintos módulos instalados. Se llaman (cargan) desde el fichero apache2.conf. mods-available: Todos los módulos que dispone Apache. mods-enabled: Los módulos que están activos en este momento. Contiene enlaces simbólicos a algunos mods-available sites-available: Sitios preparados para ponerlos en marcha cuando sea necesario. sites-enabled: Sitios activos en este momento. Contiene enlaces simbólicos a sites-available

Comandos útiles para configurar    

a2enmod: activa módulos a2dismod: desactiva módulos a2ensite: activa sitios a2dissite: desactiva sitios

Sintaxis de los ficheros de configuración Los ficheros de configuración de Apache contienen una directiva por línea. En las directivas, dentro de los ficheros de configuración, no se hace distinción entre mayúsculas y minúsculas. Las líneas que comiencen con el carácter "#" serán consideradas comentarios, siendo ignoradas. No se pueden incluir comentarios en una línea, después de una directiva de configuración. Los espacios y líneas en blanco antes de una directiva de configuración se ignoran, de manera que se puede dejar una sangría en las directivas para mayor claridad. Se puede hacer un chequeo de la sintaxis de sus ficheros de configuración sin tener que reiniciar el servidor, usando apache2ctl configtest ó apache2 -S ( si falla este último hay que poner en apache2.conf dos líneas: User www-data y Group www-data)

Encontrar errores

José María Moreno Moya

APACHE2.0

11

Se debe consultar el registro de errores: es posible que el problema pueda deducirse de un mensaje de error. El archivo de registro de errores se encuentra en /var/log/apache2/error.log. Se recomienda mostrar los archivos de registro en una consola mientras se accede al servidor para ver cómo reacciona éste en cada momento. Con este fin, ejecute en una consola el siguiente comando como root. El fichero de log de apache está en /var/log, para verlo hay que ejecutar la orden: $ tail -f /var/log/apache2/*.log

CONFIGURACIÓN DE APACHE Directivas de Configuración Las directivas de configuración las podemos agrupar en 3 secciones. 

Configuración general. Directivas que definen los parámetros del servidor

 

principal y las opciones por defecto para los hosts virtuales. Optimización. Configuran los recursos y la eficacia de apache. De secciones. Directivas que configuran partes concretas funcionamiento de apache.

del

Directivas de Configuración General ServerRoot Define el directorio donde reside toda la información de configuración y registro que necesita el servidor. ServerRoot "/etc/apache2/"

DocumentRoot Esta directiva le indica a Apache la carpeta raíz que se ubica en el servidor, desde la que se servirán los documentos. Por defecto, todas las peticiones tendrán como raíz esta carpeta, a no ser que se utilicen alias. Esta directiva está en la configuración de un sitio o un Virtual Host.

José María Moreno Moya

APACHE2.0

12

DocumentRoot "/var/www"

ServerName Define el nombre de host del servidor. Se suele utilizar cuando se crean redirecciones. Si no se define el nombre de servidor, intentará deducirlo a través de su dirección IP. ServerName www.iesrioja.red

DirectoryIndex Mediante este parámetro, indicamos a Apache qué fichero debe buscar, por defecto, en caso de que no se especifique ninguno. Este fichero, de forma predeterminada es index.html, es decir, si desde el navegador tratamos de acceder a www.iesrioja.red el servidor por defecto servirá www.iesrioja.red/index.html. Podemos indicarle más de un fichero a buscar. El orden con el que se especifica el nombre del fichero determinara la prioridad a la hora de decidir que fichero es el que se muestra. DirectoryIndex index.html index.php inicio.html ....

Esta directiva forma parte de un módulo de apache (dir.c) y por eso su configuración en Ubuntu está fuera de apache2, en el fichero mods-available/dir.conf

User / Group User establece el identificador de usuario (userid) que utiliza el servidor para ejecutarse y responder a las peticiones. El valor de User determina el tipo de acceso que tendrá el servidor web a los archivos y directorios en los que se encuentran las páginas. Si User no puede acceder a un archivo tampoco podrá hacerlo el servidor web y, por tanto, también inaccesible al cliente web. Por defecto: User www-data

El proceso Apache2 padre se inicia como root y a continuación pasa al usuario wwwdata. El servidor debe arrancar como root porque necesita un puerto por debajo de 1024 (por defecto 80) y los puertos por debajo de 1024 están reservados para el sistema y sólo pueden ser utilizados por el root. Una vez que el servidor se ha conectado al puerto, pasa el proceso a User antes de aceptar peticiones. Group establece el identificador de grupo que utiliza el servidor para ejecutarse y responder a las peticiones. Por defecto:

José María Moreno Moya

APACHE2.0

13

Group www-data

Include Permite que se incluyan otros archivos de configuración en tiempo de ejecución. Los paths o rutas dadas de los archivos pueden ser absolutos o relativos respecto al valor de la directiva ServerRoot. Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf

Alias Permite colocar contenido web en un directorio fuera del directorio DocumentRoot. Alias indica la URL del contenido web especifica la posición del recurso en el sistema de archivos Ejemplo: Alias /icons/

"/usr/share/apache2/icons/"

Indica que, si esta directiva está incluida en el archivo apache2.conf, cuando se escriba /icons/ en el navegador (http://localhost/icons/) se accederán a los recursos del sistema ubicados en el directorio /usr/share/apache2/icons/.

Listen La directiva Listen indica al servidor que acepte peticiones entrantes solamente en los puertos y en las combinaciones de puertos y direcciones IP que se especifiquen. Si sólo se especifica un número de puerto en la directiva Listen el servidor escuchará en ese puerto, a través de todas las interfaces de red de la máquina. Si se especifica una dirección IP y un puerto, el servidor escuchará solamente en la interfaz de red a la que pertenezca esa dirección IP y solamente en el puerto indicado. Se pueden usar varias directivas Listen para especificar varias direcciones IP y puertos de escucha. El servidor responderá a las peticiones de todas las direcciones y puertos que se incluyan. Por ejemplo, para hacer que el servidor acepte conexiones tanto en el puerto 80 como en el puerto 8000, se puede usar: Listen 80

José María Moreno Moya

APACHE2.0

14

Listen 8000

Para hacer que el servidor acepte conexiones en dos interfaces de red y puertos específicos, usar Listen Listen

192.168.1.1:80 192.168.1.5:8000

Esta directiva se encuentra en el fichero ports.conf

Directivas de Optimización PidFile Indica el fichero en el que el servidor graba el identificador de proceso (PID). PidFile /var/run/apache2.pid

Timeout El tiempo que el servidor web esperará para recibir y enviar peticiones durante la comunicación. Expresado en segundos. Timeout 300

KeepAlive Activa o desactiva {On | Off} las conexiones persistentes. KeepAlive On

MaxKeepAliveRequests Establece el número máximo de peticiones permitidas por cada conexión. El valor 0 indica un número ilimitado. MaxKeepAliveRequests 100

José María Moreno Moya

APACHE2.0

15

KeepAliveTimeout Indica el número de segundos que el servidor esperará la siguiente petición desde la misma conexión. Pasado este tiempo se considerará que se ha terminado y cerrará la conexión. Si se establece un valor muy grande se estarán utilizando muchos recursos de la máquina. Por defecto: KeepAliveTimeout 15

Directivas de Secciones Sección Directory La sección