75
Bienvenidos al Curso Apache Basico Centro de Estudios Tecnológicos Avanzados (Centec) Av. Libertador, con calle Negrin. Centro Comercial Av. Libertador, Nivel Mezzanina, Local M-8, Caracas – Venezuela. Telf. (58-0212) 761.21.51 / 762.88.92 / 762.88.94

Laminas Apache

Embed Size (px)

DESCRIPTION

Manual apache 2

Citation preview

Bienvenidos al Curso

Apache Basico

Centro de Estudios Tecnológicos Avanzados (Centec)

Av. Libertador, con calle Negrin. Centro Comercial Av. Libertador,

Nivel Mezzanina, Local M-8, Caracas – Venezuela.Telf. (58-0212) 761.21.51 / 762.88.92 / 762.88.94

● Introducción a Apache

● La Familia de protocolos TCP-IP● El protocolo HTTP● CGI - Common Gateway Interface

● Instalación de Apache

● Sistemas operativos soportados

● Instalación de Apache en Linux

● Compilación e instalación● Binarios precompilados● Arranque y parada del servicio● Verificación de la instalación

● Instalación de Apache en Windows

● Directivas básicas de configuración

Bienvenidos al Curso

Apache Basico

● Herramientas de configuración: Comanche, Webmin

Bienvenidos al Curso

Apache Basico

● Instalación de Módulos dinámicos

● Uso de APXS● Ant

● Autenticación, Autorización y Control de Acceso

● El archivo .htaccess y asociados (.htpasswd, .htgroup y .htdigest)● Control de acceso por LDAP (mod_ldap)● Control de acceso por bases de datos (mod_auth_db,

mod_auth_mysql)● Directorios web para cada usuario (public_html)

Bienvenidos al Curso

Apache Basico

● Servidores virtuales

● Servidores virtuales por nombre● Servidores virtuales por IP

● Apache y la generación de contenido dinámico● PHP con mod_php

● Compilacion de PHP

● JSP y Servlets con Tomcat: mod_jk

● Integracion con WebServices

Bienvenidos al Curso

Apache Basico

● Otros Módulos de Apache

● Compresión de contenidos: mod_deflate● Reescritura de URLs: mod_rewrite● Negociación de contenidos: mod_negotiation● Apache como proxy o gateway: mod_proxy

● Benchmarking del Servidor

● Motores Prefork y Worker MPM ● Entonacion Basica de Apache

● Monitorización y optimización del servidor Apache

● Archivos log y su control.● Limitación del ancho de banda: mod_bandwidth.● Carga del servidor: mod_status

Que es ApacheEl servidor HTTP Apache es un software (libre) servidor HTTP de código abierto para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual.

Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo.

Su nombre se debe a que Behelendorf eligió ese nombre porque quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de internet.

Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. Era, en inglés, a patchy server (un servidor "parchado").

Modelo de Funcionamiento

INSTALACION DE APACHEConfiguracion Standard

● ServerRoot :: /usr/local/apache2

● DocumentRoot :: /usr/local/apache2/htdocs

● Apache Config File :: /usr/local/apache2/conf/httpd.conf

● Other Config Files :: /usr/local/apache2/conf/extra/

● SSL Config File :: /usr/local/apache2/conf/extra/httpd-ssl.conf

● ErrorLog :: /usr/local/apache2/logs/error_log

● AccessLog :: /usr/local/apache2/logs/access_log

● cgi-bin :: /usr/local/apache2/cgi-bin

● binaries (apachectl):: /usr/local/apache2/bin

● start/stop :: /usr/local/apache2/bin/apachectl

● (start|restart|graceful|graceful-stop|stop|configtest)

INSTALACION DE APACHEConfiguracion Suse

● ServerRoot :: /srv/www

● DocumentRoot :: /srv/www/htdocs

● Apache Config File :: /etc/apache2/httpd.conf

● Other Config Files :: /etc/sysconfig/apache2

● SSL Config File :: /etc/apache2/ssl-global.conf

● ErrorLog :: /var/log/apache2/error_log

● AccessLog :: /var/log/apache2/access_log

● cgi-bin :: /srv/www/cgi-bin

● binaries (apachectl):: /usr/sbin

● start/stop :: /etc/init.d/apache2

● (start|restart|graceful|graceful-stop|stop|configtest)

INSTALACION DE APACHE

Binarios de Apache

Instalacion de “Motores de Ejecucion”Core

Prefork (mpm)

Instalacion de Modulos “shares” de Apache

Modulos Mod_

fast_cgi perl php, etc

Instalacion de Modulos “doc y contrib” de Apache

Modulos Man y soporte a otras arquitecturas

Modelos de Directorios

bin:

archivos ejecutables del Apache.

conf:

archivos de configuración del servidor.

error:

archivos con los mensajes de error del servidor, en varios lenguajes.

htdocs:

directorio raíz por defecto del servidor (Se guardan las páginas Web).

Modelos de Directoriosicons:

directorio donde se encuentran los iconos que utiliza el servidor (entre otras cosas para mostrar estructuras de directorios).

logs:

directorio donde se almacenan los registros de acceso y errores del servidor.

manual:

directorio donde se encuentra el manual del Apache.

proxy:

Directorio con los archivos de la cache del servidor

PRACTICAInstalacion

● Realize la correcta instalacion en el sistema Operativo Linux – Ejecute un Navegador Web y verifique la correcta

instalacion del servidor Apache,

– Verifique la instalacion del Vecino

– Cual puerto sirve de escucha? como lo verifica

INSTALACION DE APACHE

Fuentes de Apache

Compilacion de “Motores de Ejecucion”Core

Prefork (mpm)

Compilacion de Soporte “APR” de Apache

Apache Runtime

Compilacion de Soporte “contrib” de Apache

Ldap, Mysql, Postgres y otros soportes

INSTALACION DE APACHE

Fuentes Clasica de Apache

./configure --help

INSTALACION DE APACHE

Fuentes Clasica de Apache

./configure \

--with-ldap \

--enable-mods-shared="all ssl ldap cache proxy authn_alias mem_cache file_cache authnz_ldap charset_lite dav_lock disk_cache"

PRACTICAInstalacion

● Realize la correcta compilacion de Apache en el sistema Operativo Linux – Agregue soporte a: ssl, ldap

– Verifique el Arbol de Directorios que se obtuvo

– Inicie apache manualmente escuche en el puerto 8080

– Verifique la instalacion del Vecino

– Reserve el directorio de instalacion para una practica posterior

INSTALACION DE APACHE

Fuentes Basado en RPM soportando a Suse

rpm -ivh apache2-2.2.8-8.2.src.rpm

rpm etc..

cd /usr/src/packages

cd SPECS

rpmbuild -bb apache2.spec

PRACTICAInstalacion

Realize la correcta compilacion de Apache en el sistema Operativo Linux desde los RPM– Genere rpm para la arquitectura especifica de su

distribucion y hardware

– Verifique los archivos resultantes

– Desinstale los binarios clasicos de Apache y realize la instalacion son la compilacion optenida

– Verifique el Arbol de Directorios que se obtuvo

– Reserve el directorio de instalacion para una practica posterior

Archivos de Configuracion● Básicamente las configuraciones del servidor residen

dentro de dos archivos,

– el de configuración principal que se encuentra dentro de la carpeta conf, con el nombre httpd.conf,

– o dentro de un archivo con el nombre .htaccess que se puede encontrar dentro de cualquier directorio que se encuentre mapeado dentro del servidor.

● Dentro de cada uno de estos archivos se ubican las directivas de configuración.

– Muchas de estas directivas de configuración se pueden encontrar tanto dentro del archivo de configuración principal como dentro de un archivo .htaccess.

Archivos de Configuracion

Los valores de las directivas que se encuentran dentro de un archivo .htaccess, prevalecen frente a los valores de configuración especificados dentro del archivo httpd.conf.

El Archivo httpd.conf

El archivo httpd.conf es el archivo principal de configuración del Apache, se encuentra dentro del directorio Conf, en el directorio de instalación del Apache.

En primer lugar hay que destacar que el archivo está dividido en tres secciones, que son:

● 1º Parámetros globales

● 2º Directivas de Funcionamiento

● 3º Host Virtuales

El Archivo httpd.conf

En el archivo se encuentran todos los parámetros de funcionamiento del Apache. Algunos parámetros son generales para la instalación y funcionamiento del Apache.

Muchos otros de los parámetros se pueden configurar independientes para un conjunto de directorios y/o archivos .

En estos casos los parámetros se encuentran ubicados dentro de secciones donde se indica el ámbito de aplicación del parámetro.

httpd.confLas secciones más importantes son:

<Directory> : Los parámetros que se encuentran dentro de esta sección,

sólo se aplicarán a el directorio especificado y a sus subdirectorios.

<DirectoryMatch>: Igual que Directory, pero acepta en el nombre del directorio

expresiones regulares.

<Files>: Los parámetros de configuración proporcionan control de

acceso de los archivos por su nombre.

<FilesMatch>: Igual que Files, pero acepta expresiones regulares en el

nombre del archivo.

httpd.conf<Location>:

Proporciona un control de acceso de los archivos por medio de la URL

<LocationMatch>: Igual que Location, pero acepta expresiones regulares en el

nombre del archivo.

httpd.conf

Algunas veces las directivas de funcionamiento de las secciones anteriores se pueden cruzar en cuyo caso tienen el siguiente orden de preferencia:

<Directory> y .htaccess (.htaccess prevalece frente a <Directory>)

<DirectoryMatch> y <Directory>

<Files> y <FilesMatch>

<Location> y <LocationMatch>

Parametros GlobalesTodos los parámetros que se establecen dentro de esta sección son globales para el funcionamiento del servidor, por lo que no admiten estar dentro de ninguna directiva.

ServerRoot: Especifica la ubicación del directorio raíz donde se

encuentra instalado el Apache, a partir del cual se crea el árbol de directorios comentado anteriormente.

Esta directiva no debería cambiar a no ser que se mueva la carpeta de instalación de apache a otro directorio. Se encuentra disponible a través del módulo Core.

Parametros GlobalesPidFile:

ubicación del archivo que contendrá el número de identificación del proceso cuando se encienda el servidor.

Se encuentra disponible a través de varios módulos beos, leader, mpm_winnt, mpmt_os2, perchild, prefork, threadpool ó worker

Parametros GlobalesTimeOut: el valor se utiliza para configurar medido en segundos, tres parámetros:

El tiempo tal que puede tardar una petición en ser recibida enteraLa cantidad de tiempo que espera entre recepción de paquetes TCPLa cantidad de tiempo entre ACK's en transmisiones TCP

Pasado este tiempo se produce un mensaje de error en el que se indica que se ha consumido el tiempo máximo de espera.

Establecer un valor muy pequeño puede dar lugar a que los usuarios reciban este mensaje de error, y establecer un valor muy pequeño dará lugar a una sobrecarga de la máquina.

Se encuentra disponible a través del módulo Core.

Parametros GlobalesKeepAlive:

especifica si se utilizarán conexiones persistentes, es decir, que todas las peticiones de un usuario se atenderán con la misma conexión.

Se encuentra disponible a través del módulo Core.

Parametros Globales

MaxKeepAliveRequests:

número máximo de conexiones persistentes. (número máximo de usuarios concurrentes si KeepAlive esta en ON).

Para establecer este parámetro, hay que tener en cuenta el ancho de banda de salida de nuestro servidor, por el cual deberá ser enviada toda la información.

Si se establece un valor muy grande respecto al ancho de banda, el tiempo de respuesta se verá incrementado para cada usuario.

Se encuentra disponible a través del módulo Core.

Parametros GlobalesKeepAliveTimeout:

Tiempo que espera en segundos entre peticiones de un usuario, antes de considerar que este ha terminado, y cerrar su conexión.

Si el valor es muy pequeño provocará que algunos usuarios no puedan visualizar la página debido a que el número máximo de conexiones persistentes se ha superado

Mientras que si se establece un valor muy grande se estarán utilizando muchos recursos de la máquina. Se encuentra disponible a través del módulo Core.

Parametros GlobalesListen:

Esta directiva permite especificar que puerto se utilizará para antender las peticiones.

Por defecto se utiliza el puerto 80 (www), también permite especificar que direcciones IP atenderá, por defecto todas.

Para atender dos direcciones IP distintas, con distintos puerto, se utilizaría:

Listen 192.168.255.5:80Listen 192.168.255.8:8080

Se encuentra disponible a través de varios módulos beos, leader, mpm_winnt, mpmt_os2, perchild, prefork, threadpool ó worker

Parametros GlobalesLoadModule:

Directiva que sirve para cargar módulos que incluyen distintas funcionalidades. La sintaxis es:

LoadModule nombreModulo ubicacionarchivo

Se encuentra disponible a través del módulo mod_so.

Parametros AdministrativosEsta es la sección principal de configuración del servidor, en ella podemos encontrar las siguientes opciones:

ServerAdmin:

Especifica la dirección de correo electrónico del administrador, esta dirección aparece en los mensajes de error, para permitir al usuario notificar un error al administrador.

No puede estar dentro de ninguna sección. Se encuentra disponible a través del módulo Core.

Parametros AdministrativosServerName:

Especifica el nombre y el puerto que el servidor utiliza para identificarse, normalmente se determina automáticamente, pero es recomendable especificarlo explícitamente para que no haya problemas al iniciar el servidor.

Si el servidor no tiene un nombre registrado en las DNS, se recomienda poner su número IP. No puede estar dentro de ninguna sección.

La sintaxis es:

ServerName direccionIP:Puerto p.e. ServerName localhost:80

Se encuentra disponible a través del módulo Core.

Parametros AdministrativosDocumentRoot:

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 (directorios virtuales en IIS)

Por defecto, la carpeta raíz es la carpeta htdocs, que se encuentra en la carpeta de instalación del Apache. No puede estar dentro de ninguna sección.

Parametros AdministrativosDocumentRoot:

Si se cambia este directorio por otro, es muy importante que se ponga el nuevo valor, no solo en esta línea, sino también en la sección <Directory> en la que se establecen los parámetros de configuración de este directorio.

Esta línea empieza por " <Directory " seguido de la carpeta raíz que originalmente hay en DocumentRoot.

Parametros AdministrativosDirectoryIndex:

Especifica el archivo por defecto que buscará en cada directorio, en caso de que no se especifique ninguno.

Por defecto es index.html. Es decir, que si por ejemplo se pone en el navegador:

www.centeconline.com el servidor por defecto servirá www.centeconline.com/index.html

Parametros AdministrativosDirectoryIndex:

En esta directiva se pueden especificar más de un archivo, la sintaxis es la siguiente:

DirectoryIndex archivo1 archivo2 archivo3

El orden con el que se especifica el nombre de archivo determinará la prioridad a la hora de decidir que archivo es el que se muestra.

La directiva se puede encontrar fuera de cualquier sección, dentro de una sección o dentro de un archivo .htaccess.

Se encuentra disponible a través del módulo mod_dir.

Parametros AdministrativosAccessFileName:

es el nombre del archivo de configuración que se buscará en cada una de los directorios del servidor para conocer la configuración del mismo.

Este archivo permite configurar el comportamiento de cada uno de los directorios individualmente.

Para que esta configuración funcione, la directiva AllowOverride tiene que tener un valor que lo permita. No puede estar dentro de ninguna sección.

El nombre de archivo que se especifica por defecto es el del archivo ".htaccess".

Parametros AdministrativosAccessFileName:

Como medida de seguridad, la configuración del Apache establece que no se muestre la existencia de este archivo a ningún usuario, aunque este establecida la opción de listado de directorios.

Si se decide cambiar al nombre, habrá que redefinir la seguridad para que no se muestre el contenido del nuevo archivo.

Parametros AdministrativosAccessFileName:

Esto se hace en el archivo httpd.conf en una sección File como la que se presenta a continuación en la que se establece que todos los archivos que comiencen por .ht no se mostrarán.

<Files ~ "^\.ht"> Order allow,deny Deny from all</Files>

Se encuentra disponible a través del módulo Core.

Alias de ServidorAlias

Permite la definición de directorios virtuales, un directorio virtual es un directorio que se encuentra en un directorio distinto del que se mapea en la URL.

El directorio virtual no se tiene porqué encontrar dentro de árbol de directorios que se crea a partir de DocumentRoot, sino que se puede encontrar en cualquier otra ubicación, incluso se podría encontrar en otro servidor distinto.

Alias de ServidorAlias

Por ejemplo, cuando se escribe www.desarrollodelcurso.com/manual/php la carpeta php no se tiene que encontrar necesariamente dentro de la carpeta manual, que a su vez esta dentro de la carpeta raíz Desarrolloweb, sino que puede estar en una ubicación distinta, y fuera del árbol de subdirectorios de la directiva DocumentRoot

Ejemplo:Alias /manual/php "/home/centec/php"

- el directorio php no se encuentra dentro del directorio manual dentro de la carpeta documentRoot, sino en la carpeta /home/centec/php.

Alias de ServidorAlias

Por defecto vienen creados dos redirecciones con Alias.

- Icons: para establecer la carpeta donde se encuentran los iconos que utilizará el Apache para mostrar el contenido de los directorios, y

- Manual: que apunta a la carpeta donde está instalado el manual del Apache en caso de que se hubiera elegido la opción durante la instalación.

Servidores Virtualesvhost

El termino Virtual Host se refire a la practica de ejecutar mas de un sitio web en el mismo servidor (como www.centeconline.com y www.centec.com).

Los Virtual hosts pueden ser "IP-based", significando que ud. tiene diferentes direcciones IP para cada web site, o "name-based", que significa ud. posee multiples nombres respondiendo a por lo menos una direccion IP.

El hecho de ejecutar en el mismo servidor fisico, no es aparente a el usuario final.

Servidores Virtualesvhost IP BASED

<VirtualHost 10.1.2.3>

ServerAdmin [email protected]

DocumentRoot /srv/www/htdocs/centeconline

ServerName centeconline.com

ErrorLog logs/centeconline-error_log

TransferLog logs/centeconline-access_log

</VirtualHost>

Servidores Virtualesvhost Name BASED

NameVirtualHost *:80

<VirtualHost *:80>ServerName www.dominio.com

ServerAlias dominio.com *.dominio.com

DocumentRoot /www/dominio

</VirtualHost>

<VirtualHost *:80>ServerName www.otrodominio.com

DocumentRoot /www/otrodominio

</VirtualHost>

Servidores Virtualesvhost Name BASED

<VirtualHost _default_:443> # Solo un virtual host se permite en este puerto, # porque los servidores virtuales name-based # no operan con SSL ServerName www.centeconline.com DocumentRoot /var/www/centeconline/htdocs

CustomLog /var/log/apache/centeconline-access.log combined ErrorLog /var/log/apache/centeconline-error.log

SSLEngine On

</VirtualHost>

Servidores Virtualesvhost Name BASED

<VirtualHost *:80> ServerName www.centeconline.com DocumentRoot /var/www/centeconline/htdocs

CustomLog /var/log/apache/centeconline-access.log combined ErrorLog /var/log/apache/centeconline-error.log

AuthUserFile /var/www/centeconline/.htpasswd AuthType Basic AuthName "Solo Usuarios Autorizados" Require valid-user</VirtualHost>

Control de Accesopor Host

Modulo mod_authz_host

Las directivas Allow y Deny permiten controlar el acceso basados en el nombre de los host o basados en la direccion de los mismos, cuando se solicita un documento. Ambas directivas usan la misma sintaxis.

La directiva Order le dice a Apache el orden en que seran aplicados estos filtros.

Allow from ipAddress

Donde ipAddress es la direccion IP (o parcial), o el nombre totalmente cualificado del dominio deseado. Se puede usar mas de uno separado por espacios.

Control de Accesopor Host

Demostracion

Deny from 10.3.2.1

Los visitantes que vengan de esta direccion no podran ver el contenido cubiertos por esta directiva, o usando el nombre directo del host, totalmente cualificado si es posible

Deny from instructor.curso.com

o Usando direcciones parciales para bloquear rangos completos de red o dominios completosaddress or domain name:

Deny from 192.168.205Deny from excluidos.curso.com otrosrechazados.curso

Control de Accesopor Host

Veamos el Uso de Order

Usando Order le informaremos a Apache el orden en que estas directivas deben ser aplicadas por ejemplo:

Order deny,allowDeny from allAllow from programadores.curso.com

Autentificacion y Autorizacion.htaccess

Aspectos importantes a tener en cuenta en la seguridad de Apache. Autentificación y autorización de usuarios con Apache.

Cuando un servidor apache recibe una petición de una página web, antes de devolver el resultado, lleva a cabo varias acciones para verificar que la petición esta autorizada.

Las distintas acciones que lleva a cabo para verificar la validez de la aplicación, se pueden agrupar en tres tipos:

Autentificación, Autorización y Control de Acceso.

Autentificacion y Autorizacion.htaccess

La autentificación es el proceso por el cual se verifica la identidad de una persona. De una forma simple, este proceso se puede llevar a cabo mediante un nombre de usuario y una contraseña, pero se pueden llegar a utilizar otros métodos para validar la identidad de una persona, como mediante el uso de certificados, tarjetas etc

En apache la autentificación puede estar gestionada por distintos módulos, dependiendo de la forma de implementación. Si decide llevarla a cabo gestionando archivos con listas de usuarios y contraseñas (encriptadas), deberá utilizar el módulo mod_auth.

Sin embargo, si decide llevarla a cabo mediante base de datos, deberá utilizar los módulos mod_auth_dbm.

Autentificacion y Autorizacion.htaccess

La autorización es el proceso por el cual se verifica que un usuario con una identidad conocida, tiene acceso al recurso solicitado.

Para llevar a cabo esta acción, se suelen utilizar listas de permisos en las cuales se enumeran cada una de las acciones que puede realizar un usuario, o las que no puede hacer.

Normalmente, para simplificar la gestión de estos archivos, los usuarios se suelen unir en grupos proporcionando los permisos al grupo.

En apache la autorización a recursos es gestionada o bien mediante la directiva <directory> en el archivo principal de configuración, o bien mediante la configuración de la carpeta a través de archivos .htaccess

Autentificacion y Autorizacion.htaccess

El control de acceso es el proceso por el cual se verifica que la máquina desde la que se ha hecho la petición, tiene acceso al recurso.

Los controles de acceso se utilizan para limitar y controlar las máquinas que tienen acceso a un recurso independientemente del usuario que accede, ya que estos controles se llevan a cabo antes de que se realice el proceso de autentificación.

En apache, el control de acceso se puede llevar a cabo mediante las directivas <directory><files>y <location>, o a través del archivo de configuración .htaccess para controlar una carpeta especifica.

Autentificacion y Autorizacion.htaccess

Para configurar el servidor apache para que sea capaz de autentificar a los usuarios y verificar la autorización del mismo al recurso solicitado, es necesario realizar las siguientes acciones:

1. Crear un archivo con usuarios

2. Crear un archivo con grupos (si es necesario)

3. Definir las directivas en el archivo de configuración o mediante un archivo .htaccess

Autentificacion y Autorizacion.htaccess

En los archivos de usuarios de apache, en cada línea se especifica un usuario, escribiendo el nombre de usuario separado de dos puntos, seguido de la contraseña encriptada con MD5.

En los archivos de grupos de apache, en cada línea se especifica un grupo escribiendo el nombre del grupo seguido de dos puntos, y a continuación separado por espacios, los nombres de los usuarios.

Autentificacion y Autorizacion.htaccess

El archivo de grupos se puede crear manualmente, pero el archivo con los usuarios es recomendable crearlo mediante la utilidad htpasswd, que se encuentra en la carpeta con los binarios de apache.

Para crear un archivo de usuario se utilizará la siguiente sintaxis:

htpasswd -c /usr/local/apache/passwd/passwords centecNew password: clavecentecRe-type new password: clavecentecAdding password for user centec

El flag -c se utiliza para crear un archivo nuevo, por lo que sólo se deberá poner la primera vez que se crea el archivo, sino lo borrará.

Autentificacion y Autorizacion.htaccess

Las directivas de mod_auth necesarias para configurar la autenticación y autorización son las siguientes:

* AuthUserFile: siver para especificar la ruta donde se almacenará el archivo de usuarios.

* AuthGroupFile: sirve para especificar la ruta donde se almacenará el archivo de grupos.

Autentificacion y Autorizacion.htaccess

Por ejemplo, si se desea proteger el directorio /usr/local/apache/htdocs/secretos, puede usar las siguientes directivas, bien sea colocandolas en un archivo .htaccess /usr/local/apache/htdocs/secretos/.htaccess, o colocando en el httpd.conf dentro de la directiva <Directory /usr/local/apache/apache/htdocs/secretos>.

AuthType BasicAuthName "Archivos Secretos"AuthBasicProvider fileAuthUserFile /usr/local/apache/passwd/passwordsRequire user centec

Autentificacion y Autorizacion.htaccess

Crear un nuevo archivo, en la misma ubicación anterior, que se llamará "groups" en la que se almacenarán los grupos, por ahora uno, para ello escribir la siguiente línea y guardar el archivo:

usuariosAutenticados: centec

De esta forma, debería tener un archivo que se llame passwords, y que contenga una línea con los datos del usuario centec.

Y un archivo, con nombre groups, que contiene una línea definiendo un grupo llamado usuariosAutenticados, del que sólo el usuario centec forma parte.

Autentificacion y Autorizacion.htaccess

Modificamos las directivas para el directorio:

<Directory /usr/local/apache/apache/htdocs/secretos>.

AuthType BasicAuthName "Archivos Secretos"AuthBasicProvider fileAuthUserFile /usr/local/apache/passwd/passwordsRequire user centecAuthGroupFile /usr/local/apache/passwd/groupsRequire group usuariosAutenticados

Mejorando el Rendimiento Active solo los modulos requeridos

El Servidor HTTP de apache es un programa modular, donde el administrador puede selecciona la funcionalidad que desea incluir en el servidor (realmente son muchas).

Los modulos pueden ser estaticamente compilados en el binario del servidor o cargados por objetos de Dinamicos (Dynamic Shared Objects DSO), los DSO pueden ser tambien compilados cuando el servidor es generado, o puede usar las apxs, para compilarla y añadirlas posteriormente.

Ejecute apache solo con los modulos requeridos por su instalacion. Esto reduce la carga de memoria y aumente el perfomance del servidor. Los modulos compilados estaticamente generalmente ahorran mas memoria RAM que su contrapartida los DSO

Mejorando el Rendimiento Elija el motor correcto

Apache viene con distintos motores de funcionamiento de multiprocesamiento llamados Multi-Processing Modules (MPMs), los cuales son responsables de manejar los puertos de la maquina, aceptar solicitudes (request), y crear procesos hijos para manejarlas,

SOLO UN MPM SE PUEDE CARGAR EN EL SERVIDOR A LA VEZ.

Mejorando el Rendimiento Elija el motor correcto WORKER

Worker usa multiples procesos hijos, esta diseñado para operar multihilo, donde cada hijo y cada hilo maneja una conexion.

Worker es altamente escalable y rapido, y su uso de memoria RAM es comparativamente bajo.

Esta diseñado para equipos de multiples procesadores, Por otro lado es menos tolerable a fallas de modulos, ya que sus fallas pueden afectar todos los hilos de proceso de un proceso hijo

Mejorando el Rendimiento Elija el motor correcto PREFORK

Prefork MPM usa multiples procesos hijos, cada hijo maneja UNA conexion a la vez pero no es capaz de manejar multihilos.

Prefork esta diseñado para usarse con equipos de procesadores simples, o dobles, su velocidad es comparable a Worker.

Es altamente tolerable a fallas de modulos y caidas de sus procesos Hijos, pero su uso de memoria es alto, mas trafico mas memoria

Mejorando el Rendimiento MaxClients:

El numero maximo de solicitudes simultaneas que es soportado por nuestro servidor.

No mas que este numero de procesos hijos seran creados.

Esto si se fija muy bajo, las conexiones seran colocadas en la cola, lo que eventualmente generara un time-out.

Si se fija muy alto causara que el tiempo de arranque del servidor sea alto, y el tiempo de respuesta se degrade drasticamente,

Mejorando el Rendimiento MaxClients:

El valor puede calcularse aproximadamente mediante:

MaxClients = Total RAM dedicada al servidor web / Tamaño maximo de los procesos Hijo

El tamaño de los procesos hijo se determinan aproximadamente de 2 a 3 MB/cu. para sitios de contenido dinamico ejemplo PHP, esto puede aumentar a 15MB.

Verifiquelo mediante la columna RSS del comando PS

"ps -ylC httpd --sort:rss"

que muestra el uso de la memoria no compartida de los procesos Apache en kilobytes

Mejorando el RendimientoBalanceo de Conexiones Round-Robin DNS

Cuando se tiene un sitio de alta demanda es posible balancear la carga entre varios servidores ("Hosts") que realicen el trabajo.

Cuando llega una requisición para el sitio de alta demanda ésta se distribuye en los diversos "Hosts", comúnmente este balanceo de cargas se puede llevar acabo con un equipo especializado llamado load-balancer.

Sin embargo, es posible utilizar otro método en dado caso que no exista presupuesto o se desee mantener un nivel bajo de complejidad para toda la arquitectura, esta configuración es llamada Round-Robin DNS.

Mejorando el RendimientoBalanceo de Conexiones Round-Robin DNS

Cuando se tiene un sitio de alta demanda es posible balancear la carga entre varios servidores ("Hosts") que realicen el trabajo.

La base de este balanceo de cargas como su nombre lo implica depende de DNS, suponiendo que se requiere realizar balanceo de cargas al sitio www.centeconline.com, en el archivo de zona del DNS para centeconline.com serian agregadas las siguientes lineas:

--www1 IN A 264.141.369.184www2 IN A 264.141.369.185www IN CNAME www1www IN CNAME www2--

Mejorando el RendimientoBalanceo de Conexiones Round-Robin DNS

En el archivo named.conf podrias tener que poner :multiple-cnames yes;

--www1 IN A 264.141.369.184www2 IN A 264.141.369.185www IN A 264.141.369.184www IN A 264.141.369.185--Las ultimas dos lineas alternan el servidor que será utilizado para enviar requisiciones de www.centeconline.com, un servidor es www1 y otro es www2, los servidores www1.centeconline.com y www2.centeconline.com no son utilizados directamente por el usuario sino que los RR (Resource Records) son empleados para redireccionar las requisiciones hacia ellos.

Mejorando el RendimientoBalanceo de Conexiones mod_proxy_balancer

mod_proxy_balancer es un módulo de Apache que te permite crear un balanceador de carga. Este "loadbalancer" recupera las solicitudes de las páginas a partir de dos o más webservers y las entrega a la computadora del usuario -a modo de proxy-.

Una característica importante del mod_proxy_balancer es que no pierde de vista las sesiones, de modo que un solo usuario se ocupa siempre del mismo web server.