Software">
SMR-UD3 Apache - Actualizado
SMR-UD3 Apache - Actualizado
SMR-UD3 Apache - Actualizado
Contenido
1. Servidor Web ...........................................................................................................................4
Redirecciones ........................................................................................................................... 30
1.8 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN......................................... 32
En esta unidad, vamos a estudiar la instalación del servidor web Apache, con el módulo de
PHP (intérprete para el lenguaje de programación PHP) e interacción con el servidor de
bases de datos MySQL.
Tendremos de esta manera, preparado nuestro propio servidor web en el cual podremos
crear sitios web, aplicaciones, páginas estáticas y dinámicas, instalar Sistemas gestores de
contenidos, Sistemas de gestión de aprendizaje, entre otras muchas cosas.
Apache es uno de los servidores web más utilizados actualmente en Internet. Otra de las
características importantes de Apache, es que tiene una licencia GPL.
Una de las ventajas que tiene PHP es su potente API para poder conectar con servidores de
Bases de datos como PostgreSQL y MySQL. En este caso, vamos a usar este último, ya que
es ideal para bases de datos de pequeño y mediano tamaño por su rapidez.
Al finalizar la unidad, dispondremos de nuestro propio servidor web para poder alojar, por
ejemplo, un sitio Wordpress o un Moodle (en ambos caso páginas web dinámicas,
programadas en PHP y usando bases de datos MySQL o derivados.
1. Servidor Web
1.1. Introducción
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.
protocolo://servidor/ruta/recurso
Ejercicio Resuelto
Identifica las partes de la que consta la siguiente URL:
http://es.wikipedia.org/wiki/Localizador_uniforme_de_recursos
Protocolo: http
Servidor: es.wikipedia.org
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.
Autoevaluación
Selecciona las opciones correctas:
El objetivo de un servidor web es servir o suministrar páginas web a los clientes web o
navegadores que las solicitan.
Para poder acceder al servidor web, el servidor debe tener asignada una dirección IP única
que identifica el equipo en la red.
Recomendación
Debes ser capaz de consultar la documentación de la página web oficial de apache2:
Apache HTTP Server Versión 2.4 Documentación - Servidor HTTP Apache Versión 2.4
Autoevaluación
Apache es un proyecto de Software propietario.
Verdadero Falso
// Instalar Apache2
$ sudo apt-get install apache2
Por defecto, al instalarse el servicio se inicia cuando arranca el sistema, sin necesidad de iniciar sesión
ningún usuario.
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 manera podemos acceder a nuestro propio pc desde nuestro pc. Si queremos
navegar desde 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.
Ficheros:
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
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/html"
: DocumentRoot "/var/www/html"
En Apache 2.4 por defecto está denegado el acceso fuera de /var/www como se indica en el archivo de
configuración apache2.conf:
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
determinará la prioridad a la hora de decidir que fichero es el que se muestra.
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
También se puede indicar esta directiva en la configuración de un host virtual para que se aplique solo
en ese caso.
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:
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
Directivas de Optimización
PidFile
Indica el fichero en el que el servidor graba el identificador de proceso (PID).
PidFile /var/run/apache2.pid
Timeout
El tiempo que el servidor web esperará para recibir y enviar peticiones durante la comunicación.
Expresado en segundos.
Timeout 300
KeepAlive
Activa o desactiva {On | Off} las conexiones persistentes.
KeepAlive On
MaxKeepAliveRequests
Establece el número máximo de peticiones permitidas por cada conexión. El valor 0 indica un número
ilimitado.
MaxKeepAliveRequests 100
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">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
Dentro de <Directory> se usan las siguientes directivas:
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.
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 desde 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
Require, Opción nueva, directiva a partir de la versión 2.4
Por ejemplo:
Permitir desde la red 192.168.10.0:
<Directory /var/www/html/misitio>
Require ip 192.168.10.0 / 255.255.255.0
</Directory>
<RequireAll>
Require all granted
Require not ip 192.168.5.1
</RequireAll>
Se puede acceder a un sitio web fuera de var/www, tan solo hay que indicar "Permitir todo el acceso",
por ejemplo,:
<Directory /home/jose/htdocs/misitio>
Require all granted
</Directory>
Para permitir todo el acceso y denegar todo el acceso: Require all denied --> Deniega cualquier acceso
(tanto usuarios como ip) Require all granted --> Permite cualquier acceso (tanto usuarios como ip)
Require all 0.0.0.0/0.0.0.0 --> Permite acceso a todas las ips Deny all 0.0.0.0/0.0.0.0 --> Deniega el
acceso a todas las ips
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">
Require all denied
</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)$">
Require all denied
</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.
1.5.1 Introducción
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 más.
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).
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.
▪ ServerName: Define el nombre del servidor virtual .
▪ VirtualHost: Define una sección para un host virtual con las directivas aplicables a él.
Tened en cuenta que en apache 2.4 los archivos de configuración en el directorio sites-availables deben
tener extensión .conf
5. Reiniciar el servicio apache.
¿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 necesitamos crear la directiva <VirtualHost IP:Puerto> para cada host diferente que se
quiera alojar en el servidor, los parámetros de configuración (Ip:Puerto) de VirtualHost indican IP del
servidor (* indica que es válido para cualquier IP que tenga el servidor) y puerto por el que escuchará la
petición.
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/000-default.conf.
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.
La sección Directory, en este ejemplo es opcional, la opción Indexes está activa por defecto.
Para que se pudiese acceder desde otros ordenadores debería existir un servidor DNS donde
introducir el nombre.
No debes olvidar que si no tenemos DNS hay que editar el archivo /etc/hosts para hacer la
resolución local de nombre, y añadir la línea:
Si estamos comprobando el acceso desde el propio servidor, hacemos la resolución en el
servidor, por lo tanto la ip es 127.0.0.1
127.0.0.1 localhost www.iesrioja.red www.aparioja.red
Si estamos accediendo desde cualquier otro pc_cliente (en red), hacemos la resolución en el
cliente, pondríamos la ip del servidor:
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>
Listen 8080
<VirtualHost 192.168.1.1>
ServerName www.iesrioja.red
DocumentRoot /var/www/html/iesrioja
</VirtualHost>
<VirtualHost 192.168.1.2>
ServerName www.aparioja.red
DocumentRoot /var/www/html/aparioja
</VirtualHost>
1.6.1 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
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.
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:
El siguiente paso será configurar un servidor virtual para que utilice dicho certificado.
<VirtualHost _default_:443>
DocumentRoot /var/www/html/iesrioja
…………
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/iesrioja.crt
SSLCertificateKeyFile /etc/apache2/ssl/iesrioja.key
</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 (si no lo está) dicho puerto para
que apache lo utilice:
// Reinicio de apache
$ sudo /etc/init.d/apache2 restart
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:
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.
Apache permite una variedad enorme de opciones y configuraciones. Hemos visto algunas de
ellas, ahora veremos otras que también se usan bastante.
Las directivas Allow, Deny, y Order, proporcionadas por mod_access_compat, están obsoletas y
serán quitadas en futuras versiones. Deberá evitar su uso, y también los tutoriales desactualizaos que
recomienden su uso.
Es posible permitir el acceso a los usuarios en función de la máquina desde la que hacen las
solicitudes de información.
Estas directivas van normalmente dentro de la sección <Directory>, en la sección <Files> o en
los archivos .htaccess
Nota: Puede ser insertado not para negar un requisito en particular. Note que, ya que not es una
negación de un valor, no puede ser usado por sí solo para permitir o denegar una petición, como
not true que no constituye ser false. En consecuencia, para denegar una visita usando una
negación, el bloque debe tener un elemento que se evalúa como verdadero o falso. Por ejemplo, si
tienes a alguien espameandote tu tablón de mensajes, y tú quieres evitar que entren o dejarlos
fuera, puedes realizar lo siguiente:
<RequireAll>
</RequireAll>
Require all denied --> Deniega cualquier acceso (tanto usuarios como ip)
1.7.2 Autenticación
La autentificación se basa en el principio de que el cliente envía su nombre y su password al
servidor, un módulo 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/html/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 identifique la contraseña que debe utilizar al
enviar una petición a un área determinada.
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
AuthGroupFile
Ubicación del archivo que contendrá los nombres de los grupos y los usuarios pertenecientes a cada
grupo. Se suele llamar .htgroup
AuthGroupFile /etc/apache2/.htgroup
Require valid-user
Dentro del fichero escribiremos los usuarios y contraseñas siguiendo este formato:
usuario1:contraseña
juan:1234
perico: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:qvApimGRgQOyo
perico:cKH2sP2WY6XIE
¡¡IMPORTANTE!! En la versión de apache 2.4, para trabajar con grupos, es necesario activar el
módulo: mod_authz_groupfile
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:
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.
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 .htaccess.
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 directiva AllowOverride 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.
Ejemplo:
<VirtualHost *:80>
……
……
<Directory /home/charo/htdocs/miSitio>
AllowOverride All
</ Directory>
</ VirtualHost>
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
1.8 LAMPP:LINUX+APACHE+MYSQL+PHP+PHPMYADMIN
Para 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.
1.8.1 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.
Reiniciar Apache.
IMPORTANTE ¡¡¡Si todo va bien, al instalar php también se instalará el paquete libapache2-mod-php,
que es el encargado de "introducir" el soporte php dentro de apache!!!.
Si al poner el comando nos da algún tipo de aviso, podemos usar el comando
Configuración de PHP
El archivo de configuración de php es el archivo /etc/php/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.
1.8.2 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.
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
wordpress, así como aplicaciones web orientadas al trabajo colaborativo y al desarrollo rápido de
contenidos como Wikis y para plataformas learning como moodle.
Instalación de mysql
Para la instalación del servidor y el cliente de mysql en su última versión, basta con instalar el
metapaquete 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
Para poder acceder a phpmyadmin con el usuario root, deberemos asignarle una contraseña.
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....
1.8.3 phpMyAdmin
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 apt-get install phpmyadmin
Recordad, que para seleccionar durante la instalación cualquier opción, se debe pulsar la barra
espaciadora.
Entre otros paquetes, se instala uno muy importante, es el paquete con la última versión X
instalada de php: phpX-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. El 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.
Recordad, que para seleccionar durante la instalación cualquier opción, se debe pulsar la
barra espaciadora.
Para poder acceder con la url http://localhost/phpmyadmin el servidor (o host) virtual 000-
default.conf debe estar habilitado.