apache: instalación y configuración en ubuntu server y windows server
Post on 13-Jun-2015
22.449 Views
Preview:
DESCRIPTION
TRANSCRIPT
Apache Instalación y configuración en Ubuntu Server y Windows Server Jose Manuel Rozas Vilar
Índice
Instalación de Apache 2.2 en Ubuntu Server
Comprobación del funcionamiento del servidor Ubuntu en un cliente Windows
Instalación de Apache 2.2 en Windows Server 2008
Comprobación del funcionamiento del servidor Windows en un cliente Windows
Cuestiones
Ficheros de configuración y directivas en Ubuntu Server
Ficheros de configuración y directivas en Windows Server
Configuración básica en Linux
Configuración básica en Windows
Módulos en Linux
Módulos en Windows
Control de acceso por IP y nombre de dominio
Autenticación y autorización Basic y Diges
Ficheros .htaccess
Ficheros de registros (logs)
Módulos mod_status y mod_info
Webalizer
Conclusión
Webgrafía
Instalació n de Apache
Instalación de Apache 2.2 en Ubuntu server
Tenemos instalado una versión del Ubuntu Server en una máquina virtual.
Iniciamos el sistema.
Antes de proceder a la instalación actualizamos los paquetes
Instalamos apache
Comprobamos que el servidor está iniciado y escuchando en el puerto 80/TCP.
Comprobamos que se ha creado el directorio /var/www y que su propietario es el usuario root
Comprobamos el contenido del archivo /var/www/index.html
Antes de pasar al cliente comprobamos la IP de nuestro servidor Ubuntu
Comprobación del funcionamiento del servidor Ubuntu en un cliente Windows
Iniciamos el cliente en otra máquina virtual.
Y desde un navegador comprobamos el funcionamiento de Apache, empleando la misma IP que nuestro
servidor Ubuntu.
Instalación de Apache 2.2 en Windows Server 2008:
Iniciamos Windows server en una máquina virtual.
Bajamos el programa de Apache desde su página web.
Ejecutamos el archivo que nos acabamos de descargar.
Al terminar la instalación aparece el icono de Apache en la barra de tareas.
Comprobamos que el servidor está escuchando en el puerto 80.
Comprobamos el contenido del directorio \htdocs de la instalación de Apache 2.2
Además vamos a agregar una excepción al firewall
También incluiremos en la variable Path de Windows la ruta a los archivos binarios de Apache.
En el Panel de Control>Variables de Entorno>Editar
Comprobación de funcionamiento del servidor de Windows
Desde el propio servidor, introduciendo la IP de localhost en un navegador:
En un cliente Windows introduciendo la IP del servidor en un navegador:
Cuestiones
Linux /etc/apache2/apache2.conf: Dentro de este archivo se encuentra el principal archivo de configuración del servidor web apache.
1
/etc/apache2/ports.conf: configuraciones de puertos. Podemos cambiar o añadir los puertos que escucha el servidor.
/etc/apache2/mods-available/: El directorio de los módulos disponibles.
/etc/apache2/mods-enabled/: directorio de los módulos que están habilitados.
/etc/apache2/sites-available/: los sitios web activos se encuentran listados en este directorio
Windows
C:\Archivos de Programa\Apache Software Foundation\Apache2.2\conf\httpd.conf
Es el archivo principal de configuración del servidor web Apache. Almacena información acerca de diversas funciones del servidor, que pueden añadirse o eliminarse agregando un "#" a comienzo de línea, las cuales determinan los valores para cada directiva con el fin de configurar Apache de acuerdo a nuestras necesidades. Está dividido en tres secciones: parámetros globales, directivas de funcionamento y host virtuales.
Carpeta C:\Archivos de Programa\Apache Software Foundation\Apache2.2\conf\extra
En esta carpeta se encuentran los archivos configuración extra de Apache: httpd-autoindex.conf: contiene directivas para controlar la generación automática de la lista de directorios
en directorios que no contenga un archivo index.html.
httpd-default.conf: contiene la configuración por defecto del servidor.
info.conf httpd: este archivo contiene la configuración para los módulos mod_info y mod_status.
httpd-languages.conf: este archivo contiene la configuración para el soporte multi-idioma de Apache.
httpd-manual.conf: manual de Apache en HTML.
httpd-mpm.conf: este archivo contiene la configuración común de varios módulos multiproceso.
httpd-multilang-errordoc.conf: documentación de errores multi-idioma, que hace que el servidor reporte
errores en el idioma del usuario definido por el navegador.
httpd-userdir.conf: mod_userdir permite a cada usuario en nuestro servidor tener su propio espacio web
personal, con URL del tipo de http://nombreservidor/~nombreusuario/
httpd-ssl.conf: para activar SSL (HTTPS) en el servidor es necesario cargar este archivo de configuración.
httpd-vhosts.conf: este archivo contiene un host virtual de ejemplo.
Archivós de cónfiguració n y directivas en Ubuntu Server
1. Ficheiros de configuración en /etc/apache2 Directorio /etc/apache2
Fichero /etc/apache2/apache2.conf
apache2.conf incluye, con la directica include, a otros ficheros y directorios.
2. Servidor virtual por defecto En el directorio /etc/apache2/sites-available está el archivo default, que contiene la configuración del servidor por defecto.
Contenido del archivo default.
En el directorio /etc/apache2/sites-enabled existe el archivo 000-default que es un enlace simbólico a default. Los archivos incluídos en /etc/apache2/sites-enabled se incluyen en /etc/apache2/apache2.conf en orden alfabético.
3. Directivas en el archivo /etc/apache2/apache2.conf
ServerRoot
Indica en dónde irá el directorio raíz donde se encuentra instalado nuestro servidor web.
User
Establece el identificador de usuario utilizado por el servidor para responder a las peticiones. Esta opción determina el acceso de servidor.
Group
Similar a User, la directiva Group establece el grupo sobre el que el servidor aceptará las peticiones.
TimeOut
El número de segundos que esperará el servidor antes de cerrar una petición.
KeepAlive
Si está activada como On permite conexiones persistentes (más de una petición en la misma conexión )
ErrorLog
En esta directiva se indica la localización del fichero de errores error.log
Contenido del archivo error.log
ports.conf
En el archivo apache2.conf también se incluye un include al archivo ports.conf, en dónde se indican en qué puertos estará escuchando el servidor.
Contenido de ports.conf
Vemos que está configurado para escuchar en el puerto 80. Si se habilitara el módulo mod_ssl escuchará también en el puerto 443.
default
En el fichero /etc/apache2/sites-available/default
Dentro de la directiva <VirtualHost> ... </VirtualHost> se define el comportamiento del servidor virtual por defecto. DocumentRoot Esta directiva especifica dónde debe buscar Apache los archivos que forman el sitio. El valor predeterminado es /var/www. La directiva contenedora <Directory> ... </Directory> indica a Apache cómo servir el contenido del directorio /var/www El valor de la directiva ErrorLog indica la localización del archivo error.log, por defecto /var/log/apache2.
Archivós de cónfiguració n y directivas en Windóws Server
1. Ficheros de configuración Iniciamos sesión con un usuario con privilegios de administrador.
Accedemos al directorio C\:Program Files\Apache Software Foundation\Apache2.2\conf
Abrimos el fichero httpd.conf
2. Directivas El valor de la directiva ServerRoot: el principio del árbol de directorios donde se guardarán los archivos de configuración, error y logs. C\:Program Files\Apache Software Foundation\Apache2.2
El puerto en el que escucha peticiones Apache es el puerto 80.
El valor de la directiva DocumentRoot: el directorio desde el que nuestro servidor servirá los documentos. C\:Program Files\Apache Software Foundation\Apache2.2\htdocs
Las directivas contenedoras <Directory> ... </Directory> determinan cómo Apache sirve los contenidos. Primero está configurada por defecto de forma restrictiva.
Luego se puede configurar el directorio de forma personalizada.
Directiva Errorlog: la localización del fichero de errores error.log.
Hay varias directivas include desactivadas mediante comentarios para poder incluir nuevas funcionalidades.
Fichero httpd-default para modificar directivas por defecto.
Fichero httpd-vhosts para añadir servidores virtuales.
Captura de pantalla con Windows Server 2008 funcionando (arriba) Y navegador del host accediendo a la página index.html en el directorio htdocs de Apache (círculo rojo).
Cónfiguració n ba sica en Linux
Archivos y directorios de prueba
Accedemos al directorio /var/www
y creamos los siguientes archivos y directorios:
/
Ficheros a servir por defecto ( DirectoryIndex)
var/www/despregamento.html
/
var/www/fp.html
/var/www/ciclos/listado.html
/var/www/ciclos/asir.html
/var/www/ciclos/daw.html
/var/www/ciclos/dam.html
Si conectamos directamente con el servidor, sale el index.html por defecto
Si renombramos index.html por indice.html
Volvemos a conectar
Ahora como no se ha encontrado el index.html nos muestra el contenido del directorio.
Vamos a editar el archivo /etc/apache2/sites/available/default para incluir en la directiva DirectoryIndex
a despregamento.html.
Reiniciamos el servidor
Ahora nos muestra por defecto el archivo despregamento.html
Opciones sobre directorios ( Directory y Options Indexes)
Editamos el archivo /etc/apache2/sites-available/default
En la directiva <Directory> ... </Directory>
se encuentran las directivas que determinan cómo Apache sirve el contenido de ese directorio.
Todos los directorios dentro de /var/www heredan su configuración.
Por esa herencia, si abrimos en el
navegador del cliente
http://192.168.0.109/ciclos, como
en /ciclos no existe el fichero índice
despregamento.html
( DirectoryIndex), nos muestra el
contenido.
Creamos una nueva directiva <Directory> ... </Directory> para /var/ciclos
No hemos definido la opción Indexes. Así no se mostrará el contenido si no encuentra alguno de los
ficheros definidos en DirectoryIndex, sinó que mostrará un mensaje de prohibición.
Reiniciamos el servidor.
Ahora, si conectamos a /ciclos, como no se permite el listado del directorio (Options Indexes) el servidor
nos retorna el código 403 Forbidden.
Verificamos que sí es posible acceder a /ciclos indicando un archivo, por ejemplo /ciclos/listado.html
Códigos de error ( Error Document) Cofiguraremos el servidor virtual por defecto para cuando retorne el código de error 404 (página no
encontrada) por un mensaje persinalizado.
Editamos el archivo /etc/apache2/sites-available/default
Luego volvemos a reiniciar el servidor y probamos a introducir una página que sepamos que no existe.
Ahora vamos a configurar el servidor virtual por defecto para que cuando retorne el código de error 404
envíe una página 404.html almacenada en el directorio raíz del servidor.
Creamos el fichero 404.html.
Reiniciamos el servidor
Ahora probamos a introducir una página que no exista:
Directorios virtuales ( Alias )
Creamos el directorio /home/jose/apuntes
Dentro del directorio creamos el fichero apuntes.html
2. Editamos el archivo /etc/apache2/sites-available/default. Utilizamos la directiva Alias para crear un
directorio virtual denominado /apuntes que referencie a /home/jose/apuntes.
Reiniciamos el servidor para que los cambios tengan efecto.
Ahora nos conectamos a /apuntes.
Redirecciones ( Redirect)
Editamos el archivo /etc/apache2/sites-available/default.
Utilizamos la directiva Redirect para crear una redirección de /fp hacia http://www.todofp.es
Reiniciamos el servidor.
Y ahora si conectamos a /fp
Nos redirige a www.todofp.es
Cónfiguració n ba sica en Windóws
Ficheros y directorios de prueba Accedemos al directorio C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
y creamos los siguientes ficheros:
..\htdocs\despregamento.html
..\htdocs\fp.html
..\htdocs\ciclos\lista.html
..\htdocs\ciclos\asir.html
..\htdocs\ciclos\daw.html
..\htdocs\ciclos\dam.html
Conexión con el directorio raíz htdocs en servidor Windows Server 2008.
/despregamento.html
/ciclos
/ciclos/lista.html
Configuración
Editamos el archivo C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
Creamos las directivas:
DirectoryIndex
Directory
Alias y Redirection
Reiniciamos Apache
Probamos en el cliente.
Raíz /
/ciclos
/apuntes
/ciclos/lista.html
4.7. Mó dulós de Apache
Vamos a consultar los módulos (estáticos y dinámicos) que se cargan por defecto en nuestra versión de Apache. Después investigaremos la funcionalidad del módulo userdir, lo habilitaremos y probaremos su funcionalidad.
1. Módulos 1.1. Iniciamos nuestro servidor como administrador.
1.2. Comprobamos los módulos estáticos al compilar el servidor con apache2ctl -l
Son: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod-so.c
1.3. Comprobamos los módulos que se han cargado dinámicamente al arrancar el servidor consultando el directorio /etc/apache2/mods-enabled.
Los archivos que aparecen en el directorio /etc/apache2/mods-enabled son enlaces simbólicos a archivos de /etc/apache2/mods-available.
1.4. Editamos uno de los archivos .load (por ejemplo dir.load)
con nano
y vemos que se utiliza la directiva LoadModule para cargar el módulo dir_module. La ruta del módulo es un archivo de extensión .so en /usr/lib/apache2/modules. 1.5. Editamos el archivo dir.conf. Se añaden las directivas dentro de una declaración <IfModule mod_dir.c> </IfModule> que se ejecutará si se carga el módulo.
1.6. En el directorio /usr/lib/apache2/modules/ vemos los módulos disponibles para cargar.
1.7.
Ejecutamos sudo apt-cache search libapache2-mod para ver los paquetes disponibles en los
repositorios de Ubuntu que permiten instalar módulos adicionales de Apache.
2. Módulo userdir 2.1. Comprobamos que el módulo userdir no está habilitado.
2.2. Habilitamos el módulo userdir ejecutando sudo a2enmod userdir
2.3. Comprobamos que dentro del directorio /etc/apache2/mods-enabled se han creado enlaces simbólicos del módulo userdir ( archivos .conf y .load)
hacia /etc/apache2/mod-availables
2.4. Reiniciamos el servidor para que los cambios tengan efecto.
2.5. En el archivo /etc/apache2/mods-enabled/userdir.conf vemos que está habilitado el uso de directorios personales para todos los usuarios excepto para el usuario root y que public_html es el nombre del subdirectorio que pueden crear los usuarios en su directorio home para poner sus páginas personales.
2.6. Creamos el directorio /home/jose/public_html
Dentro de este directorio creamos un archivo personalizado, por ejemplo personal.html.
2.7. Desde un cliente accedemos al servidor en el directorio que acabamos de crear.
2.8. Deshabilitamos el módulo ejecutando sudo a2dismod userdir y reiniciamos el servidor.
4.8. Mó dulós en Windows
Comprobaremos los módulos estáticos y los módulos dinámicos cargados por defecto en nuestro Apache, y habilitaremos y comprobaremos el módulo userdir.
1. Módulos
1.1 Iniciamos el servidor con un usuario con privilegios de administrador.
1.2. Comprobamos los módulos estáticos que se han cargado al compilar el servidor ejecutando el comando httpd -l
1.3. Consultamos el archivo httpd.conf en el directorio C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf para ver los módulos que se han cargado dinámicamente al arrancar el servidor.
1.4. En el directorio C:\Archivos de Programa\Apache Software Foundation\Apache2.2\modules vemos todos los módulos disponibles para cargar.
2. Módulo userdir 2.1. Editamos el archivo httpd.conf en el directorio C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf
y habilitamos el módulo userdir eliminando sus símbolos # de comentario delante de las directivas LoadModule e Include.
2.2 Editamos el archivo httpd-userdir.conf en C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf\extra
Está habilitado el uso de directorios personales para todos los usuarios y My Documents/My Website es el nombre del subdirectorio que pueden crear los usuarios para poner sus páginas personales. 2.3. Reiniciamos el servidor. 2.4. Creamos un archivo .html en el directorio C:\Usuarios\Administrador\My Documents\My Website, por ejemplo personal.html.
2.5. Accedemos desde un cliente al servidor por ~administrador
2.6. Editamos el archivo httpd.conf en el directorio C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf y deshabilitamos el módulo userdir comentando con # en las directivas LoadModule e Include.
Y reiniciamos el servidor para que los cambios tengan efecto.
4.9. Control de acceso por IP y nombre de dominio
En nuestro servidor Ubuntu crearemos el directorio /var/www/profesor y configuraremos Apache para que
sólo se pueda acceder desde el equipo local y desde un cliente dentro de la propia red local.
1.
Iniciamos el servidor Ubuntu con un usuario con permisos de administrador.
2.
Creamos el directorio /var/www/profesor
Dentro de este directorio creamos un archivo .html, por ejemplo profesor.html.
3.
Editamos el fichero de configuración /etc/apache2/sites-available/default y utilizamos la directiva
<Directory> junto con las directivas Order, Allow y Deny para denegar el acceso al directorio a todos los
equipos excepto al cliente windows de IP 10.0.3.190
4.
Reiniciamos el Apache
5.
Comprobamos que se puede acceder a http://10.0.3.191/profesor/ desde e lcliente Windows pero no
desde la máquina real de Ubuntu.
4.10. Autenticació n y autórizació n Basic y Digest
En la máquina Ubuntu Server configuraremos la autentificación HTTP Basic sobre el directorio
/var/www/profesor para que solo puedan acceder los usuarios profesor1 y profesor2.
Configuraremos la autenticación HTTP Digest sobre el directorio /var/www/departamento para que solo
puedan acceder los usuarios admin1 y admin2.
1. Autenticación HTTP Basic
1.1.
iniciamos el servidor Ubuntu Server con un usuario con privilegios de administración.
1.2.
Comprobamos, consultando el directorio /etc/apache2/mods-enabled, que el módulo auth_basic está
habilitado.
1.3.
Para usar la autenticación basic hay que crear un fichero accesible por Apache en el que se guardarán los
usuarios y sus contraseñas.
Para crear este fichero se utilizará el comando htpaswd.
Creamos el fichero y añadimos el usuario profesor1
La opción -c es para crear el fichero.
htpasswd -c /etc/apache2/passwd profesor1
Añadimos el usuario profesor2. No se usa la opción -c porque el fichero passwd ya existe.
1.4.
Editamos el fichero de configuración /etc/apache2/sites-available/default y permitimos el acceso al
directorio /var/www/profesor a los usuarios profesor1 y profesor2.
1.5.
Reiniciamos Apache.
1.6.
Desde el cliente de Windows accedemos a http://IPservidorUbuntu/profesor
No será posible entrar con otro usuario que no sea profesor1 o profesor2
2. Autenticación HTTP Digest Creamos el directorio /var/www/departamento.
Dentro del directorio creamos un fichero denominado departamento.html.
2.2.
Habilitamos el módulo auth_digest.
2.3.
Reiniciamos Apache
2.4.
Para usar la autenticación digest hay que crear un fichero accesible por Apache en el que se guardarán los
usuarios y sus contraseñas asociados a un dominio (realm).
Para crear este fichero se utilizará el comando htdigest.
Creamos el fichero y añadimos el usuario admin1 al dominio informatica.
La opción -c es para crear el fichero.
Añadimos el usuario admin2. No se usa la opción -c porque el fichero ya existe.
2.5.
Editamos el fichero de configuración /etc/apache2/sites-available/default y permitimos el acceso al
directorio /var/www/departamento a los usuarios admin1 y admin2.
2.6.
Sólo podemos acceder desde el cliente Windows a http://IPservidorUbuntu/departamento con
los usuarios admin1 o admin2.
4.11. Ficherós .htaccess
En la máquina Ubuntu Server
o habilitaremos en Apache el uso de ficheros de configuración personalizada de directorios
(.htaccess ) en el directorio /home/profesor/blog para que sea el propio usuario profesor el que pueda controlar cómo sirve Apache los contenidos de ese directorio.
o Configuraremos el alias /blog que permita acceder al directorio /home/profesor/blog
o Como usuario profesor haremos uso del fichero .htaccess y configuraremos sobre el directorio /home/profesor/blog
que sólo se pueda acceder desde nuestro cliente Windows Autenticación HTTP Digest para que sólo pueda acceder el
usuario blog
1.
Iniciamos una sesión en el servidor Ubuntu con un usuario con privilegios de administrador.
2.
Creamos el usuario profesor
3.
Editamos el fichero de configuración /etc/apache2/sites-available/default.
Creamos el alias y habilitamos el uso de ficheros .htaccess permitiendo sobreescribir todas las directivas en
el directorio /home/profesor/blog.
Eliminamos las directivas anteriores y añadimos la directiva AllowOverrideAll.
4.
Reiniciamos Apache para que los cambios tengan efecto.
5.
Iniciamos una sesión en el servidor Ubuntu como usuario profesor.
6.
Creamos el directorio /home/profesor/blog/
Creamos el fichero blog.html
7.
Creamos el fichero /home/profesor/.htdigest y añadimos el usuario blog
8.
Creamos el fichero /home/profesor/blog/.htaccess y añadimos las directivas para realizar la configuración
pedida (no es necesario incluir la directiva <Directory> porque el fichero ya está en el directorio en el que
se aplicará su configuración )
9.
Desde el cliente Windows accedemos a http://IPservidorUbuntu/blog
4.12. Ficherós de registrós (lógs)
Sobre la máquina servidor Linux consultaremos los archivos de configuración de Apache y
observaremos las directivas para definir la configuración de los archivos de registros (logs).
1.
Iniciamos una sesión en el servidor Linux con privilegios de administrador.
2.
Consultamos el archivo /etc/apache2/sites-acailable/default.
3.
El fichero de logs de errores (directiva ErrorLog) es error.log y su nivel de prioridad (LogLevel)
es warn.
4.
El fichero de logs de accesos (directiva CustomLog) es access.log y como no especifica ningún
formato con LogFormat se usa el definido para el servidor principal.
5.
Consultamos el log de errores /var/log/apache2/error.log
6.
Consultamos el log de accesos /var/log/apache2/access.log
4.13. Mó dulós mód_status y mód_infó
Sobre el servidor Linux probaremos la funcionalidad de los módulos mod_status y mod_info.
1. mod_status
Módulo que permite monitorizar el rendimiento del servidor Apache. Genera un documento en
HTML con información sobre el estado actual del servidor.
1.1. Iniciamos una sesión en el servidor Linux con un usuario con privilegios de administración.
1.2. Habilitamos el módulo si no está habilitado.
sudo a2enmod status
1.3. Editamos el fichero de configuración del módulo
/etc/apache2/mods-enabled/status.conf
y habilitamos el acceso a /server-status desde el cliente windows
1.4.
Reiniciamos el servidor para aplicar los cambios.
1.5.
Desde el cliente nos conectamos al servidor /server-status
1.6.
También es posible consultar la información desde un terminal ejecutando el siguiente comando:
sudo apache2ctl status
2. mod_info
Módulo que proporciona una vista resumida de la configuración del servidor.
2.1.
Abrimos un terminal y habilitamos el módulo
sudo a2enmod info
2.2.
Editamos el fichero de configuración del módulo /etc/apache2/mods-enabled/info.conf y
habilitamos el acceso a /server-info desde el cliente windows.
2.3.
Reiniciamos el servidor para aplicar los cambios.
2.4.
Desde el cliente windows nos conectamos al servidor Linux /server-info
4.14. Webalizer
Sobre la máquina servidor Linux instalaremos y probaremos la funcionalidad de Webalizer.
1.
Iniciamos una sesión en el servidor Linux con un usuario con privilegios de adminstración.
2.
Abrimos un terminal e instalamos el software.
3.
Consultamos el fichero de configuración /etc/webalizer/webalizer.conf y observamos que se
analizará el fichero de logs de accesos del servidor virtual por defecto
Quitamos la extensión .1
4.
Observamos que se ha creado el directorio /var/www/webalizer
5.
Lanzamos el programa para que lea el fichero de log y genere el documento html con las
estadísticas.
6.
Desde el cliente windows nos conectamos al servidor /webalizer/index.html
Conclusión Instalar Apache en Ubuntu Server es más fácil, rápido y sencillo que en Windows Server, Incluso sin poseer una interfaz gráfica. Además en Ubuntu Server no es necesario un servidor DNS, en Windows Server sí.
Webgrafía http://my.safaribooksonline.com/book/operating-systems-and-server-administration/apache/0596529279 http://httpd.apache.org/docs/2.4/ http://en.wikipedia.org/wiki/Apache_HTTP_Server http://en.wikipedia.org/wiki/List_of_Apache_modules
top related