Anda di halaman 1dari 14

APACHE EN LINUX

http://www.osmosislatina.com/apache/instalacion.htm
La siguiente instalacin asume que Apache ser instalado en un Sistema Linux .
Primeramente deber revisar que su sistema no tenga instalado Apache, este caso aplica
especialmente a las distribuciones de Linux las cuales generalmente instalan Apache va un RPM al
montar el Sistema Operativo.
La desventaja en este tipo de instalacin prematura es que su estructura puede variar dependiendo de
su distribuidor (Red Hat, Mandrake, Debian, Suse u otro), esto es, Red Hat puede incluir los archivos de
configuracin bajo el directorio /usr/local/apache, mientras Mandrake en /usr/local/httpd y Debian en
/usr/share/apache; para eliminar este RPM se puede ejecutar : rpm -e apache (o dependiendo del
sistema rpm -e httpd )
Para dar mayor uniformidad a esta guia, se compilar el Cdigo Fuente de Apache directamente, en
efecto aprovechando una de las principales cualidades del Software Open-Source
Instalacin Bsica
1. Una vez obtenido el archivo Tar de http://httpd.apache.org que contiene el Cdigo
Fuente(Source-Code) de Apache, este debe ser descomprimido en un directorio temporal ( /tmp
por lo general) para poder iniciar la instalacin.
2. El paso anterior genera un directorio por nombre apache-<numero_de_version> dentro del
directorio temporal ( /tmp ), descienda a este directorio y ejecute el comando:
./configure --prefix=/usr/local/apache
3. Este paso configura el cdigo fuente para que Apache sea instalado bajo el directorio
/usr/local/apache.
4. Posteriormente debe ejecutar :
make; make install
5. Lo anterior compila e instala Apache bajo el directorio /usr/local/apache
6. Aunque Apache ya esta instalado bajo el directorio /usr/local/apache se recomienda movilizar
todo el cdigo fuente de Apache (apache-<numero_de_version> del paso 2) tambin al
directorio /usr/local/apache, y renombrar el directorio a fuente o source, esto resulta esencial
cuando se intenten instalar Mdulos en Apache
7. Tambin es recomendable modificar la variable ambiental PATH del sistema en /etc/bashrc
agregando /usr/local/apache/bin; esto garantiza que cualquier ejecutable de Apache (apachectl,
apxs) este disponible directamente del Shell.

Ejecucin
Apache posee un comando llamado apachectl, el cual facilita el arranque y terminacin de Apache.

1.

apachectl start : Inicia el Servidor de Pginas

2.

apachectl stop : Termina el Servidor Apache

3.

apachectl restart : Re-Inicializa el proceso Apache

Al momento de ejecutar cualquier variacin de apachectl, se lee el archivo principal de configuracin de


Apache, httpd.conf, ubicado en el directorio /usr/local/apache/conf.
httpd.conf
Despus de la instalacin inicial el archivo httpd.conf contiene valores razonables de ejecucin, sin
embargo, en ocasiones es necesario modificar ciertos parmetros, inclusive las dems secciones de
esta guia se basan en cambios significantes a este archivo.
Validacin, # y valores "Default"
Todos los parmetros que se incluyan en httpd.conf sern validados previo arranque de Apache, esto
es, al ejecutar apachectl start (o apachectl restart); la nica excepcin a esto son los renglones que
inicien con el signo: #, ya que estos indican un comentario (al igual que otros archivos en sistemas
*nix).
Debido a la gran cantidad de parmetros modificables en el archivo httpd.conf no sern descritos todos
en esta guia, sin embargo, como ya fue mencionado todos los parmetros poseen valores razonables
por "default".
User, Group, ServerName, Port
Los parmetros User y Group indican el Usuario y Grupo al cual pertenece el proceso de Apache, estos
parmetros bsicamente indican que usuario ser capaz de inicializar y terminar el Servidor Apache,
por lo general se recomienda generar un usuario y grupo especial para esta tarea (Vase
Administracin de Usuarios en Linux ).
User web
Group web
El parmetro ServerName indica el nombre del Servidor que administra Apache, en otras palabras el
sitio en cuestin; esto puede ser www.osmosislatina.com, www.google.com.
Este parmetro no puede ser inventado y depender fuertemente de su configuracin DNS , sin
embargo, si solo esta instalando Apache en un ambiente local ("Workstation","Intranet") se puede
realizar sin necesidad de DNS.
Para realizarse en ambiente local es necesario modificar el archivo /etc/hosts para que pueda realizarse
la resolucin correspondiente, un ejemplo seria:
127.0.0.1 www.osmosislatina.com
127.0.0.1 www.miservidor.com

Lo anterior indica que la maquina local (127.0.0.1) tambin puede ser llamada :
www.osmosislatina.com y www.miservidor.com. (Vea tambin Resolvers en DNS )
Una vez configurado DNS o la resolucin local, se puede definir el parmetro ServerName dentro de
httpd.conf, el parmetro Port indica el puerto TCP sobre el cual responder Apache, este valor en casi
todo ambiente "Web" toma el ampliamente conocido Puerto 80.
ServerName www.osmosislatina.com
Port 80
DocumentRoot, DirectoryIndex
Los pasos anteriores indican a Apache el nombre del sitio que se administra , sin embargo, aun falta
indicar donde se encuentra el contenido de este sitio , esto es, cuando se visite www.osmosislatina.com
que aparecer en Pantalla ? . Hasta este punto si ejecuta Apache y abre su navegador ("Netscape",
"Lynx", "Opera") e intenta visitar el sitio definido en ServerName debe observar la pgina inicial de
Documentacin para Apache, pero como se pueden observar otros documentos ?
El parmetro DocumentRoot indica el directorio local donde reside la informacin del sitio en cuestin,
el valor "default" en httpd.conf es /usr/local/apache/htdocs, en este directorio radica la documentacin
de Apache, desde luego es claro que debe modificar este parmetro hacia el directorio donde reside su
propia documentacin en HTML
El parmetro DirectoryIndex indica el Documento que debe ser enviado al accesar un directorio,
generalmente toma el valor de index.html, inclusive puede tomar varios valores, esto es especialmente
til cuando se emplean ambientes ms elaborados con Perl o Java.
DocumentRoot /usr/local/misitio/
DirecotryIndex index.html, index.htm, index.cgi, home.html
Lo anterior indica que al intentarse accesar cualquier directorio bajo /usr/local/misitio (siempre y
cuando no se indique un archivo especifico), se intentar enviar el archivo index.html, si este no existe,
se intenta con index.htm, seguido de index.cgi, y finalmente si no existiesen ninguno de los anteriores
enviar home.html.
CustomLog y ErrorLog - Registros ("Logs")
Apache puede registrar los accesos y errores del sitio administrado , estos registros son los que ofrecen
estadsticas sobre el numero de visitantes, el origen de cada usuario ( Nodos IP ), los posibles errores,
etc.
Los dos parmetros son CustomLog y ErrorLog los cuales se recomienda sean modificados a un
directorio relacionado con DocumentRoot
Analice estos registros con Analog .
ScriptAlias
Este parmetro es requerido para sitios que utilizan "Scripts"(Programas), generalmente escritos en
Perl , estos "Scripts"(Programas) son los que permiten la generacin de informacin dinmica en un
sitio de Internet. (Vase tambin Aplicaciones de Servidor )
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

Lo anterior indica que cualquier solicitud bajo el directorio cgi-bin, ser atendida por el directorio
/usr/local/apache/cgi-bin/, es dentro de este directorio donde se encontraran los "Scripts" que
ejecutar Apache.
Aparentemente parece excesivo este tratamiento, porque no simplemente basarse en el antes definido
DocumentRoot ? , la primer razn es Administrativa ya que estos "Scripts"(Programas) tienen mayor
probabilidad de generar un error (son programas! y no documentos estticos ) y la segunda razn es
que estos "Scripts" pueden ser compartidos por varios "Sitios", esto se ejemplificar ms en Virtual
Hosting
Lo anterior conforma los parmetros de configuracin bsica para Apache, en las siguientes secciones
se entrar en detalle sobre otras funcionalidades y sus aspectos de configuracin.
Mdulos
Un Mdulo en Apache es una manera de agrupar y (valga de redundancia) Modularizar ciertos
funcionamientos para el Servidor, existen una gran cantidad de Mdulos para utilizarse con Apache,
algunos son: "Virtual Hosting","Mod_JK(Java)" y "Rewrite", una lista se encuentra en :

http://modules.apache.org .
Una de las principales razones de emplear mdulos en Apache, es que no toda instalacin requiere de
las mismas funcionalidades, esto es, una instalacin que utilice PHP probablemente no requiera de
Tomcat (Java) , o bien posiblemente no todas las instalaciones requieran de "Virtual Hosting".
Por lo tanto, si fueran incluidas todas las funcionalidades posibles en una versin nica de Apache, esto
lo hara sumamente pesado en cuanto a requerimientos de Memoria RAM y espacio en Disco Duro, por
esto se opta por modularizar e incluir solo lo necesario
Para verificar cuales son los mdulos que se encuentran instalados en el Sistema se puede ejecutar el
comando httpd -l, este comando despliega algo como:
http_core.c
mod_env.c
mod_log_config.c
..
..
Lo anterior representan los mdulos "Default" incluidos al instalar y compilar Apache

Tipos de Mdulos
Los mdulos son distribuidos de dos maneras:

En el cdigo fuente de Apache: Estos estn incluidos en el Tar principal de Apache.(Ejemplo:


"Virtual Hosting","Rewrite")

Por 3eros: Se distribuyen en productos utilizados en conjuncin con Apache. (Ejemplo: Mod_JK
(Java))

En Cdigo Fuente

Al instalar y compilar Apache se recomend trasladar el cdigo fuente a un directorio llamado fuente o
source esto se debi precisamente a que varios mdulos residen aqu. Dentro de este directorio (fuente
o source) reside un archivo llamado config.status el cual contiene informacin para integrar mdulos en
Apache. Se recomienda no modificar manualmente este archivo , sino a travs de la linea de
comandos
Instalacin de Mdulos
Para instalar mdulos, el primer mdulo que debe ser activado es el mdulo para mdulos, esto se
realiza mediante el comando:
./config.status --activate-module=src/modules/standard/mod_so.c
El comando anterior agrega mod_so (el mdulo de mdulos) a config.status; para instalar otros
mdulos se utilizan parmetros similares:
./config.status --enable-module=proxy
Agrega el mdulo proxy el cual es utilizado para otorgar "Virtual Hosting" en Apache.
Recompilar y Reinstalar
Una vez modificado el archivo config.status acordemente se debe recompilar y reinstalar Apache, para
esto basta ejecutar lo siguiente: (dentro del mismo directorio fuente o source)
make; make all; make install
El comando anterior re-instala y re-compila Apache, bajo el mismo directorio original
(/usr/local/apache)
Verificar Instalacin
Para verificar que la re-instalacin-complacin de los nuevos mdulos fue exitosa debe reiniciarse
Apache con : apachectl restart y posteriormente verificar los mdulos mediante httpd -l
Al ejecutarse httpd -l, en este caso en particular, debern aparecer las siguientes lineas:
...
mod_so.c
...
mod_proxy.c
...
...
Lo anterior indica que Apache contiene el mdulo mod_so empleado para utilizar mdulos y el mdulo
proxy (utilizado por "Virtual Hosting").
De 3eros
Generalmente todo producto que pretende cooperar con Apache incluye el mdulo y las instrucciones
para crearlo.
Sin embargo, estos mdulos poseen dos caractersticas particulares

Deben incluirse en el directorio /usr/local/apache/libexec/

Y utilizan la herramienta apxs proporcionada con Apache para su generacin

En otra seccin de esta guia se describe la instalacin del Mdulo Mod_JK(Java) utilizado para coordinar
el "Servlet-Engine" Tomcat con Apache . Adems, puede consultar la instalacin del mdulo PHP para
Apache descrito en la Guia de Apache 2, aunque para otra versin, el proceso de instalacin tambin es
aplicable a la versin 1.x de Apache.
Que es "Virtual Hosting" ?
Antes de entrar en detalle sobre "Virtual Hosting" es conveniente aclarar que es "Virtual Hositing".
Como su nombre lo implica se trata de "Hosts" virtuales, pero que significa esta virtualidad ? , en el
caso de Apache es la facilidad de administrar ms de un sitio de una manera sencilla y eficiente en un
solo "Host"(Computadora Fsica) ,ejemplo:
En la configuracin de httpd.conf en ServerName se indica el nombre del sitio que administra Apache,
si despus pretende administrar el contenido para: xml.desarrollo-osmosis.com y clientes.com esto no
necesariamente implica que debe instalar Apache dos veces ms, ni tampoco que debe instalar dos
"Hosts"(Computadoras Fsicas) para administrar estos sitios nuevos; lo anterior se resuelve fcilmente
a travs de "Virtual Hosting"
NOTA: Existe otro caso que es denominado "Virutal Hosting" el cual se da con un sitio de "alto trafico",
esto tipo de "Virtual Hosting" se da cuando un "Host"("Computadora Fsica") no es capaz de absorber la
carga de un sitio por si sola, a diferencia de la solucin con Apache este tipo de situacin se soluciona
Mltiples Direcciones IP y Round Robin DNS y "Load Balancers" .
Mdulo Proxy
El primer paso es verificar que Apache sea capaz de utilizar "Virtual Hosting", para esto se requiere que
el mdulo proxy este habilitado, si ejecuta el comando httpd -l debe aparecer una linea con
mod_proxy.c, de no ser as , entonces debe instalar este mdulo; en Mdulos de Apache se describe el
procedimiento.
Configuracin DNS
Esta configuracin es parte critica de cualquier "Virtual Hosting", de otra manera no sera posible
atender las requisiciones de los diversos sitios en Internet, vea tambin la Guia de DNS .
Sin embargo, si solo requiere realizarlo en un ambiente local es posible modificar /etc/hosts e incluirle
los distintos sitios:
127.0.0.1 www.osmosislatina.com
127.0.0.1 www.filantropia.org
127.0.0.1 www.burocratas.gob
Lo anterior permite al Resolver del "Host" identificar que cualquier solicitud para
www.osmosislatina.com, www.filantropia.org, www.burocratas.gob sea enviada a la maquina local
(127.0.0.1).
httpd.conf

La configuracin del archivo /etc/hosts o DNS no servira de mucho si al llegar la requisicin al "Host"
no supiera que hacer con estas, para esto es necesario realizar las modificaciones al archivo principal
de Apache httpd.conf.
En una instalacin de Apache con un solo sitio se emplea el parmetro ServerName para indicar el sitio
al cual se esta administrando informacin, sin embargo , cuando se requiere administrar varios sitios se
utiliza el parmetro VirutalHost.
NameVirtualHost , VirtualHost
El primer paso para configurar "Virtual Hosting" es eliminar (comentar) el parmetro ServerName y
substituir lo por NameVirtualHost.
#ServerName www.osmosislatina.com
Port 80
NameVirtualHost 127.0.0.1
Posteriormente es necesario definir las respectivas secciones para cada VirtualHost
<Virtual Host 127.0.0.1>
ServerName www.osmosislatina.com
DocumentRoot /www/osmosislatina/
ErrorLog /www/osmosislatina/log_errores
</Virtual Host>
<Virtual Host 127.0.0.1>
ServerName www.filantropia.org
DocumentRoot /www/beneficio/
DirectoryIndex ayuda.htm, index.htm
</Virtual Host>
<Virtual Host 127.0.0.1>
ServerName www.burocratas.gob
DocumentRoot /www/gobierno/
ScriptAlias /cgi-bin/ "/usr/local/impuestos/"
</Virtual Host>
El primer detalle de cada "Virtual Host" es que sus definiciones se encuentran delimitadas por <Virtual
Host 127.0.0.1> y </Virtual Host> (este es un ejemplo bsico del uso de XML ); el nodo IP 127.0.0.1
debe coincidir precisamente con aquel definido en NameVirtualHost.
Notar que dentro de cada definicin se encuentran parmetros que ya se mencionaron en la
configuracin inicial de Apache , y son estos parmetros los que rigen el comportamiento de cada
sitio.El primer "Virtual Host" indica que toda solicitud para www.osmosislatina.com debe ser respondida
con documentacin del directorio /www/osmosislatina; el segundo "Virtual Host" con documentacin
del directorio /www/beneficio y www.burocratas.gob del directorio /www/gobierno
Porque se necesita Tomcat para ejecutar Java en Apache ?
El funcionamiento principal de Apache desde su creacin fue la de aceptar y responder requisiciones de
Pginas en Internet, y como fue mencionado en Servidores de Pginas y "Java Application Servers" ,
estas requisiciones correspondan a documentos estticos (puro HTML ), es por esto que cuando se
requiere ejecutar algn tipo de contenido dinmico (programas) como "Java", es necesario coordinar
los esfuerzos de Apache con otro ambiente, en el caso de "Java" es precisamente "Tomcat" quien ofrece

facilidades para ejecutar los dos componentes ms utilizados en ambientes "Java": "JSP ("Java Server
Pages")" y "Servlets".
Grficamente

En esta guia se hablar exclusivamente sobre la linea verde del diagrama, donde el Servidor de Pginas
es "Apache" y el Servlet Engine es "Tomcat".
Pasos Previos

Instalacin de Tomcat

Creacin del Mdulo Mod_JK


El mdulo Mod_JK es aquel utilizado por Apache para comunicarse con "Tomcat", debido a que este
mdulo es externo de Apache, se incluye en la distribucin de Cdigo Fuente de "Tomcat" , a
continuacin se mencionan los pasos a seguir para su creacin
1. Obtener el archivo Tar con el Cdigo Fuente de "Tomcat" (no el binario!).
2. Descomprimir el Cdigo Fuente de "Tomcat" en un directorio temporal (generalmente /tmp) ,
esto genera un directorio por nombre jakarta-tomcat-<numero_de_version>-src .
3. Ahora se debe descender dentro de jakarta-tomcat-<numero_de_version>-src al directorio
src/native/apache1.3.
4. Dentro de este directorio se debe ejecutar el siguiente comando:
apxs -o mod_jk.so -I../jk -I/usr/local/jdk/include/ -I/usr/local/jdk/include/linux -c *.c ../jk/*.c
apxs es un comando incluido en Apache utilizado para compilar mdulos empleados por
productos que operan en conjuncin con Apache.
Las letras -I en la instruccin indican los directorios que deben ser incluidos al compilar el
mdulo; en el caso anterior el directorio /usr/local/jdk indica el directorio base del JDK de Java.
(Vea instalacin de Tomcat para ms detalles sobre el JDK)
5. Una vez ejecutado el comando anterior exitosamente, se genera el archivo mod_jk.so dentro del
directorio.(Este es el Mdulo en s)
Instalacin del Mdulo Mod_JK

Para instalar el mdulo en Apache primeramente se debe copiar el Mdulo (mod_jk.so) al directorio
/usr/local/apache/libexec, para que este disponible en Apache.
A diferencia de los mdulos incluidos en Apache los cuales generalmente requieren que Apache sea recompilado-instalado, el mdulo Mod_JK solo requiere de unas modificaciones al archivo general de
configuracin httpd.conf .
httpd.conf
Los parmetros para incluir el mdulo Mod_JK son los siguientes:
LoadModule jk_module libexec/mod_jk.so
AddModule mod_jk.c
JkWorkersFile /usr/local/tomcat/conf/workers.properties
JkLogFile /usr/local/tomcat/log/mod_jk.log
JkLogLevel warn

Las primeras dos lineas LoadModule y AddModule indican que el mdulo debe ser cargado y
agregado, respectivamente.

JkWorkersFile le indica muy especficamente a Apache como comunicarse con "Tomcat", este
archivo aunque utilizado primordialmente por Apache se incluye en "Tomcat" (he ah la razn por la
cual reside en /usr/local/tomcat/conf), este archivo debe ser modificado para contener los
siguientes parmetros:
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/jdk
ps=/
worker.list=ajp12, ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
Obviamente el entrar en detalle sobre que o porque hay worker.properties sale sobrando!, pero lo
que se esta indicando en este archivo es que "Apache" se comunicar con "Tomcat" mediante el
protocolo ajp13 (otra alternativa sera ajp12), que "Tomcat" tambin reside en el mismo "Host"
local y esta utilizando el puerto TCP 8009 para atender solicitudes; inclusive si observa la ejecucin
de Tomcat notar que "Tomcat" activa estos puertos al iniciarse.

JkLogFile y JkLogLevel indican el lugar donde sern enviados errores relacionados con Apache y
"Tomcat" y el nivel de errores reportados , respectivamente.

JkMount
Hasta este punto ya estn configurados casi todos los aspectos relacionados con "Tomcat" y "Apache",
solo falta uno: Como indicar a Apache que solicitudes deben ser enviadas a Tomcat ?, esto es, si ya se
disearon 5 o 10 programas en "Java" ( JSP y/o Servlets ) como se coordinan estas con la informacin
que actualmente es enviada por Apache ?
Se utiliza el parmetro JkMount dentro de httpd.conf:
JkMount /*.jsp ajp13
JkMount /servidordatos/Insertar ajp13

La declaracin indica que toda requisicin terminada en jsp (un Java Server Page), ser enviada por
Apache va el protocolo ajp13 , este protocolo da precisamente a Tomcat, como fue mencionado en
workers.properties; la segunda declaracin indica que una requisicin para el archivo Insertar bajo el
directorio servidordatos tambin debe ser enviada a "Tomcat".
Ntese el nfasis en enviada, el hecho de que sea enviada no implica xito, una vez enviada la solicitud
el mismo "Tomcat" debe estar configurado apropiadamente para atender estas solicitudes, pero bueno ,
esto es tema de Tomcat .
Si se utilizan "Virtual Hosts" ?
Al igual que todo parmetro en httpd.conf , basta incluirlo en el segmento de "Virtual Host":
<Virtual Host 127.0.0.1>
ServerName www.filantropia.org
DocumentRoot /www/beneficio/
DirectoryIndex ayuda.htm, index.htm
JkMount /donaciones/Intl
JkMount /donaciones/Local
</Virtual Host>
Cuidado con muchos JkMount's !
Si empieza a utilizar muchos JkMount's solo significa una cosa: La mayor parte del trabajo la esta
realizando "Tomcat" ya que todo se esta enviando hacia "Tomcat", en este caso es conveniente
eliminar "Apache" de la Arquitectura y que "Tomcat" reciba las requisiciones directamente; si observa la
grfica inicial este caso se da con la linea roja y ser descrito a mayor detalle en la configuracin de
Tomcat .
Si de cualquier manera opta por mantener "Apache" en la Arquitectura se recomienda el uso del
parmetro Include al definir una gran cantidad de JkMount's, esto incrementa la legibilidad de
httpd.conf y reduce la carga Administrativa de mantener diversos JKMount's; el archivo httpd.conf
cambiara a:
# Ningun JkMount Aqui
Include /usr/local/apache/conf/mijava.txt
Y sera dentro del archivo mijava.txt donde se incluyen los JkMount's
JkMount
JkMount
JkMount
JkMount
JkMount
JkMount
JkMount
JkMount

/*.jsp ajp13
/servidordatos/Insertar ajp13
/servidor/Actualizar ajp13
/servidor/Eliminar ajp13
/foros/Insertar ajp13
/foros/Eliminar ajp13
/registro/Nuevo ajp13
/foros2/Insertar ajp13

Acceso Privilegiado por Directorios


Por lo general el acceso privilegiado a ciertas secciones de un sitio en Internet no estn en amplio uso,
y una de las principales razones de esta situacin es que la mayora de los sistemas de acceso estn
diseados alrededor de una base de datos que mantenga nombres de usuarios y contraseas , adems
de esto es necesario disear el sitio con aplicaciones de servidor que sean capaces de utilizar esta

10

informacin de acceso, generalmente JSP (Java Server Pages),Servlets, ADP (Aol Dynamic Pages) o
ASP (Active Server Pages) de Microsoft.
Si bien es costoso mantener una base de datos ya sea por administrarla o bien por requerir de un
proveedor de servicios con bases de datos, el desarrollar un sitio alrededor de tecnologas orientadas a
programacin (JSP,Servlets,ADP's u otra tecnologa ) a diferencia de HTML con fotografas GIF/JPEG
eleva su tiempo de desarrollo posiblemente hasta 5 veces ms, por lo tanto si solo requiere permitir el
acceso privilegiado de ciertos documentos HTML a sus 15 o 30 clientes, el utilizar este tipo de
tecnologas de acceso seria no solo excesiva sino muy costosa , Apache ofrece una alternativa con su
mdulo mod_auth .
Si ejecuta el comando httpd -l como usuario raz debe observar el mdulo mod_auth en la lista, si no
se encuentra tendr que recompilar Apache para utilizar este mdulo (Vea Mdulos en Apache ).
.htpasswd
En las instalaciones que utilizan el mdulo mod_auth debe existir un archivo que contenga los nombres
y contraseas de los usuarios que utilizarn el servicio de acceso privilegiado, por lo general este
archivo es llamado .htpasswd , aunque si as lo desea puede llamarlo de cualquier otra forma como
observar a continuacin.
Este archivo esta compuesto de una forma muy sencilla que se muestra a continuacin :
exportacion:grfw345Lsd9zM
importacion:efv2dg05234bl
clientes:3fvswe5TCdvAz
Consiste del nombre del usuario y la contrasea que ser utilizada para el acceso, para generar este
archivo (.htpasswd) se utiliza el comando htpasswd ofrecido por Apache. El comando se utilizara de la
siguiente manera: htpasswd -c /webroot/osmosis/www/.htpasswd daniel , la ejecucin de este
comando genera el archivo .htpasswd bajo el directorio /webroot/osmosis/www/ del sistema y agrega
el usuario daniel .
Una vez ejecutado este comando se solicitar la contrasea que utilizar el usuario; el uso del
parmetro -c indica que debe generarse el archivo, si despus agrega usuarios a este archivo omita el
parmetro -c ya que sobre-escribir el archivo existente si no lo hace.
El archivo .htaccess
Una vez existiendo el archivo con usuarios y contraseas en el sistema, solo es cuestin de definir el
acceso por directorio, para esto se utiliza un archivo llamado .htaccess que residir bajo el directorio
que se intenta proteger con contrasea, esto es , cada vez que Apache reciba una solicitud revisara si
existe un archivo con nombre .htaccess ; cabe sealar que en ocasiones no es utilizado el nombre
.htaccess para este archivo, muchos administradores de sistemas cambian este nombre debido al uso
extenso de .htaccess ,pero esto solo es medida de seguridad. El parmetro AccessFileName dentro del
archivo de configuracin Apache (httpd.conf), indica el nombre del archivo que debe ser buscado para
controlar el acceso a un directorio, que como se mencion toma un valor "default" de .htaccess
Suponiendo que desea restringir el acceso a un Directorio-Web,proyectos
(www.osmosislatina.com/proyectos), debe colocar un archivo llamado .htaccess bajo este

11

subdirectorio, esto no solo restringir el acceso al directorio proyectos sino tambin a todo aquel bajo
proyectos , ntese que .htaccess debe iniciar con ". (punto)" para que no sea visible en el directorio, un
archivo .htaccess puede ser el siguiente:
AuthName "Zona de Proyectos de Osmosis Latina"
AuthType Basic
AuthUserFile /webroot/osmosis/www/.htpasswd
require user importacion
El parmetro AuthName indica un mensaje que debe ser desplegado en la ventana que solicita la
autorizacin, AuthType siempre toma un valor Basic (tipo nico), mientras que AuthUserFile indica la
ubicacin del archivo que contiene los nombres y contraseas del sistema (definido anteriormente) y la
ultima linea require user importacion especifica el usuario que tendr acceso a este directorio; inclusive
este ultimo rengln puede incluir varios usuarios: require user importacion clientes,sin embargo, si se
van agregar varios usuarios es ms conveniente agruparlos de la siguiente manera.
El archivo .htgroup
Este archivo similar a .htaccess define grupos de usuarios que estn definidos dentro de .htaccess , su
forma es la siguiente:
mexico: exportacion importacion clientes
us: clientes tramites
brasil: importacion manufactura finanzas
Una vez definido el archivo .htgroup es posible utilizarlo dentro de cualquier archivo .htaccess , un
ejemplo a continuacin.
AuthName "Zona de Proyectos de Osmosis Latina"
AuthType Basic
AuthUserFile /webroot/osmosis/www/.htpasswd
AuthGroupFile /webroot/osmosis/www/.htgroup
require group mexico
A diferencia del .htaccess anterior, se incluye un linea nueva que indica la ubicacin del archivo
.htgroup , adems se modifica la ltima linea con el parmetro group ; este archivo permitir el acceso
a los usuarios pertenecientes al grupo mexico(exportacion importacion clientes).
Redireccionar requisiciones al nivel de Servidor
Es casi un hecho que conforme crece un sitio en Internet, la estructura del mismo cambiara
drsticamente, estos cambios presentan un serio problema administrativo que en una gran cantidad de
ocasiones es desatendido o bien tratado de una manera muy deficiente.
El mayor problema que presenta el cambio de estructura para un sitio es el surgimiento de links
muertos: los afamados 404 Document Not Found , estos errores con el cambio de estructura son casi
inevitables por dos razones:

Un sitio con una gran cantidad de link's eventualmente contendr algn link interno que lleve a un
documento que ya no existe o ha cambiado de nombre.

Inclusive, aunque el problema anterior sea resuelto, considerando como operan los motores de
bsqueda (Search-Engines) (pueden tardar hasta 5-6 meses en revisitar una pgina) , estos
seguramente contendrn varios links antiguos que algn usuario puede seguir y recibir un error.

12

La forma ms comn de solucionar este problema hoy en da es substituyendo la pgina antigua por
otra pgina que re-direccione al usuario a la nueva locacin, sin embargo, esto no solo es ineficiente
con mensajes como: En unos segundos ms ser enviado a otro lugar , sino eventualmente puede ser
un carga administrativa substancial, aunque claro, es preferible esto a recibir un error.
Es posible agregar al servidor un mapa de direcciones, para que este realice el redireccionamineto
internamente, esto no solo eficientiza el procesar la requisicin sino tambin aisla al usuario final ya
que no percibe tal cambio. A su vez es posible mantener este mapa sobre cualquier cambio en un
archivo central, limitando la carga administrativa, para este funcionamiento es utilizado el mdulo
mod_rewrite de Apache.
Mdulo mod_rewrite
Al igual que el mdulo mod_auth debe verificar que mod_rewrite este disponible , si ejecuta el
comando httpd -l como usuario raz debe observar el mdulo mod_rewrite en la lista, si no se
encuentra tendr ; que recompilar Apache para utilizar este mdulo (Vea Mdulos en Apache ).
La configuracin bsica de mod_rewrite es relativamente directa, suponga que la pgina principal del
sitio ha cambiado de index.htm a home.htm, a travs de mod_rewrite se realiza esta redireccin
agregando las siguientes lineas al archivo principal de Apache (httpd.conf):
RewriteEngine on
RewriteLogLevel 0
RewriteRule ^http://www\.redireccion\.com/index\.htm$ home.htm [R]
La primer linea indica que el mdulo mod_rewrite sea activado, el segundo parmetro es utilizado para
indicarle a Apache que no debe ser generado ningn tipo de registro ("log") para las redirecciones
realizadas; la tercer linea representa la regla para realizar la redireccin y es descrita continuacin.
El parmetro RewriteRule indica el inicio de una regla de redireccin, la primer definicin representa el
URL ("Universal Resource Locator") que ser; redireccionado donde la descripcin de ste URL es
definido a travs de Regular Expression. El signo ^ indica el inicio del URL mientras $ indica el final, el
uso del "backslash" (\) representa un escape para indicar un punto (.) literalmente; el uso de los signos
anteriores es parte de regular expressions y no de Apache. Una vez definido el regular expression se
define el archivo de redireccin, en este caso home.htm. Las definiciones anteriores son suficientes
para realizar la redireccin, sin embargo, el uso del parmetro [R] permite que el URL regresado al
navegador ("Netscape" o "Explorer") despliegue el URL nuevo, esto es, si se omite [R] el usuario final
seguir observando el URL http://www.redireccion.com/index.htm (con el contenido de home.htm por
supuesto) y al agregarse [R] el usuario observar http://www.redireccion.com/home.htm, las
implicaciones de utilizar [R] generalmente son sobre algn "bookmark" que pudo haber definido el
usuario final en su navegador ("Explorer" o "Netscape").
En dado caso que todos los archivos principales de directorio en un sitio hubieran cambiado de
nombre, se definira el rengln RewriteRule de la siguiente manera:
RewriteRule index\.htm$ home.htm [R]
La definicin anterior redirecciona todo archivo terminado en index.htm a otro llamado home.htm, lo
anterior demuestra la gran flexibilidad de mod_rewrite. El uso de mod_rewrite no slo puede ser
llevado acabo al nivel global de Apache, esto es, en el archivo httpd.conf, sino que sus parmetros

13

tambin pueden ser colocados dentro de las definiciones de Virtual Hosts , en los .htaccess utilizados
en mod_auth , por directorios, etc; lo anterior permite que el redireccionamiento sea llevado acabo de
una forma ms selectiva.
Como se mencin al inicio, lo anterior son solo las configuraciones bsicas para mod_rewrite ya que
tambin es posible realizar redireccionamientos en base de la hora del da, balanceo de Carga (RoundRobin DNS) y otras facilidades ms.
Y los dems valores ?
Otro detalle de la configuracin anterior es que dentro de cada "Virtual Host" no se declaran los mismos
parmetros, el "Virtual Host" www.osmosislatina.com define que sus errores deben ser enviados a
/www/osmosislatina/log_errores mientras www.filantropia.org define el parmetro DirectoryIndex y los
dems "Virtual Hosts" no.
De donde toman los valores no definidos los "Virtual Hosts" ? , De los parmetros definidos por fuera
de cada seccin, esto es, se asume que si dentro de cada seccin de "Virtual Host" no se define un
parmetro especifico se toma el valor global definido en httpd.conf
Si el valor ErrorLog(global) tiene el valor de /usr/apache/errors_log todo error de cualquier sitio ser
enviado a esta seccin siempre y cuando no haya sido definido dentro de "VirtualHost". El mismo caso
seria para DirectoryIndex,CustomLog y los dems parmetros disponibles en httpd.conf.
Finalmente en la configuracin se puede observar que nuestros amigos de gobierno en
www.burocratas.gob requieren tener su propio directorio de "Scripts"(Programas), mientras los dems
sitios pueden compartir aquel valor definido globalmente en ScriptAlias.

14

Anda mungkin juga menyukai