Escolar Documentos
Profissional Documentos
Cultura Documentos
APACHE2.0
INDICE
INTRODUCCIN _______________________________________________________ 3 INSTALACIN DE APACHE _______________________________________________ 6 ESTRUCTURA DE APACHE _______________________________________________ 8 CONFIGURACIN DE APACHE ___________________________________________ 11 HOSTS VIRTUALES ____________________________________________________ 17 SSL EN APACHE _______________________________________________________ 20 OTRAS OPCIONES DE APACHE ___________________________________________ 25 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN _______________________ 30
APACHE2.0
INTRODUCCIN
Servidor Web
La wikipedia define el servidor web como un programa que implementa el protocolo HTTP (hypertext transfer protocol). Este protocolo est diseado para transferir lo que llamamos hipertextos, pginas web o pginas 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 peticin al equipo servidor, y ste atiende dicha solicitud. En el equipo cliente se ejecuta una aplicacin 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 comunicacin 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 contrasea para permitir el acceso slo a usuarios registrados y por tanto, con permiso para visualizar la pgina/s. El objetivo de un servidor web es servir o suministrar pginas 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 pgina web est enviando una solicitud al servidor web que aloja dicha pgina para que se la muestre (servir la pgina). El servidor web si la encuentra la enva y si no la encuentra devuelve al cliente un mensaje de error. El cliente cuando recibe la pgina web interpreta el cdigo HTML mostrando las fuentes, colores, imgenes que la componen, etc, de forma correcta. Pero el servidor web, adems de servir pginas web HTML estticas tambin permite la ejecucin de una serie scripts, en diferentes lenguajes de programacin, que proporcionan dinamismo a las pginas web. Estos lenguajes son PHP, CGI3, applets de Java4, etc.
Navegacin Web
APACHE2.0
Para que el navegador pueda llegar al servidor web (ya sea en una red local o en Internet) el servidor debe tener asignada una direccin IP (Internet Protocol) nica que identifica el equipo en la red. Cuando el navegador hace una peticin 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 direccin IP que corresponde al nombre. La solicitud del navegador entonces se encamina al servidor web correcto. La informacin 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 direccin 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 pginas web, y el protocolo de transferencia es el conjunto de normas mediante las que se envan 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 comunicacin entre el servidor y los clientes y la transferencia de informacin (archivos de texto, imgenes, archivos de msica, ...) entre ambos.
HTTP es un protocolo cliente/servidor cuyo funcionamiento est basado en el envo de mensajes y consiste en que: El usuario especifica en el cliente web (navegador) la direccin de la pgina que quiere consultar segn un formato http://direccin[:puerto][path]. El cliente web decodifica la informacin de la URL diferenciando el protocolo de acceso, IP o nombre de dominio del servidor, puerto,... El cliente web establece una conexin (socket) con el servidor web y solicita la pgina (mensaje request). El servidor enva dicha pgina (si no existe enva un cdigo de error) y el cliente web interpreta el cdigo HTML recibido. Mensaje response del servidor.
Se cierra la conexin.
APACHE2.0
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 conexin independiente. Ejemplo: si el cliente web solicita una pgina que incorpora varias imgenes se realizan las siguientes conexiones: una para el documento HTML y una por cada una de las imgenes. Para resolver estas situaciones de falta de memoria del protocolo, adems de recordar la informacin de la sesin actual (cuya informacin 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 informacin entre estos mismos puntos se tendr en cuenta la informacin almacenada en esos archivos. Por ejemplo, para un mensaje de peticin al servidor la primera lnea tiene la estructura:
GET /index.html HTTP/1.0
que debe interpretarse como una peticin (GET) del archivo index.html que est en el directorio raz compatible con la versin 1.0 del protocolo HTTP. Por ejemplo, para un mensaje de respuesta del servidor la primera lnea tiene la estructura:
HTTP/1.0 200 OK,
que debe interpretarse como la respuesta de peticin servida (cdigo 2001) con xito e indica la versin de HTTP utilizada (1.0). El texto OK est relacionado con el cdigo de error correspondiente. El protocolo que se usa ahora es HTTP v. 1.1 es ms potente y presenta entre otras novedades las conexiones persistentes.
APACHE2.0
El servidor web apache es una de las aplicaciones estrella del mundo Linux. Es el servidor web ms implantado entre los distintos servidores que ofertan servicios web en Internet. Apache es un servidor Web que surgi a partir del servidor de HTTP ms 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 cooperacin y los esfuerzos de un grupo de personas conocidas como grupo Apache (Apache Group), los cuales se comunican a travs de Internet y del Web. Juntos se dedican a perfeccionar el servidor y su documentacin regidos por la ASF (Apache Software Foundation). En la actualidad Apache es el servidor Web ms utilizado en el mundo de acuerdo con las estadsticas de http://news.netcraft.com que lo colocan en ms de 100 millones de servidores, lo cual significa ms del 45% en todo el mundo. Entre las caractersticas 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 travs de la definicin de mdulos empleando su propio API (Aplication Programming Interface). Puede crear servidores virtuales. stos pueden ser seguros. Software libre. Provee todo su cdigo 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 cdigo, que corresponden a la versin 2.0.xx y la versin 1.3.xx. La versin 1.3 corresponde a la edicin clsica de Apache, especialmente optimizada para las plataformas Unix. La versin 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 cdigo y un conjunto de ficheros ``parches''. Otros desarrolladores relacionan su nombre con el de las tribus nativas americanas de Apaches.
INSTALACIN DE APACHE
APACHE2.0
Vamos a realizar una instalacin de apache en un distribucin Ubuntu. Gracias al sistema de paquetes de Ubuntu (basado en Debian), la instalacin de nuevas aplicaiones es muy sencilla. Basta con usar el comandoaptitude install y a continuacin el nombre del paquete a instalar. Instalaremos apache2. Hay que recodar que en linux slo el administrador del sistema, root, puede instalar aplicaiones, as que necesitaremos permisos para hacerlo. Se podra instalar desde una consola de root, o, siguiendo la filosofa de ubuntu desde una consola norma aadiendo el comando sudo y escribiendo la contrasea.
// Instalar Apache2 $ sudo aptitude install apache2
Por defecto, al instalarse el servicio se inicia cuando arranca el sistema, sin necesidad de iniciar sesin ningn 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 direccin IP asignada.
APACHE2.0
Si la direccin IP de nuestro servidor fuera 192.168.1.100, podemos ir con el navegador a la direccin http://192.168.1.100 y obtendremos el mismo resultado. Como vemos en la pantalla anterior, la instalacin de Apache se produjo de forma adecuada, as pues hemos completado este apartado satisfactoriamente.
www.iesrioja.red
De esta manera el servidor tendr un nombre de dominio cualificado, y adems desde el mismo ordenador se podr acceder con ese nombre. Para que se pudiese acceder desde otros ordenadores debera existir un servidor DNS donde introducir el nombre.
ESTRUCTURA DE APACHE
APACHE2.0
Archivos de configuracin
Apache se configura poniendo directivas en los ficheros de configuracin en texto simple. El fichero principal de configuracin suele llamarsehttpd.conf, o bien apache2.conf. En las distribuciones basadas en Debian apache2.conf es el que se usa. Adems, se pueden adicionar otros ficheros de configuracin usando la directiva Include. Cualquier directiva se puede colocar en cualquiera de estos ficheros de configuracin. Apache solo reconocer los cambios en los ficheros de configuracin durante el arranque o reinicio.
El directorio de configuracin por defecto es /etc/apache2. Dentro de este directorio tenemos la siguientes estructura:
Ficheros:
APACHE2.0
10
ports.conf: Fichero de configuracin de los puertos en los que escucha Apache. httpd.conf: Archivo vaco que no se usa en la distribucin Ubuntu.
Directorios:
conf.d: Son archivos de configuracin de los distintos mdulos instalados. Se llaman (cargan) desde el fichero apache2.conf. mods-available: Todos los mdulos que dispone Apache. mods-enabled: Los mdulos que estn activos en este momento. Contiene
enlaces simblicos a algunos mods-available sites-available: Sitios preparados para ponerlos en marcha cuando sea necesario. sites-enabled: Sitios activos en este momento. Contiene enlaces simblicos a sites-available
a2enmod: activa mdulos a2dismod: desactiva mdulos a2ensite: activa sitios a2dissite: desactiva sitios
Encontrar errores
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 cmo 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
CONFIGURACIN DE APACHE
Directivas de Configuracin
Las directivas de configuracin las podemos agrupar en 3 secciones.
DocumentRoot
Esta directiva le indica a Apache la carpeta raz que se ubica en el servidor, desde la que se servirn los documentos. Por defecto, todas las peticiones tendrn como raz esta carpeta, a no ser que se utilicen alias. Esta directiva est en la configuracin de un sitio o un Virtual Host.
APACHE2.0
12
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 travs de su direccin IP.
ServerName www.iesrioja.red
DirectoryIndex
Mediante este parmetro, 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 ms 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 mdulo de apache (dir.c) y por eso su configuracin 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 pginas. Si User no puede acceder a un archivo tampoco podr hacerlo el servidor web y, por tanto, tambin inaccesible al cliente web. Por defecto:
User www-data
El proceso Apache2 padre se inicia como root y a continuacin 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 estn reservados para el sistema y slo 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:
APACHE2.0
13
Include
Permite que se incluyan otros archivos de configuracin en tiempo de ejecucin. 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 posicin 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 accedern 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 slo se especifica un nmero de puerto en la directiva Listen el servidor escuchar en ese puerto, a travs de todas las interfaces de red de la mquina. Si se especifica una direccin IP y un puerto, el servidor escuchar solamente en la interfaz de red a la que pertenezca esa direccin 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
APACHE2.0
14
Para hacer que el servidor acepte conexiones en dos interfaces de red y puertos especficos, usar
Listen Listen 192.168.1.1:80 192.168.1.5:8000
Directivas de Optimizacin
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 comunicacin. Expresado en segundos.
Timeout 300
KeepAlive
Activa o desactiva {On | Off} las conexiones persistentes.
KeepAlive On
MaxKeepAliveRequests
Establece el nmero mximo de peticiones permitidas por cada conexin. El valor 0 indica un nmero ilimitado.
MaxKeepAliveRequests 100
APACHE2.0
15
KeepAliveTimeout
Indica el nmero de segundos que el servidor esperar la siguiente peticin desde la misma conexin. Pasado este tiempo se considerar que se ha terminado y cerrar la conexin. Si se establece un valor muy grande se estarn utilizando muchos recursos de la mquina. Por defecto:
KeepAliveTimeout 15
Directivas de Secciones
Seccin Directory
La seccin <Directory /ruta / </Directory> engloba una o ms directivas de configuracin que slo se aplican al directorio y subdirectorios especificados. El argumento /ruta puede ser un nombre de directorio (ruta absoluta) o una expresin regular
<Directory "/usr/share/apache2/icons"> Options Indexes MultiViews AllowOverride None Order Allow,Deny Allow from all </Directory>
La opcin ms 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 cuestin tiene activados FollowSymLinks e Includes, pero no estar activa Indexes.
APACHE2.0
16
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 configuracin dede los archivos .htaccess La configuracin del archivo .htaccess sobreescribe la configuracin dada en el sitio correspondiente y slo para el directorio en el que se especifica
Order
Especifica el orden en que van a procesarse las directivas deny y allow.
El argumento de <Files> puede ser un nombre de archivo, o una expresin regular. Por ejemplo, para indicar que el argumento es cualquier archivo con formato gif, jpg, jpeg o png utilizaramos la siguiente expresin regular: (Indicando con ~ que se trata de una expresin regular)
<Files ~ "\.(gif|jpe?g|png)$"> Order Allow,Deny Deny from all </Files>
APACHE2.0
17
Seccin IfModule
La seccin IfModule engloba directivas que se procesarn si el mdulo 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 aadido al directorio HOME del usuario si se recibe una peticin ~usuario.
HOSTS VIRTUALES
Introduccin
Configurando Hosts Virtuales podemos alojar varios sitios web en el mismo servidor, siendo uno totalmente independiente del otro. Con host virtuales, cuando una peticin entra en el servidor Apache2 desde un navegador web a travs de una IP dada, Apache2 comprueba el nombre de dominio que se est solicitando, la direccin 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 mquina (IP). Todos los hosts virtuales que comparten la misma IP deben declararse mediante la directiva NameVirtualHost. 2. Hosts virtuales basados en puerto: una mquina responde de diferente manera si se accede a un puerto u otro.. 3. Hosts virtuales basados en IP: una mquina responde de diferente manera si la peticin llega a diferente direccin Ip. Es decir, tenemos mltiples 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 parmetros de la configuracin global, que no se cambien para l de forma explcita.
APACHE2.0
18
2. Para la definicin de hosts virtuales se utiliza la seccin <VirtualHost> y en ella se incluyen las directivas que se aplican a un determinado host virtual. Como mnimo 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 direccin IP y el puerto donde van a existir host virtuales basados en nombre ServerName: Define el nombre del servidor virtual . VirtualHost: Define una seccin para un host virtual con las directivas aplicables a l.
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 aadirla. Cmo sabe Apache2 si una peticin va dirigida a uno u otro host virtual?
APACHE2.0
19
La respuesta est en las cabeceras del HTTP/1.1. Cuando un navegador enva una peticin al servidor usando el protocolo HTTP/1.1 enva 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 parmetros de configuracin (Ip:Puerto) de VirtualHost tienen que coincidir con los de NameVirtualHost.
<VirtualHost *:80 >
Dentro de cada bloque <VirtualHost>, necesitar como mnimo una directiva ServerName para indicar qu host se sirve y una directiva DocumentRoot para indicar dnde estn los contenidos a servir dentro del sistema de archivos. El servidor web existente (host virtual por defecto) dispone de su configuracin 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 aadir el host virtual www.aparioja.red, que apunta a la misma direccin IP. Crear un nuevo sitio virtual con esta configuracin y activarlo.
<VirtualHost *:80 > ServerName www.aparioja.red DocumentRoot /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 aadir la lnea:
127.0.0.1 localhost www.aparioja.red www.iesrioja.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 acte por defecto, normalmente el primero que est especificado. Si queremos configurar un virtual host 'oficial' o por defecto se puede hacer definindolo de la siguiente manera: <VirtualHost _default_:80>
APACHE2.0
20
Si queremos que apache funcione en dos puerto diferentes y que responda diferente segn el puerto crearemos dos VirtualHost cada uno con su configuracin 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>
SSL EN APACHE
Introduccin
Una pgina web segura o un sitio web seguro es un sitio web que utiliza el protocolo https en lugar de utilizar el protocolo http.
APACHE2.0
21
El protocolo https es idntico al protocolo http, pero aadiendo el protocolo SSL (Secure Socket Layer) que permite establecer de forma sencilla, conexiones seguras cifrando la informacin trasmitida entre cliente y servidor. Los algoritmos de cifrado utilizados renen las caractersticas necesarias para garantizar que la informacin que sale desde el servidor hacia el cliente, est cifrada y solamente pueda ser descifrada por el cliente y que la informacin 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 trminos de criptografa, como clave pblica y privada, certificados digitales y Autoridades de Certificacin. Puedes aprender sobre ello en el siguiente Anexo de Criptografa
Requisitos previos
Para que apache2 funcione con SSL, necesita dos cosas.
Por un lado un mdulo llamado ssl, que viene con la instalacin pero que habr que activarlo. Por otro lado necesitaremos generar nuestras claves (privada y pblica) y el certificado (que en este caso nos lo firmaremos nosotros mismos), para ello necesitamos tener instalado el paquete openssl en nuestra distribucin. 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 pginas seguras con el protocolo https, necesita un certificado. Dicho certificado permitir que nuestro servidor utilizar cifrado asimtrico para intercambiar las claves de cifrado con los clientes, antes de iniciar una trasmisin segura de informacin. Inicialmente, el cliente deber aceptar el certificado del servidor, ya que generaremos un certificado autofirmado. Si queremos evitarlo, deberamos 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 exista 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
APACHE2.0
22
Tendremos que responder a algunas preguntas sobre nuestra ubicacin geogrfica, nombre de nuestra organizacin,..., respondemos como queremos, a la ltima opcin 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 tendramos 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. Tambin 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
El siguiente paso ser configurar un servidor virtual para que utilice dicho certificado.
APACHE2.0
23
Estas son las directivas esenciales para que funcione mediante certificado, pero hay otras muchas directivas. Por ejemplo si queremos que un directorio slo funcione con SSL hay que poner dentro de Directory la directiva SSLRequireSSL. Otra opcin 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:
// Aadir en /etc/apache2/ports.conf (Est funcionar si est activado el modulo ssl) Listen 443 configurado para
APACHE2.0
24
Si pulsamos sobre Entiendo los riesgos, y luego sobre Aadir excepcin, el botn 'Examinar certificado', nos aparecer una pantalla donde podemos obtener el certificado y verlo. Veremos la informacin tanto del certificado como de la entidad certificadora que lo firma:
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 informacin de la pgina 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,...
Control de Acceso
Es posible permitir el acceso a los usuarios en funcin de la mquina desde la que hacen las solicitudes de informacin. Para ello se utilizan las directivas Allow y Deny que permiten y rechazan, respectivamente, el acceso en funcin del nombre o la direccin de la mquina desde la que se hace la solicitud de informacin. Estas directivas van normalmente dentro de la seccin <Directory>, en la seccin <Files> o en los archivos .htaccess
Allow from 88.20.10.1
APACHE2.0
26
Para una correcta configuracin, hay que prestar especial atencin 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 dems denegados
Order Deny,Allow Deny from all Allow from iesmalo.red
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 dems IP son denegados por defecto puesto que Order est en Allow,Deny
Order Allow,Deny Allow from 10.0.0.0/8 Deny from 10.0.0.3 10.0.0.5
Autenticacin
La autentificacin 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 pgina solicitada. Si el usuario no tiene permitido el acceso o el password no es vlido, el servidor Apache devuelve un cdigo de estado 401 (Acceso no autorizado). Para utilizar los mecanismos proporcionados por Apache para el proceso de autenticacin deben esta activado el mdulo correspondiente al mtodo que se vaya a utilizar. Para autenticacin bsica: $ sudo a2enmod auth_basic. Otros mtodos son digest o mysql.
APACHE2.0
una
27 seccin
Para configurar la autenticacin habr que aadir <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 cul es el tipo de autenticacin 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 identifique la contrasea que debe utilizar al enviar una peticin a un rea determinada.
AuthName "Este directorio es privado, introduce tus datos"
AuthUserFile
Ubicacin del archivo que contendr los nombres de usuario y contraseas usadas en la autenticacin HTTP bsica. Se suele llamar .htpasswd.
AuthUserFile /etc/apache2/.htpasswd
Require
Selecciona qu usuarios autenticados pueden acceder a un recurso Slo el usuario juan puede acceder al recurso
Require user juan
APACHE2.0
28
Tambin se puede hacer con algn editor: sudo vim /etc/apache2/.htpasswd Dentro del fichero escribiremos los usuarios y contraseas siguiendo este formato:
usuario1:contrasea juan:1234 perico:perico#57
IMPORTANTE En las ltimas versiones de apache se requiere que estas contraseas estn cifradas para que funcione, se pueden conseguir las contrseas 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:qvApimGRgQOyo perico:cKH2sP2WY6XIE
Si se quiere trabajar con grupos, se podra hacer con la directiva AuthGroupFile y un fichero /etc/apache2/.htgroup con la sintaxis
grupo1: usuario1 usuario2 amigos: juan perico
APACHE2.0
29
Redirecciones
Se puede configurar un directorio para que l y su contenido sean redirigidos de modo transparente hacia cualquier otra direccin. 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 nmero 301 corresponde al mensaje del protocolo HTTP para indicar que la redireccin es permanente.
Archivos .htaccess
Apache, adems de la configuracin 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 configuracin general (por defecto slo puede configurar el root) y cualquier usuario que pueda escribir en el directorio se podr configurar su fichero .htacces. Hay que tener en cuenta que para permitir la opcin de estos ficheros, es necesario el permiso por parte del administrador por medio de la directiva AllowOverride que con All permite reescribir todo tipo de configuracin 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 raz hasta el subdirectorio que contiene el archivo solicitado) el archivo .htaccess y tiene en cuenta estas reglas antes de proceder con la peticin, 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. Slo hay que crear un fichero .htaccess, con las directivas elegidas dentro y copiarlo al directorio a configurar.
AuthType Basic
APACHE2.0
30
AuthName "Este directorio es privado, introduce tus datos" AuthUserFile .htpasswd Require valid-user
No mostrar www
Options +FollowSymlinks RewriteEngine on RewriteCond %{http_host} ^www\.iesrioja\.red[nc] RewriteRule ^(.*)$ http://iesrioja.red/$1 [r=301,nc]
LAMPP:LINUX+APACHE+MYSQL+PH P+PHPMYADMIN
Para poder aprovechar al mximo las caractersticas del servidor web apache, es muy conveniente que pueda ejecutar scripts en servidor y pueda acceder a bases de datos. Las aplicaciones web ms interesantes como los gestores de contenidos para crear y mantener sitios web dinmicos, 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 ms utilizado es el lenguaje php y el sistema gestor de bases de datos ms utilizado es mysql. Phpmyadmin es una excelente herramienta para administrar bases de datos mysql.
APACHE2.0
31
PHP
Introduccin
PHP es un lenguaje de programacin interpretado, de alto nivel, ejecutado en el servidor y usado frecuentemente para la creacin de contenido para webs dinmicas. Su cdigo est embebido en el cdigo HTML y al ser ejecutado en el servidor PHP nunca es enviado al cliente. El servidor es quien procesa la peticin del cliente ejecutando el cdigo PHP y devolviendo el HTML generado.
Instalacin de PHP
Para instalar PHP en nuestro servidor la haremos desde los repositorios. El paquete a instalar depende de la versin que deseemos instalar. La ltima versin de php a fecha de hoy es la 5.
// Instalacin de php5 para apache 2 # $ sudo aptitude install php5
IMPORTANTE Si todo va bien, al instalar php5 tambin 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 algn tipo de aviso, podemos usar el comando
sudo aptitude install libapache2-mod-php5
El problema es que apache est instalado con el modelo multiproceso $apache2mpm-worker y al instalar php5 tiene que desinstalar este modelo y usar $apache2mpm-prefork. Aunque aptitude de algn aviso de peligro, no pasa nada Apache funciona con los dos perfectamente y slo cambia algo el rendimiento, cosa que para nuestros ejemplos no tienen importancia. Adems, automticamente se configura creando los archivos necesarios en la carpeta de mdulos disponibles de apache (/etc/apache2/mods-available), los enlaces necesarios para habilitarlos en la carpeta de mdulos habilitados de apache (/etc/apache2/mods-enabled) y el fichero de configuracin en /etc/php5/apache2/php.ini. Una muy buena forma de saber si tenemos soporte php y adems cmo est configurando es haciendo lo siguiente: Creemos un nuevo archivo de la siguiente manera vim /var/www/info.php, y escribimos las siguiente lnea.<?php phpinfo(); ?> . Ahora podemos ir a nuestra pgina webhttp://localhost/info.php y all nos tendra que salir informacin sobre la configuracin de php.
APACHE2.0
32
Configuracin de PHP
El archivo de configuracin de php5 es el archivo /etc/php5/apache2/php.ini, dos parmetros 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 pginas, cuando les haya.
MySQL
Introduccin
MySQL es un SGBDR (Sistema Gestor de Bases de Datos Relacional) muy completo y muy utilizado hoy en da sobre todo en los hosting en Internet. MySQL se ofrece con licencia GNU GPL y es multiplataforma. Si disponemos de un servidor web con soporte php y base de datos mysql, tendremos la arquitectura ideal para crear un portal dinmico utilizando gestores de contenidos como Joomla, drupal o Typo3, as como aplicaciones web orientadas al trabajo colaborativo y al desarrollo rpido de contenidos como Wikis y Blogs.
Instalacin de mysql
Para la instalacin del servidor y el cliente de mysql en su ltima versin, basta con instalar el metamaquete mysql-server, el cual instala la ltima versin disponible de mysql. Durante la instalacin nos pedir que elijamos la contrasea del usuario root para la base de datos, es decir el usuario que podr manejar toda la configuracin de la base de datos.
// Instalacin de mysql $ sudo aptitude install mysql-server
APACHE2.0
33
phpMyAdmin
Introduccin
phpMyAdmin es una herramienta escrita en PHP para llevar la administracin de MySQL va web. Permite crear y eliminar BBDD, crear, eliminar y modificar tablas, borrar, editar y aadir campos, ejecutar cualquier sentencia SQL, administrar claves y privilegios, etc. Disponible bajo la licencia GPL.
Instalacin de phpMyAdmin
PhpMyAdmin tambin est en los repositorios de Ubuntu, as que bastar con poner:
// Instalacin 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 aplicacin escrita en php pueda acceder a una base de datos mysql. Si no queremos instalar phpMyAdmin, no hay que olvidar instalar este paquete. La instalacin necesitar la contrasea 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.
APACHE2.0
34
Lo que hace la instalacin normalmente es aadir 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 direccin no funciona habr que configurar Apache para mostrar phpMyAdmin. En el fichero /etc/phpmyadmin/apache.conf est toda la configuracin necesaria. Basta con copiar esta configuracin a un sitio activo en apache, o crear uno nuevo con ella. Tambin 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 contrasea con privilegios para gestionar mysql. Al manejo es bastante sencillo. El archivo de configuracin de phpmyadmin es el archivo: /etc/phpmyadmin/config.inc.php, en l, estn los parmetros que permitirn a phpmyadmin conectar con mysql como el host, puerto y autenticacin.