Apache 2.0

44
Manual de APACHE 2.0

Transcript of Apache 2.0

Page 1: Apache 2.0

Manual de APACHE 2.0

08/10/2012

2º DAW Despliegue aplicaciones informaticas

José María Moreno Moya

Page 2: Apache 2.0

José María Moreno Moya APACHE2.0 2

INDICE

INTRODUCCIÓN_________________________________________________________2

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

Page 3: Apache 2.0

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.

Page 4: Apache 2.0

José María Moreno Moya APACHE2.0 4

Navegación Web

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 recurs4. 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).

Page 5: Apache 2.0

José María Moreno Moya APACHE2.0 5

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.

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.

Page 6: Apache 2.0

José María Moreno Moya APACHE2.0 6

Servidor Web Apache

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.

Page 7: Apache 2.0

José María Moreno Moya APACHE2.0 7

INSTALACIÓN DE APACHEVamos 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

Page 8: Apache 2.0

José María Moreno Moya APACHE2.0 8

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

Page 9: Apache 2.0

José María Moreno Moya APACHE2.0 9

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.confServerName www.iesrioja.red// Añadir en /etc/hosts127.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

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:

Page 10: Apache 2.0

José María Moreno Moya APACHE2.0 10

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

Page 11: Apache 2.0

José María Moreno Moya APACHE2.0 11

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

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 del

funcionamiento de apache.

Page 12: Apache 2.0

José María Moreno Moya APACHE2.0 12

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.

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

Page 13: Apache 2.0

José María Moreno Moya APACHE2.0 13

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 www-data. 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:

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 <url-path> <recurso>

<url-path> indica la URL del contenido web

<recurso> especifica la posición del recurso en el sistema de archivos Ejemplo:

Alias /icons/  "/usr/share/apache2/icons/"

Page 14: Apache 2.0

José María Moreno Moya APACHE2.0 14

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 Listen 8000

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

Listen 192.168.1.1:80 Listen 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

Page 15: Apache 2.0

José María Moreno Moya APACHE2.0 15

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

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 <Directory /ruta / </Directory> engloba una o más directivas de configuración que sólo se aplican al directorio y subdirectorios especificados.

El argumento /ruta puede ser un nombre de directorio (ruta absoluta) o una expresión regular

<Directory "/usr/share/apache2/icons">

Page 16: Apache 2.0

José María Moreno Moya APACHE2.0 16

Options Indexes MultiViews AllowOverride None

Order Allow,DenyAllow from all

</Directory>

Dentro de <Directory> se usan las siguientes diretivas:

Options: [+|-] opcion:

Controla que características están disponibles para un directorio en particular. La opción se puede definir a None, de forma que ninguna característica extra se habilita o a All de forma que todas se habilitan menos MultiViews.

Otras características extra son: ExecCGI , FollowSymLinks, Includes, IncludesNOEXEC, Indexes, MultiViews, SymLinksIfOwnerMatch.

La opción más interesante puede ser Indexes: que si está activa indica que se mostrará el contenido del directorio.

Options Includes FollowSymLinks -Indexes

Indica que el directorio en cuestión tiene activados FollowSymLinks e Includes, pero no estará activa Indexes.

AllowOverride

Permite especificar qué partes del servidor pueden ser establecidas en los archivos .htaccess.

Con None Los archivos .htaccess son totalmente ignorados.

Con All, se permite todo tipo de configuración dede los archivos .htaccess

La configuración del archivo .htaccess sobreescribe la configuración dada en el sitio correspondiente y sólo para el directorio en el que se especifica

Order

Especifica el orden en que van a procesarse las directivas deny y allow.

Allow, especifica qué hosts pueden acceder a un directorio determinado. Puede contener 'All' (permite a todos), un nombre de dominio, una dirección IP, una red con su máscara de red, etc.

Deny, especifica qué hosts no pueden acceder a un directorio determinado.

Page 17: Apache 2.0

José María Moreno Moya APACHE2.0 17

Sección Files

Las directivas de una sección Files sirven para limitar el acceso a ciertos ficheros o directorios.

En el ejemplo siguiente las directivas de configuración, cuando se colocan en la sección principal del archivo de configuración, deniegan el acceso a cualquier archivo llamado privado.html sin tener en cuenta donde se encuentre.

<Files "privado.html"> Order Allow,Deny

Deny from all </Files>

El argumento de <Files> puede ser un nombre de archivo, o una expresión regular. Por ejemplo, para indicar que el argumento es cualquier archivo con formato gif, jpg, jpeg o png utilizaríamos la siguiente expresión regular: (Indicando con ~ que se trata de una expresión regular)

<Files ~ "\.(gif|jpe?g|png)$"> Order Allow,Deny

Deny from all </Files>

Sección IfModule

La sección IfModule engloba directivas que se procesarán si el módulo dado como argumento se compila con Apache2.

Una de las directivas permitidas en IfModule es UserDir.

<IfModule mod_userdir.c> Userdir directorio </IfModule>

Userdir, define el nombre del directorio que será añadido al directorio HOME del usuario si se recibe una petición ~usuario.

HOSTS VIRTUALES

Introducción

Page 18: Apache 2.0

José María Moreno Moya APACHE2.0 18

Configurando Hosts Virtuales podemos alojar varios sitios web en el mismo servidor, siendo uno totalmente independiente del otro.

Con host virtuales, cuando una petición entra en el servidor Apache2 desde un navegador web a través de una IP dada, Apache2 comprueba el nombre de dominio que se está solicitando, la dirección IP y el puerto, y muestra el contenido asociado a dicho nombre de dominio.

Actualmente, el sitio por defecto que viene configurado en apache, es un virtual host mas.

Apache soporta varios tipos de hosts virtuales:

1. Hosts virtuales basados en nombres: permiten alojar varios nombres de host (o dominios) en una misma máquina (IP). Todos los hosts virtuales que comparten la misma IP deben declararse mediante la directiva NameVirtualHost.

2. Hosts virtuales basados en puerto: una máquina responde de diferente manera si se accede a un puerto u otro..

3. Hosts virtuales basados en IP: una máquina responde de diferente manera si la petición llega a diferente dirección Ip. Es decir, tenemos múltiples IPs asignadas al sistema y queremos que cada una de ellas soporte un sitio web.

Hay que tener en cuenta que:

1. El host virtual heredará los parámetros de la configuración global, que no se cambien para él de forma explícita.

2. Para la definición de hosts virtuales se utiliza la sección <VirtualHost> y en ella se incluyen las directivas que se aplican a un determinado host virtual. Como mínimo debe incluir la directiva DocumentRoot y ServerName.

Directivas comunes al configurar Host Virtuales:

DocumentRoot: Directorio donde Apache2 va a buscar los documentos el servidor virtual.

NameVirtualHost: Define la dirección IP y el puerto donde van a existir host virtuales basados en nombre

ServerName: Define el nombre del servidor virtual . VirtualHost: Define una sección para un host virtual con las directivas aplicables a

él.

Pasos para crear un nuevo host

1. Crear una nueva carpeta (normalmente dentro de /var/www/), y copiar allí dentro las páginas web. mkdir /var/www/nombresitio

2. Crear un nuevo archivo de configuración en el directorio sites-avaliable. Lo más cómodo es copiar el que viene por defecto. cp /etc/apache2/sites-available/default /etc/apache2/sitesavailable/nombresitio

3. Configurar en el nuevo fichero las opciones necesarias. Lo más importante que DocumentRoot apunte al directorio creado.

Page 19: Apache 2.0

José María Moreno Moya APACHE2.0 19

4. Activar este nuevo sitio con el comando: a2ensite nombresitio. Si luego lo queremos desactivar a2dissite nombresitio

Hosts Virtuales basados en nombre

Supongamos que queremos alojar dos sitios web www.iesrioja.red y www.aparioja.red en la misma máquina, respondiendo ambos a una sola IP y con una sola instancia de Apache2 configurada en el puerto 80.

Usando hosts virtuales podemos conseguir que, en el caso de que sea invocado www.iesrioja.red, Apache2 le responda con una página web alojada en un directorio y en el caso que sea convocado como www.aparioja.red, vaya a leer los archivos a otro directorio. Es decir, habrá un directorio (DocumentRoot) para cada uno de los servidores virtuales que definamos.

Es necesario incluir la directiva NameVirtualHost que indica que dirección IP y puerto va a proporcionar el servicio a los hosts virtuales. Si no queremos especificar una en concreto podemos usar * para que funcione en todas las direcciones IP del servidor.

NameVirtualHost *:80

En las últimas configuraciones por defecto de apache2, esta directiva ya viene en el archivo ports.conf. Observar el archivo y si no está la directiva añadirla.

¿Cómo sabe Apache2 si una petición va dirigida a uno u otro host virtual?

La respuesta está en las cabeceras del HTTP/1.1. Cuando un navegador envía una petición al servidor usando el protocolo HTTP/1.1 envía una cabecera del tipo host: nombre_de_un_host con la que Apache2 puede diferenciar las peticiones de los distintos hosts virtuales.

Ahora ncecesitamos crear la directiva <VirtualHost> para cada host diferente que se quiera alojar en el servidor, los parámetros de configuración (Ip:Puerto) de VirtualHost tienen que coincidir con los de NameVirtualHost.

<VirtualHost *:80 >

Dentro de cada bloque <VirtualHost>, necesitará como mínimo una directiva ServerName para indicar qué host se sirve y una directiva DocumentRoot para indicar dónde están los contenidos a servir dentro del sistema de archivos.

El servidor web existente (host virtual por defecto) dispone de su configuración como host virtual en el archivo /etc/apache2/sites-available/default.

Supongamos que ya se está sirviendo el dominio www.iesrioja.red y se quiere añadir el host virtual www.aparioja.red, que apunta a la misma dirección IP.

Crear un nuevo sitio virtual con esta configuración y activarlo.

Page 20: Apache 2.0

José María Moreno Moya APACHE2.0 20

<VirtualHost *:80 > ServerName   www.aparioja.redDocumentRoot /var/www/aparioja<Directory /var/www/aparioja>

Options FollowSymLinks AllowOverride None </Directory>

</VirtualHost>

No olvidar que si no tenemos DNS hay que ditar el archivo /etc/hosts y añadir la línea:

127.0.0.1 localhost www.iesrioja.red www.aparioja.red

Al poner NameVirtualHost *:80 se le está diciendo a Apache2 que se activan los hosts virtuales basados en nombre para en esa ip y puerto. Las directivas <VirtualHost *:80>...</VirtualHost> definen los hosts virtuales de nuestro servidor. En cada uno de estos bloques, se le indica a Apache2 el DocumentRoot del host y el ServerName con el que deben responder.

En caso de acceder de otra manera al servidor habrá un virtual host que actúe por defecto, normalmente el primero que esté especificado. Si queremos configurar un virtual host 'oficial' o por defecto se puede hacer definiéndolo de la siguiente manera: <VirtualHost _default_:80>

Hosts Virtuales basados en Puerto

Si queremos que apache funcione en dos puerto diferentes y que responda diferente según el puerto crearemos dos VirtualHost cada uno con su configuración de la manera siguiente.

<VirtualHost *:80 >       ServerName www.iesrioja.red      DocumentRoot /var/www/iesrioja </VirtualHost>

<VirtualHost *:8080 >       ServerName www.aparioja.red      DocumentRoot /var/www/aparioja </VirtualHost>

Además es indispensable, añadir en el fichero ports.conf el nuevo puerto con:

Listen 8080

Hosts Virtuales basados en IP

Page 21: Apache 2.0

José María Moreno Moya APACHE2.0 21

La técnica de hosts virtuales basada en direcciones IP requiere que el computador que alberga los dos hosts tenga dos direcciones IP diferentes (dos interfaces de red). En este caso cada sección VirtualHost hace referencia a cada una de las direcciones.

<VirtualHost 192.168.1.1>       ServerName www.iesrioja.red      DocumentRoot /var/www/iesrioja </VirtualHost>

<VirtualHost 192.168.1.2>       ServerName www.aparioja.red      DocumentRoot /var/www/aparioja </VirtualHost>

SSL EN APACHE

Introducción

Una página web segura o un sitio web seguro es un sitio web que utiliza el protocolo https en lugar de utilizar el protocolo http.

El protocolo https es idéntico al protocolo http, pero añadiendo el protocolo SSL (Secure Socket Layer) que permite establecer de forma sencilla, conexiones seguras cifrando la información trasmitida entre cliente y servidor.

Los algoritmos de cifrado utilizados reúnen las características necesarias para garantizar que la información que sale desde el servidor hacia el cliente, esté cifrada y solamente pueda ser descifrada por el cliente y que la información que sale desde el cliente hacia el servidor, esté cifrada y solamente pueda ser descifrada por el servidor.

Para comprender mejor esta parte hay que conocer algunos términos de criptografía, como clave pública y privada, certificados digitales y Autoridades de Certificación. Puedes aprender sobre ello en el siguiente Anexo de Criptografía

Requisitos previos

Para que apache2 funcione con SSL, necesita dos cosas.

Por un lado un módulo llamado ssl, que viene con la instalación pero que habrá que activarlo.

Por otro lado necesitaremos generar nuestras claves (privada y pública) y el certificado (que en este caso nos lo firmaremos nosotros mismos), para ello

Page 22: Apache 2.0

José María Moreno Moya APACHE2.0 22

necesitamos tener instalado el paquete openssl en nuestra distribución. Podemos comprobar si está instalado con dpkg -l | grep opensll, y si no está lo instalamos con aptitude install openssl.

Generar el certificado

Para que nuestro servidor pueda servir páginas seguras con el protocolo https, necesita un certificado. Dicho certificado permitirá que nuestro servidor utilizar cifrado asimétrico para intercambiar las claves de cifrado con los clientes, antes de iniciar una trasmisión segura de información.

Inicialmente, el cliente deberá aceptar el certificado del servidor, ya que generaremos un certificado autofirmado. Si queremos evitarlo, deberíamos contratar un certificado a una entidad certificadora confiable, pero tiene un coste que no merece la pena soportar en un entorno educativo.

Para generar nuestro certificado autofirmado, ejecutaremos los siguientes comandos (antes existía un script llamado apache2-ssl-certificate, ahora hay que usar directamente las funciones de openssl):.

Lo primero que vamos a hacer es crear una carpeta ssl en /etc/apache2 para situar allí todos los archivos que generamos y desde allí ejecutamos los siguientes comandos (necesitaremos permisos de root puesto que estamos escribiendo en una carpeta del sistema): sudo mkdir /etc/apache2/ssl

// Generar una clave privada $ sudo openssl genrsa -out iesrioja.key 1024// Generar el certificado $ sudo openssl req -new -key iesrioja.key -out iesrioja.csr

Tendremos que responder a algunas preguntas sobre nuestra ubicación geográfica, nombre de nuestra organización,..., respondemos como queremos, a la última opción de password la dejamos en blanco si no queremos que nos la pida cada vez que lo usemos.

// Generar certificado autofirmado $ sudo openssl x509 -req -days 360 -in iesrioja.csr -signkey iesrioja.key -out iesrioja.crt

De esta manera tendríamos tres ficheros: iesrioja.key con la clave privada, iesrioja.csr con un certificado sin firmar y iesrioja.crt con el certificado firmado por nosotros mismos. Estas extensiones se ponen por diferenciar, aunque su formato de guardado es el formato pem. También podemos generar la clave y el certificado autofirmado (que es lo que se usa) de un solo comando:

// Generar clave privada y certificado autofirmado directamente$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout clave.pem -out certi.pem

Page 23: Apache 2.0

José María Moreno Moya APACHE2.0 23

El siguiente paso será configurar un servidor virtual para que utilice dicho certificado.

Crear servidor virtual seguro en apache2

Hemos visto como crear hosts virtuales basados en puerto, básicamente esto es lo que hay que hacer usando el puerto 443 y configurando algunas directivas de seguridad en este virtual host. Además, en la instalación de apache viene un site llamado default-ssl (en sites-availabes) preconfigurado ya con todo lo básico para activarlo rápidamente (si queremos activarlo para una carpeta distinta de /var/www, hay que crear la carpeta e intruducir la web allí). Así pues, editamos ese fichero y nos aseguramos que está la siguiente configuración, que es la que caracteriza a un sitio seguro.

<VirtualHost _default_:443> DocumentRoot /var/wwwSSLEngine On

SSLCertificateFile /etc/apache2/ssl/iesrioja.crtSSLCertificateKeyFile /etc/apache2/ssl/iesrioja.key

<Directory "/var/www"> Options Indexes FollowSymlinks MultiViews AllowOverride None Order allow,deny Allow from all</Directory>

</VirtualHost>

Estas son las directivas esenciales para que funcione mediante certificado, pero hay otras muchas directivas.

Por ejemplo si queremos que un directorio sólo funcione con SSL hay que poner dentro de Directory la directiva SSLRequireSSL. Otra opción puede ser pedir un certificado al cliente con SSLVerifyClient require.

El protocolo https utiliza el puerto 443, por lo tanto, tendremos habilitar dicho puerto para que apache lo utilice:

// Añadir en /etc/apache2/ports.conf (Está configurado para funcionar si está activado el modulo ssl)Listen 443

Posteriormente debemos habilitar el módulo ssl del servidor apache:

// Habilitar el módulo ssl $ sudo a2enmod ssl

Habilitamos el sitio ssl:

Page 24: Apache 2.0

José María Moreno Moya APACHE2.0 24

// Habilitar el sitio que hemos modificado o creado $ sudo a2ensite default-ssl

Finalmente reiniciamos el servidor apache:

// Reinicio de apache

$ sudo /etc/init.d/apache2 restart

Probando el acceso a la página web segura

Para acceder a las páginas seguras de nuestro servidor web, tecleamos desde el navegador 'https://www.iesrioja.red'. Lo primero que se muestra es la alerta de seguridad que nos indica que el certificado no está emitido por una CA en la que confiamos:

Si pulsamos sobre Entiendo los riesgos, y luego sobre Añadir excepción, el botón 'Examinar certificado', nos aparecerá una pantalla donde podemos obtener el certificado y verlo. Veremos la información tanto del certificado como de la entidad certificadora que lo firma:

Page 25: Apache 2.0

José María Moreno Moya APACHE2.0 25

Si aceptamos el certificado significa que, a pesar de estar firmado por una entidad certificadora que no es de confianza para el navegador (lo hemos firmado nosotros mismos), lo aceptamos. Tendremos que indicar al navegador si aceptamos el certificado para siempre o solo para ahora.

 

Ahora ya tenemos acceso a la web segura mediante el protocolo https lo que nos garantiza que la información de la página antes de salir del servidor, ha sido cifrada y por tanto la trasferencia de datos desde el servidor a nuestro navegador se ha producido de forma segura. Al llegar a nuestro navegador, se han descifrado los datos. Los navegadores indican que es segura de diferentes formas, con candado, con colores,...

Page 26: Apache 2.0

José María Moreno Moya APACHE2.0 26

OTRAS OPCIONES DE APACHEApache permite una variedad enorme de opciones y configuraciones. Hemos visto algunas de ellas, ahora veremos otras que también se usan bastante.

Control de Acceso

Es posible permitir el acceso a los usuarios en función de la máquina desde la que hacen las solicitudes de información.

Para ello se utilizan las directivas Allow y Deny que permiten y rechazan, respectivamente, el acceso en función del nombre o la dirección de la máquina desde la que se hace la solicitud de información.

Estas directivas van normalmente dentro de la sección <Directory>, en la sección <Files> o en los archivos .htaccess

Allow from 88.20.10.1

Denegar el acceso desde la red 192.168.100.0

Deny from 192.168.100  ó  Deny from 192.168.100.0/24

Denegar el acceso desde el pc1 del dominio iesrioja.red

Deny from pc1.iesrioja.red

Para una correcta configuración, hay que prestar especial atención a la directiva Order, que indica en qué orden se aplican estas directivas.

Por defecto, Order tiene valor Deny,Allow. Todo cliente que no se concrete en las directivas (Allow y Deny) será permitido.

Si Order se pone en Allow,Deny. Todo cliente que no se concrete en las directivas (Allow y Deny) será denegado.

Todos los host del dominio iesmalo.red se permiten, todos los demás denegados

Order Deny,Allow Deny from allAllow from iesmalo.red

Page 27: Apache 2.0

José María Moreno Moya APACHE2.0 27

Todos los host de la red 10.0.0.0 se permiten excepto las ip 10.0.0.3 y a la ip 10.0.0.5 que se deniegan.

Todos los host de las demás IP son denegados por defecto puesto que Order está en Allow,Deny

Order Allow,DenyAllow from 10.0.0.0/8Deny from 10.0.0.3 10.0.0.5

Autenticación

La autentificación se basa en el principio de que el cliente envia su nombre y su password al servidor, un modulo de Apache chequea si las credenciales son correctas, y si lo son devuelve la página solicitada. Si el usuario no tiene permitido el acceso o el password no es válido, el servidor Apache devuelve un código de estado 401 (Acceso no autorizado).

Para utilizar los mecanismos proporcionados por Apache para el proceso de autenticación deben esta activado el módulo correspondiente al método que se vaya a utilizar. Para autenticación básica: $ sudo a2enmod  auth_basic. Otros métodos son digest o mysql.

Para configurar la autenticación habrá que añadir una sección <Directory>...</Directory> por cada directorio que se quiera proteger:

<Directory "/var/www/privado"> AuthType Basic AuthName "Este directorio es privado, introduce tus datos" AuthUserFile /etc/apache2/.htpasswd Require valid-user

</Directory>

AuthType

Indica cuál es el tipo de autenticación que va a utilizar. Puede ser Basic (transferencia sin cifrar) o Digest (cifrada).

AuthType Basic

AuthName

Especifica un nombre del dominio para el cual se solicita el acceso, este nombre figurará en la pantalla donde se pide la clave, y a su vez servirá para que el cliente

Page 28: Apache 2.0

José María Moreno Moya APACHE2.0 28

identifique la contraseña que debe utilizar al enviar una petición a un área determinada.

AuthName "Este directorio es privado, introduce tus datos"

AuthUserFile

Ubicación del archivo que contendrá los nombres de usuario y contraseñas usadas en la autenticación HTTP básica. Se suele llamar .htpasswd.

AuthUserFile /etc/apache2/.htpasswd

Require

Selecciona qué usuarios autenticados pueden acceder a un recurso

Sólo el usuario juan puede acceder al recurso

Require user juan

Sólo los usuarios del grupo oficina puede acceder al recurso

Require group oficina

Cualquier usuario dado de alta en el sistema puede acceder

Require valid-user

Crear fichero de usuarios para autenticar

Para poder usar la autenticación de usuarios, hay que tener crear un fichero con los usuarios y sus contraseñas. Elegimos un nombre y una ruta (que deberá coincidir con la directiva AuthUserFile y lo creamos.

Se puede hacer con un comando que tiene apache para ello:

// Crear el fichero y añadir el primer usuario. Pedirá la contraseña.$ sudo htpaswd -c /etc/apache2/.htpasswd usuario1// Añadir usuarios al fichero. Pedirá la contraseña.$ sudo htpaswd /etc/apache2/.htpasswd juan

También se puede hacer con algún editor: sudo vim /etc/apache2/.htpasswd

Page 29: Apache 2.0

José María Moreno Moya APACHE2.0 29

Dentro del fichero escribiremos los usuarios y contraseñas siguiendo este formato:

usuario1:contraseñajuan:1234perico:perico#57

IMPORTANTE ¡¡ En las últimas versiones de apache se requiere que estas contraseñas estén cifradas para que funcione, se pueden conseguir las contrseñas cifradas en varios sitios como en http://home.flash.net/cgi-bin/pw.pl   o en http://www.htaccesstools.com/htpasswd-generator/

Quedando el fichero:

usuario1:/g42H/M0YGX2.juan:qvApimGRgQOyoperico:cKH2sP2WY6XIE

Si se quiere trabajar con grupos, se podría hacer con la directiva AuthGroupFile y un fichero /etc/apache2/.htgroup con la sintaxis

grupo1: usuario1 usuario2amigos: juan perico

Redirecciones

Se puede configurar un directorio para que él y su contenido sean redirigidos de modo transparente hacia cualquier otra dirección. Para ello se utiliza la directiva Redirect:

Redirect 301 /blog   http://miblog.wordpress.com/

En el ejemplo se indica que si un usuario trata de acceder al subdirectorio /blog en el servidor, Apache2 le deberá redirigir hacia http://miblog.wordpress.com/. El número 301 corresponde al mensaje del protocolo HTTP para indicar que la redirección es permanente.

Archivos .htaccess

Apache, además de la configuración por medio del fichero apache2.conf (y los incluidos en este), se puede configurar de otra manera, por medio de ficheros .htacces, estos ficheros los puede generar cualquier usuario en un directorio de los que son mostrados por apache. Gracias a esto no hay que dar acceso a la configuración general (por defecto sólo puede configurar el root) y cualquier usuario que pueda escribir en el directorio se podrá configurar su fichero .htacces.

Page 30: Apache 2.0

José María Moreno Moya APACHE2.0 30

Hay que tener en cuenta que para permitir la opción de estos ficheros, es necesario el permiso por parte del administrador por medio de la directivaAllowOverride que con All permite reescribir todo tipo de configuración con .htaccess, con none ninguna y con otras directivas se especifica que podrá incluir estos ficheros.

Estos ficheros son muy usados en los hosting virtuales que alquilamos en Internet, no tenemos acceso al servidor Apache, pero si tenemos acceso por ftp a sus carpetas, así que podemos configurar ciertas cosas.

.htaccess es un archivo de texto (oculto en los sistemas linux) que contiene una serie de directivas para el servidor Apache. Cuando un cliente solicita un archivo al servidor, este busca (desde el directorio raíz hasta el subdirectorio que contiene el archivo solicitado) el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la petición, es decir, se aplican las normas especificadas al directorio en el que se encuentre .htaccess y los directorios por debajo de él.

Se puede configurar gran cantidad de cosas, y el lenguaje, las directivas son las mismas que hemos aprendido.

Sólo hay que crear un fichero .htaccess, con las directivas elegidas dentro y copiarlo al directorio a configurar.

Proteger con usuario y contraseña

AuthType Basic AuthName "Este directorio es privado, introduce tus datos" AuthUserFile .htpasswd Require valid-user

Redireccionar el tráfico web

Redirect /index.html http://www.servernuevo.red/index.html

Denegar el acceso a una dirección IP

Order deny,allow Deny from 192.168.0.17Allow from all

Impedir el listado del contenido de un directorio

Options -Indexes

Page 31: Apache 2.0

José María Moreno Moya APACHE2.0 31

No mostrar www

Options +FollowSymlinksRewriteEngine onRewriteCond %{http_host} ^www\.iesrioja\.red[nc]RewriteRule ^(.*)$ http://iesrioja.red/$1 [r=301,nc]

LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMINPara poder aprovechar al máximo las características del servidor web apache, es muy conveniente que pueda ejecutar scripts en servidor y pueda acceder a bases de datos.

Las aplicaciones web más interesantes como los gestores de contenidos para crear y mantener sitios web dinámicos, wikis, blogs, foros-web, repositorios de arhivos, etc... requieren de lenguaje script en servidor y sistema gestor de bases de datos.

En el desarrollo web del mundo Linux el lenguaje script en servidor más utilizado es el lenguaje php y el sistema gestor de bases de datos más utilizado es mysql. Phpmyadmin es una excelente herramienta para administrar bases de datos mysql.

PHP

Introducción

PHP es un lenguaje de programación interpretado, de alto nivel, ejecutado en el servidor y usado frecuentemente para la creación de contenido para webs dinámicas. Su código está embebido en el código HTML y al ser ejecutado en el servidor PHP nunca es enviado al cliente. El servidor es quien procesa la petición del cliente ejecutando el código PHP y devolviendo el HTML generado.

Instalación de PHP

Para instalar PHP en nuestro servidor la haremos desde los repositorios. El paquete a instalar depende de la versión que deseemos instalar. La última versión de php a fecha de hoy es la 5.

// Instalación de php5 para apache 2# $ sudo aptitude install php5

Page 32: Apache 2.0

José María Moreno Moya APACHE2.0 32

IMPORTANTE ¡¡¡ Si todo va bien, al instalar php5 también se instalará el paquete libapache2-mod-php5, que es el encargado de "introducir" el soporte php5 dentro de apache.

Si al poner el comando nos da algún tipo de aviso, podemos usar el comando

  sudo aptitude install libapache2-mod-php5 .

El problema es que apache está instalado con el modelo multiproceso $apache2-mpm-worker y al instalar php5 tiene que desinstalar este modelo y usar $apache2-mpm-prefork. Aunque aptitude de algún aviso de peligro, no pasa nada Apache funciona con los dos perfectamente y sólo cambia algo el rendimiento, cosa que para nuestros ejemplos no tienen importancia.

Además, automáticamente se configura creando los archivos necesarios en la carpeta de módulos disponibles de apache (/etc/apache2/mods-available), los enlaces necesarios para habilitarlos en la carpeta de módulos habilitados de apache (/etc/apache2/mods-enabled) y el fichero de configuración en /etc/php5/apache2/php.ini.

Una muy buena forma de saber si tenemos soporte php y además cómo está configurando es haciendo lo siguiente: Creemos un nuevo archivo de la siguiente manera vim /var/www/info.php, y escribimos las siguiente línea.<?php phpinfo(); ?> . Ahora podemos ir a nuestra página webhttp://localhost/info.php y allí nos tendría que salir información sobre la configuración de php.

Configuración de PHP

El archivo de configuración de php5 es el archivo /etc/php5/apache2/php.ini, dos parámetros destacables a configurar son:

Safe Mode = Off (Modo Seguro. Si el Modo seguro está activado, se deshabilitan todas las funciones del php consideradas peligrosas. Para servicios de hosting se recomienda activar el modo seguro.)

Display errors = On (Mostrar Errores. Muestra los errores en las mismas páginas, cuando les haya.

MySQL

Introducción

MySQL es un SGBDR (Sistema Gestor de Bases de Datos Relacional) muy completo y muy utilizado hoy en día sobre todo en los hosting en Internet.

MySQL se ofrece con licencia GNU GPL y es multiplataforma.

Page 33: Apache 2.0

José María Moreno Moya APACHE2.0 33

Si disponemos de un servidor web con soporte php y base de datos mysql, tendremos la arquitectura ideal para crear un portal dinámico utilizando gestores de contenidos como Joomla, drupal o Typo3, así como aplicaciones web orientadas al trabajo colaborativo y al desarrollo rápido de contenidos como Wikis y Blogs.

Instalación de mysql

Para la instalación del servidor y el cliente de mysql en su última versión, basta con instalar el metamaquete mysql-server, el cual instala la última versión disponible de mysql.

Durante la instalación nos pedirá que elijamos la contraseña del usuario root para la base de datos, es decir el usuario que podrá manejar toda la configuración de la base de datos.

// Instalación de mysql $ sudo aptitude install mysql-server

Arranque y parada del SGBD mysql

MySQL es un servicio más, al igual que apache, y como tal está escuchando en un puerto (normalmente 3306) a futuras conexiones. El servidor de datos mysql, al igual que todos los servicios en Debian, dispone de un script de arranque y parada en la carpeta /etc/init.d.

// Iniciar o reiniciar el servidor mysql $ sudo /etc/init.d/mysql restart// Parar el servidor mysql$ sudo /etc/init.d/mysql stop

Configuración del SGBD mysql

El archivo de configuración de mysql es el archivo: /etc/mysql/my.cnf

En dicho archivo se configuran aspectos generales como la contraseña, el puerto a utilizar y algún otro aspecto pero para hacer un uso normal de mysql, no es necesario realizar ninguna modificación del archivo original.

Además mysql se puede administra desde línea de comandos, bastaría con poner mysql -u root -p, introducir la password que hemos puesto en la instalación y tendríamos acceso a toda la base de datos, para crear usuarios, bases de datos, tablas....

phpMyAdmin

Page 34: Apache 2.0

José María Moreno Moya APACHE2.0 34

Introducción

phpMyAdmin es una herramienta escrita en PHP para llevar la administración de MySQL vía web. Permite crear y eliminar BBDD, crear, eliminar y modificar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves y privilegios, etc. Disponible bajo la licencia GPL.

Instalación de phpMyAdmin

PhpMyAdmin también está en los repositorios de Ubuntu, así que bastará con poner:

// Instalación de phpMyAdmin$ sudo aptitude install phpmyadmin

Entre otros paquetes, se instala uno muy importante, es el paquete php5-mysql , que es necesario para que cualquier aplicación escrita en php pueda acceder a una base de datos mysql. Si no queremos instalar phpMyAdmin, no hay que olvidar instalar este paquete.

La instalación necesitará la contraseña del usuario root de la base de datos para poder acceder a ella y crear las tablas necesarias.

Para poder manejar phpMyAdmin se necesita que el directorio donde se ha copiado, normalmente /usr/share/phpmyadmin sea un directorio que se muestre en Apache.

Lo que hace la instalación normalmente es añadir al sitio por defecto de apache, un alias de tal manera que al poner la URL http://ip-del-servidor-web/phpmyadmin/ se muestre el directorio de phpMyAdmin.

Si esta dirección no funciona habrá que configurar Apache para mostrar phpMyAdmin. En el fichero /etc/phpmyadmin/apache.conf está toda la configuración necesaria. Basta con copiar esta configuración a un sitio activo en apache, o crear uno nuevo con ella.

También se puede crear un simple enlace en el directorio de un sitio activo a la carpeta /usr/share/phpmyadmin. Por ejemplo: ln -s /usr/share/phpmyadmin /var/www/Al acceder nos pide un usuario y contraseña con privilegios para gestionar mysql. Al manejo es bastante sencillo.

El archivo de configuración de phpmyadmin es el archivo: /etc/phpmyadmin/config.inc.php, en él, están los parámetros que permitirán a phpmyadmin conectar con mysql como el host, puerto y autenticación.