Está en la página 1de 21

El 

servidor  HTTP  Apache  es  un  servidor  HTTP  de  código  abierto  para 
plataformas  Unix  (BSD,  GNU/Linux,  etcétera),  Windows  y  otras,  que 
implementa el protocolo HTTP/1.1 (RFC 2616) 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 originalmente Apache consistía solamente en un 
conjunto  de  parches  a  aplicar  al  servidor  de  NCSA.  Era,  en  inglés,  a 
patchy server (un servidor parcheado).

   
¿Quién usa Apache?

Apache  es  el  servidor  web  mas  usado  en  el  mundo  actualmente  Esta 
información puede corroborarse en

http://news.netcraft.com/archives/web_server_survey.html

Comparación de Web Servers

Se  puede  consultar  una  lista  de  comparación  de  servidores  web  en 
Wikipedia:

http://en.wikipedia.org/wiki/Comparison_of_web_servers
   
Versión 2.x

El  núcleo  2.x  de  Apache  tiene  varias  mejoras  clave  sobre  el  núcleo  de 
Apache 1.x. Estas mejoras incluyen threads de UNIX, mejor soporte para 
plataformas no Unix (como Windows), un nuevo API, y soporte de Ipv6

Módulos

La arquitectura del servidor Apache es muy modular. El servidor consta de 
un  sección  core  y  mucha  de  la  funcionalidad  que  podría  considerarse 
básica para un servidor web es provista por módulos. Algunos de estos 
son:

   

 mod_ssl Comunicaciones Seguras vía TLS.

 mod_rewrite  Reescritura de direcciones servidas (php a html)

  mod_auth_ldap Permite  autentificar  usuarios  contra  un  servidor 
LDAP.

 mod_proxy_ajp Conector a Jakarta Tomcat (Java, servlets y JSP).

El  servidor  de  base  puede  ser  extendido  con  la  inclusión  de  módulos 
externos entre los cuales se encuentran:


 mod_perl Páginas dinámicas en Perl.

 mod_php Páginas dinámicas en PHP.

 mod_python Páginas dinámicas en Python.

 mod_ruby Páginas dinámicas en Ruby.
   

 mod_aspdotnet Páginas dinámicas en .NET_de_Microsoft.
Archivos de configuración


/etc/apache2/apache2.conf


/etc/apache2/httpd.conf


/etc/apache2/sites­availables


/etc/apache2/sites­enabled


/etc/apache2/mods­availables


/etc/apache2/mod­enabled
   

/etc/apache2/ports.conf
Directivas: Conjunto de “Instrucciones que definen el comportamiento del 
servidor Apache. Algunas de estas directivas son:


NameVirtualHost addr[:port]
Designa una dirección IP para usar hosting virtual basado en nombres


<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
Contiene las directivas que se aplican solo a un nombre de host específico 
o dirección IP


DocumentRoot /una/ruta  
Directorio principal que contiene la estructura de directorios visible desde la 
web
   

Alias URL­path file­path|directory­path
Mapea  URLs  a  ubicaciones  en  el  sistema  operativo.  La  directiva  Alias 
permite  que  los  documentos  sean  guardados  en  otros  directorios 
distintos a los guaradso en DocumentRoot. 

Ejemplo: Alias /image /ftp/pub/image


ScriptAlias URL­path file­path|directory­path

Similiar a la directiva Alias excepto que marca el directorio destino como un 
directorio que contiene scripts CGI que serán procesados por el  módulo 
mod_cgi

  Ejemplo: ScriptAlias /cgi­bin/ /web/cgi­bin/ 
 
<Directory directory­path> ... </Directory>
Engloba a un grupo de directivas que se aplicarán solamente al directorio 
del sistema de ficheros especificado y a sus subdirectorios

UserDir directory­filename
Directiva que indica en cual directorio buscar las páginas de los usarios del 
sistema

Ejemplo: UserDir public_html

ErrorLog file­path|syslog[:facility]
La directiva ErrorLog directive confgura el archivo donde se guardaran los 
errores que encuentre el servidor.
   
Ejemplo:  ErrorLog /var/log/httpd/error_log
Iniciando el Servicio

Para iniciar el servidor Apache, se pueden emplear  3 formas:

 apache2: 

Es  el  programa  que  inicia  el  servidor  HTTP  Apache.  Está  diseñado  para 
correr como un proceso demonio standalone. Cuando se inicia el servidor de 
esta forma, se creará un pool de procesos hijos para manejar las peticiones. 
Para detener el servicio se debe enviar la señal TERM al proceso inicial (el 
padre)

 /etc/init.d/apache2 (start/stop/restart/reload)

 Este es un script que invoca al programa apache2, o al programa apache2ctl 
 

para iniciar, detener o recargar configuraciones del servidor Apache.
 apache2ctl  

Herramienta  para  controlar  el  servidor  Apache,  diseñada  para  ayudar  al 
administrador a manejar el demonio apache2. Algunas de las opciones son:

  ­D name          : define a name for use in <IfDefine name> directives
  ­d directory      : specify an alternate initial ServerRoot
  ­f file                : specify an alternate ServerConfigFile
  ­C "directive"   : process directive before reading config files
  ­c "directive"    : process directive after reading config files
  ­v                     : show version number
  ­V                    : show compile settings
  ­l                      : list compiled in modules
  ­L                     : list available configuration directives
   
  ­S                     : a synonym for ­t ­D DUMP_VHOST
Hosting Virtual en Apache


El  término  Hosting  Virtual  se  refiere  a  hacer  funcionar  más  de  un  sitio 
web  (tales  como  www.company1.com  y  www.company2.com)  en  una 
sola máquina. 


Los sitios web virtuales pueden estar "basados en direcciones IP", lo que 
significa que cada sitio web tiene una dirección IP diferente, o "basados 
en  nombres  diferentes",  lo  que  significa  que  con  una  sola  dirección  IP 
están  funcionando  sitios  web  con  diferentes  nombres  (de  dominio).  El 
hecho  de  que  estén  funcionando  en  la  misma  máquina  física  pasa 
completamente desapercibido para el usuario que visita esos sitios web.

   
Notas:


Crear configuraciones de hosts virtuales en su servidor Apache no hace 
que mágicamente se creen las entradas del DNS para esos servidores


Usted  debe  configurar  el  servidor  de  DNS,  para  que  esos  nombres  de 
host resuelvan a una dirección IP, de lo contrario nadie podrá ver su sitio 
web

   
Host Virtuales Basados en Nombres


Con este tipo de hosting solo se necesita configurar el servidor de DNS 
para  que  mapee  cada  dominio  a  una  dirección  IP,  y  luego  configurar  el 
servidor APACHE para que reconozca cada uno de estos dominios.


Podemos  tener  un  servidor  con  una  única  dirección  IP,  y  configurar  el 
servidor de DNS con múltiples dominios apuntando a esa única máquina. 
Por  ejemplo,    tener  un  servidor  para  los  dominios  www.dominio1.org  y 
www.dominio2.org. 


El hecho de  que estén  alojados varios sitios web en un mismo servidor 
no será  notado por el usuario final.
   
Ejemplo:

NameVirtualHost *

<VirtualHost *>
        DocumentRoot /var/www/dominio1
        ServerName www.dominio1.org
</VirtualHost>

<VirtualHost *>
        DocumentRoot /var/www/dominio2
        ServerName www.dominio2.org
</VirtualHost>
   
Host Virtuales Basados en IP


Se usa cuando un servidor posee mas de una dirección IP, y se quiere 
tener  un  servidor  para  www.dominio5.org  y  www.dominio6.org  en 
diferentes direcciones IP.


Los hosts basados en IP requieren de una dirección IP por cada servidor 
virtual.  Esto  se  puede  conseguir  haciendo  que  la  máquina  tenga  varias 
conexiones físicas a la red, o a través de interfaces virtuales (IP alias)

   
Ejemplo:

NameVirtualHost 192.168.2.5

<VirtualHost 192.168.2.5>
        DocumentRoot /var/www/dominio5
        ServerName www.dominio5.org
</VirtualHost>

NameVirtualHost 192.168.2.6

<VirtualHost 192.168.2.6>
        DocumentRoot /var/www/dominio6
        ServerName www.dominio6.org
   
</VirtualHost>
Hosting virtual basado en nombres vs Hosting virtual basado en IP 

En  general,  se  debe  usar  servidores  virtuales  basado  en  nombre  a  menos 
que  se  tenga  una  razón  específica  para  usar  servidores  basado  en  IP. 
Algunas de estas razones pueden ser.


  Navegadores  antiguos  que  no  sean  compatibles  con  las  peticiones  HTTP 
requeridas para el manejo de servidores virtuales por nombre.


  Los  servidores  virtuales  basado  en  nombres  no  pueden  ser  usados  con 
servidores SSL, dado la naturaleza del protocolo SSL.


  Algunos  sistemas  operativos  y  equipos  de  red  implementan  técnicas  de 
manejo de ancho de banda que no pueden diferenciar entre hosts a menos 
   
de que estén en direcciones IP separadas.
mod_auth

Este módulo permite el usar de autenticación básica HTTP para restringir 
el acceso usando un archivo de contraseñas 

Ejemplo:


Crear el archivo de contraseñas

 htpasswd ­c Filename username

   
Incluir  las  siguientes  directivas  a  la  sección  Directory  para  el  directorio  a 
restringir:

        <Directory /var/www/dominio1/mods>
                AuthType Basic
                AuthName "Area privada"
                AuthUserFile /etc/apache2/passwd.db
                AuthAuthoritative on
                Require valid­user
        </Directory>

Nota: También se pueden poner las opciones en el archivo .htaccess del 
directorio a restringir.
   
Restringiendo el acceso a través del archivo .htacces

También  se  pueden  poner  las  directivas  en  el  archivo  .htaccess  del 
directorio a restringir. En este caso solo sería:

                AuthType Basic
                AuthName "Area privada"
                AuthUserFile /etc/apache2/passwd.db
                AuthAuthoritative on
                Require valid­user

Nota:  Si  planea  usar  archivos  .htaccess,  necesitará  tener  una 


configuración  en  el  servidor  que  permita  poner  directivas  de 
autentificación  en  estos  archivos.  Esto  se  logra  con  la  directiva 
  AllowOverride AuthConfig  
mod_rewrite

RewriteEngine On

#  let the server know that we were reached via /xyz and not
#  via the physical path prefix /abc/def
RewriteBase   /xyz

#  now the rewriting rules
RewriteRule   ^oldstuff\.html$  newstuff.html

   

También podría gustarte