lunes, 21 de diciembre de 2009

Configurar Apache en Windows

En el siguiente tema se explica la configuración básica a realizar para poner en funcionamiento un Servidor Web en Windows. Para saber cómo instalar este servidor existe un artículo Instalación Apache en Windows .
Cuando se instala este servidor, automáticamente se almacena en el ordenador en que se ha instalado una documentación de referencia a la que se puede acceder através de la dirección http://localhost/manual/index.html.
Toda la configuración del servidor web Apache en Windows se guarda en el fichero C:/Archivos de Programa/ApacheGroup/Apache2/conf/httpd.conf.
Todos los cambios en la configuración de nuestro servidor web deberán hacerse en dicho fichero.
En el fichero httpd.conf  hay líneas con información útil para ejecutar el servidor(parámetros y sus valores) y otras líneas con anotaciones para entender qué significan las líneas que se ejecutan.Este último tipo de líneas, llamadas comentarios, llevan un # al comienzo, por eso las líneas que realmente se ejecutan de nuestro fichero de configuración son las que no tienen un # al comienzo de la línea.
El modo de funcionamiento del servidor web dependerá de los valores que tengan los parámetros(¡¡OJO!!, siempre se pone un único espacio en blanco entre el nombre y el valor del parámetro). El formato de un parámetro es:
nombre_parámetro
valor_del_parámetro

A la hora de modificar este fichero se pueden seguir las siguientes recomendaciones:

REGLAS GENERALES PARA MODIFICAR UN FICHERO DE CONFIGURACION

1. Hacer una copia del fichero que vamos a modificar. Esta copia la podemos guardar en otra carpeta diferente o bien en el directorio en que estamos trabajando cambiándole el nombre(poniéndole el mismo nombre + un número correlativo, p.ej: para el fichero httpd.conf, la copia que creemos puede llamarse httpd-1.conf, así para cada cambio que vayamos haciendo tendremos una versión anterior al cambio que acabamos de realizar).
2. Abrir el fichero de configuración original con el Bloc de Notas, ya que al escribir en él, otros programas como el Word o el Wordperfect introducen caracteres que nosotros no vemos y los programas que utilizan estos ficheros de configuración dejan de funcionar correctamente.
3. Realizar en el fichero los cambios necesarios. Otra norma no escrita al realizar cambios en los ficheros de configuración consiste en poner un comentario antes o al lado del cambio que hayamos hecho. También se suelen ir haciendo cambios de uno en uno para comprobar que funciona bien cada uno de ellos.
4. Guardar el fichero.
5. Comprobar si los cambios han conseguido el resultado esperado. Si todo ha ido bien, podemos borrar el fichero copia que hicimos antes. Si no funciona bien, debemos restituir el fichero de configuración que duplicamos antes de realizar los cambios en el fichero, comprobar otra vez que todo va bien tras el paso de vuelta atrás y volver al punto 1.
En nuestro caso, para comprobar si los cambios funcionan o no, se debe reiniciar el Servidor Apache(no
hace falta reiniciar el ordenador, solo el servidor web)
.
Para realizar cambios en parámetros concretos es muy útil el uso de la herramienta de búsqueda del bloc de notas, ya que así le podemos poner el nombre del parámetro a cambiar y ésta lo encuentra dentro del fichero de configuración:

A continuación, se da un repaso a los parámetros básicos para una correcta configuración del servidor web como son: el directorio donde se guardan las páginas web, a quién se deja acceder a ciertas páginas, las páginas web asociadas a usuarios del ordenador(donde se instala el servidor), qué se pondrá en la barra de direcciones del navegador para llegar a nuestras páginas(cual es la URL para acceder a nuestras páginas), por donde escucha nuestro ordenador las peticiones de páginas que le llegan de fuera, etc.
Antetodo quiero comentar como explicaré el contenido de este fichero. El texto que aparece en color azul representa texto original encontrado en el fichero httpd.conf. Cuando cuente como se modifican ciertos parámetros o etiquetas, el texto que deberemos copiar o con el cual sustituir el contenido original aparecerá en color rojo.

¿COMO SABER DONDE PONER NUESTRAS PAGINAS WEB?

Las páginas web de nuestro servidor deben estar todas guardadas en una misma carpeta. Dentro de esta podremos crear más subcarpetas y clasificar así nuestros contenidos guardando cada página donde consideremos más oportuno.
¿Cómo sabe el servidor web, cuando se va a ejecutar, dónde buscar los archivos que debe mostrar a los navegadores que le pedirán las páginas? mediante el parámetro DocumentRoot. Por defecto al instalar el
servidor, este parámetro tiene el valor C:/Archivos de programa/Apache Group/Apache2/htdocs.
Este parámetro aparece por defecto en nuestro fichero de configuración de la siguiente forma:
DocumentRoot "C:/Archivos de programa/Apache Group/Apache2/htdocs"

Si quisiéramos colgar nuestras páginas web de otra carpeta distinta a la propuesta por defecto, por ejemplo de C:/Mis paginas web, deberíamos cambiar el valor del parámetro en el fichero de configuración, poniendo en esa línea:
DocumentRoot "C:/Mis paginas web"
( Además, deberemos guardar los cambios en el fichero y volver a lanzar el servidor web para que el cambio sea efectivo).

¿QUE FICHERO INTENTA ABRIR EL SERVIDOR WEB?

Cuando desde un ordenador intentan acceder a las páginas de nuestro servidor, el servidor web sabe que tiene que ir a buscar esas páginas a donde le diga DocumentRoot. Pero de esa carpeta, ¿el servidor qué archivo muestra?
El archivo o archivos a mostrar es lo que se indica en el parámetro DirectoryIndex, en el fichero httpd.conf
aparece con el siguiente valor por defecto:
DirectoryIndex index.html
index.html.var

Así que nosotros tendremos que poner al menos un fichero llamado index.html en la carpeta especificada en DocumentRoot, en nuestro caso en C:/Mis paginas web/index.html. O bien, cambiar el valor del parámetro DirectoryIndex con el nombre de la página que queremos que se abra al invocar a nuestro servidor web:
DirectoryIndex mipagina.html
Si hacemos este cambio cuando al servidor web le llegue una petición de página desde un ordenador, buscará en C:/Mis paginas web, un fichero que se llame mipagina.html y si no lo encuentra entonces enseñará una página como la siguiente:

En este parámetro se pueden poner tantas páginas como queramos separadas por un espacio en blanco, e irá buscando una tras otra hasta que encuentre alguna.

¿COMO PERMITIR Y RESTRINGIR ACCESO A ALGUNAS DE LAS CARPETAS WEB?

Se puede dar distintos permisos de acceso a las carpetas y archivos que conforman nuestro espacio web.
Dentro de la carpeta especificada en DocumentRoot se guardarán páginas y carpetas. Para ello se utiliza la
etiqueta  . Esta etiqueta está formada por un signo < , la palabra Directory, un espacio en blanco, el camino completo de dicha carpeta en nuestro disco duro, y el signo >. Después de poner esta etiqueta se ponen las propiedades que se quiere tenga en cuenta el servidor web respecto a esta carpeta y por último otra etiqueta de cierre.
En el fichero de configuración aparece de la siguiente forma:

Primero, se configura lo que debe hacer el servidor "por defecto"(es decir para cualquier URL con la que se acceda a él y no sabe qué página mostrar). Para este caso normalmente no se permitirá acceder a ningún sitio que nosotros no dejemos. Para conseguirlo, en el código original introduciremos la línea que aparece en
color rojo, para denegar acceso:
<DIRECTORY
/>
   Options
FollowSymLinks
   AllowOverride
None
   Deny from
all

</DIRECTORY>

Después se dan permisos o restringe el acceso a la carpeta de la que cuelgan todas nuestras páginas y por último se irán dando o quitando permisos a subcarpetas o a archivos concretos que no queremos que se vean.
Con el siguiente código, hacemos visible el directorio del que cuelgan todas nuestras páginas.
Si ahora ponemos en el navegador http://dirIP_del_ServidorWebnos mostrará la página que hayamos indicado en el parámetro DirectoryIndex, normalmente index.html y que debe estar guardada en C:/Mis paginas web (el valor del parámetro DocumentRoot).

<DIRECTORY "C:/Mis
paginas web">
   Options
Indexes
FollowSymLinks
   AllowOverride
None
   Order
deny,allow
   Allow from
all
</DIRECTORY>

Las propiedades que se pueden definir para cada carpeta son las siguientes:


  • Options, son opciones del servidor disponibles para la carpeta a la que se refiere. Valores habituales:
          Indexes, si en la carpeta no hay un fichero index.html, se mostrará en el navegador de quien quiera acceder a nuestras páginas un índice con todos los ficheros guardados en la carpeta a la que intenta acceder.
        
    FollowSymLinks
    , el servidor seguirá enlaces simbólicos a esta carpeta(alias de esa carpeta). Es decir, permitimos que este directorio, tenga otros nombres diferentes al real en nuestro ordenador, y aún así los navegadores de los equipos que intenten acceder a nuestra página , lo entenderán.





  • AllowOverride, permite decidir el tipo de directivas(opciones de configuración avanzadas) que se pueden escribir en los ficheros .htaccess(ficheros donde se puede ampliar la configuración que se quiere para una carpeta determinada). En una configuración básica, como la que trata de enseñar este artículo no conviene utilizar este tipo de parámetro. Para inutilizarlo le damos el valor None.




  • Deny, si ponemos from all prohibirá el acceso a cualquier navegador a todos los ficheros y carpetas que estén dentro de dicha carpeta. En lugar de all ,se puede indicar un nombre de dominio o un nombre de equipo o una dirección IP o un grupo de direccionesIP.




  • Allow, si ponemos from all permitirá acceder a cualquier navegador a todos los ficheros y carpetas que estén dentro de dicha carpeta.En lugar de all ,se puede indicar un nombre de dominio o un nombre de equipo o una dirección IP o un grupo de direccionesIP.


Por ejemplo, con el siguiente código, se permite el acceso a una carpeta llamada contenidos publicos situada dentro de la carpeta C:/Mis paginas web:

Con las siguientes líneas se prohibe el acceso a una carpeta llamada contenidos personales situada dentro de la carpeta C:/Mis paginas web:
<DIRECTORY "C:/Mis paginas web/contenidos personales">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order deny,allow
   Deny from all
</DIRECTORY>

Por último, si se quiere prohibir el acceso excepto a ciertas direcciones IP, se deberá poner después de la directiva de Deny, una directiva de Allow con las direcciones IP desde las cuales dejamos acceder a nuestras páginas:

   .......
    Order deny,allow
    Deny from all
    Allow from 192.168.1.25

</DIRECTORY>

O bien, si estamos dentro de un dominio DNS(están registrados los nombres de nuestros ordenadores en algún servidor de nombres, DNS), podremos dar permiso a todo un dominio o a algún equipo dentro de este dominio:
   .......
   Order deny,allow
   Deny from all
   Allow from micentro.es
</DIRECTORY>

¿COMO PROHIBIR EL ACCESO A CIERTOS FICHEROS DE UN SITIO WEB?

Se puede prohibir el acceso a un fichero (o tipo de fichero) almacenado en una carpeta determinada.
Si se quiere prohibir el acceso a un fichero(p. ej: prohibido.htm) en una carpeta determinada, se deberá poner un grupo <FILES..>.... </FILES>entre las etiquetas que determinan las directivas para el directorio en cuestión:
   <FILES prohibido.htm>
      Order deny,allow
      Deny from all
   </FILES>
   AllowOverride FileInfo
   Order allow,deny
   Allow from all
</DIRECTORY>

Si lo que se quiere es prohibir el acceso a un fichero(p. ej: prohibido.htm) en todo nuestro espacio web, se deberá poner un grupo <FILES..>.... </FILES>pero fuera de las etiquetas de directorio:
<FILES prohibido.htm>
   Order deny,allow
   Deny from all
</FILES>

Si lo que se quiere es prohibir el acceso a un tipo de ficheros(p. ej: todos los .htm), pondremos el grupo <FILES..>.... </FILES>de la siguiente manera:
<FILES *.htm>
   Order deny,allow
   Deny from all
</FILES>

¿COMO CREAR UN ENLACE SIMBOLICO (ALIAS) A UNA CARPETA?

Un alias para una carpeta, permitirá que los navegadores que acceden a nuestras páginas no sepan los nombres que tienen las carpetas del ordenador que contienen las páginas web. Aunque realmente se podrá acceder a las páginas de esa carpeta tanto con el alias como con el nombre del directorio donde se guardan las páginas. Tiene sentido utilizar alias para ocultar el directorio real donde guardamos las páginas web o bien para hacer más sencilla la navegación por nuestras páginas.
Para crear el alias se introduce, antes de la etiqueta < Directory ...... > de la carpeta a la que queremos dar un alias, la siguiente línea:
Alias  /nombre_simbolico  "camino_de_la_carpeta_en_el_ordenador".
Si el nombre_simbólico lleva la barra / al final, en el camino_real_completo también la tendremos que poner.
Por ejemplo, mediante la siguiente línea llamamos ejercicios a la carpeta "contenidos publicos". Los navegadores que quieran acceder a su contenido podrán poner la dirección http://dirIP_del_ServidorWeb/ejercicios en el navegador:
Alias /ejercicios "C:/Mis paginas web/contenidos publicos"
En el fichero de configuración quedará así:

Nota: El siguiente apartado ha sido modificado por el Administrador del Observatorio.

¿COMO CREAR ESPACIO WEB ASOCIADO A LOS USUARIOS DE LA MAQUINA?

Cada usuario del sistema operativo donde estamos instalando el servidor web puede tener su propio directorio web. Los visitantes podrán acceder a dicho directorio poniendo como URL http://dirIP_del ServidorWeb/nombreusuario, donde dirIP_delServidorWeb es la dirección IP de la máquina donde está instalado el servidor web.
Así cada usuario podrá publicar sus páginas web dentro de una carpeta misitio. Deberemos crear esa carpeta en C:/Documents and Settings/ nombre_del_usuario/ y cada usuario debe meter sus páginas en dicha carpeta.
Apache, utiliza la directiva UserDir para especificar la ubicación de directorios de usuario. Windows no admite el mismo método. En su lugar, debe utilizar directivas Alias para asignar un directorio de usuario.
Alias /NombreUsuario "Ruta Directorio Usuario"
<DIRECTORY "Ruta Directorio Usuario">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</DIRECTORY>

De modo, que para poder acceder en local a la carpeta misitio de un usuario llamado 'jorge' tendremos que añadir las siguientes líneas al fichero httpd.conf:
Alias /pilar "C:\Documents and Settingspilar\Mis documentos\misitio"
<DIRECTORY "C:\Documents and Settings\jorge\Mis documentos\misitio">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order allow,deny
   Allow from all
</DIRECTORY>

Para acceder a este directorio web habrá que poner en la barra del navegador http://localhost/jorge.
<DIRECTORY "C:/Mis paginas web/contenidos publicos">
   Options Indexes FollowSymLinks
   AllowOverride None
   Order deny,allow
   Allow from all
</DIRECTORY>

No hay comentarios:

Publicar un comentario