You are on page 1of 22

CONFIGURACIN DE APACHE

Desde el terminal sudo apt-get update Desde el terminal sudo apt-get install apache2 Para ver la versin, desde el terminal: apache2 v Hacemos netstat ltn para ver el puerto por el que escucha. Ver Configuracin y administracin de servidores web.pdf

(http://manpages.ubuntu.com/manpages/hardy/es/man8/netstat.8.html)

apache2.conf conf.d envvars

En este archivo se encuentra la configuracin del servidor web apache.

Directorio en donde estn los archivos de configuracin de apache. Contiene la informacin del usuario, grupo Y PID del servicio de apache. Era el archivo de configuracin, pero todava est siendo ocupado en la httpd.conf distribucin Red Hat y derivados. mods-available Directorio en se depositan los mdulos que se agregan al servidor apache. mods-enabled Directorio donde se encuentranlos mdulos activados y disponibles Archivo de configuracin en donde se especifica el puerto de escucha, por port.conf default es 80 (http) y 443 (https). Directorio en donde se encuentran los archivos de configuracin de sitios o sites-available pginas web que configuremos. sites-enabled Directorio en donde se habilita los sitios web.

Archivo apache2.conf y directivas ms importantes del archivo

El archivo de configuracin est compuesto por directivas que le indican al servidor cmo actuar. Cada vez que haces un cambio en el archivo de configuracin es necesario reiniciar el servidor para que surta efecto.

Ejemplo de archivo de configuracin completo: http://livenudefrogs.com/~anubis/apache/httpd-conf.shtml Gua rpida de referencia de directivas http://httpd.apache.org/docs/2.2/es/mod/quickreference.html Contexto http://httpd.apache.org/docs/2.2/mod/directive-dict.html#Context

La configuracin de Apache se basa en una serie de directivas que tienen posibilidad de ser usadasdentro de un contexto, es decir, un mbito en el que pueden ser aplicadas. Hay cuatro posibilidadesque no son excluyentes:

configuracin global del servidor, secciones para configurar los host virtuales, secciones de configuracin de directorios archivos .htaccess

ServerRoot "/etc/apache2" Indica el directorio raz de la instalacin de Apache. No se refiere al directorio donde colocaremos las pginas web. Esta directiva solo se modificara en caso de mover el servidor Apache a otra ubicacin en la estructura de directorios y habra que modificar ms cosas. Lo mejor es elegir bien desde el principio dnde instalaremos Apache.

Timeout Son los segundos que se esperan las respuestas durante la comunicacin. Por defecto es 300 segundos y se recomienda no cambiarlo. IfModule Es un contenedor que permite establecer determinadas opciones solo si se ha cargado un mdulo determinado. Si se escribe ! (cierre de exclamacin)antes del nombre del mdulo se ejecutan las opciones si no se ha cargado el mdulo. <IfModulemod_mime_magic.c> MIMEMagicFileconf/magic </IfModule> Listen Acepta peticiones entrantes solamente en los puertos y en las combinaciones de puertos y direcciones que se especifiquen. El servidor responder a las peticiones de todas las direcciones y puertos que se incluyan. Por ejemplo, para hacer que el servidor acepte conexiones tanto en el puerto 80 como en el puerto 81: Listen80 Listen 81 Para hacer que el servidor acepte conexiones en dos interfaces de red y puertos especficos, Listen 192.170.2.1:80 Listen 192.170.2.5:81 LoadModule Indica qu mdulos dinmicos cargar.

ServerAdmin Esta opcin permite configurar la direccin del administrador del servidor web que se mostrar si el servidor genera una pgina de error.
3

ServerAdminquique@daw.enlaces ServerName ServerName www.ejemplo.es:80 DocumentRoot Indicamos el directorio raz donde colocaremos las pginas web. Podemos crear subdirectorios. DocumentRoot "/www/paginas" Hay que usar tambin la directiva Directory. <Directory "/www/paginas"> Directory Esta opcin se usa para configurar cmo se comportar y qu se permitir en cada directorio al que tiene acceso el servidor Apache. Esta configuracinse aplica a un directorio y los subdirectorios que contiene si no se sobreescribe en otra definicin sobre un directorio ms concreto. Nos encontramos dos veces esta etiqueta. La primera hace referencia al directorio raz y se configura siempre con opciones muy restrictivas. Los subdirectorios heradan la configuracin d elos directorios padres y sobreescriben su configuracin. <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory>

<Directory "/www/paginas"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from
</Directory> 4

UserDir Indica si se debe permitir que cada usuario de nuestro sistema tenga su propia carpeta personal en el servidor web y establece cul ser la ruta desde el servidor para acceder a dicha carpeta. Hay que activar el mdulo Userdir. UserDir public_html Es la opcin ms frecuente ya que creara en nuestro servidor rutas para cada usuario. Si por ejemplo hay un usuario Sergio y otro Maria tendramos las rutas: www.servidordeprueba.es/~Sergio www.servidordeprueba.es/~Maria Y cada usuario tendra en su carpeta personal un subdirectorio public_html para publicar lo que quisiera. Como se puede ver el argumento detrs de UserDir indica cmo se llamar ese subdirectorio.

UserDirdisable Es la opcin por defecto y hace que los usuarios no tengan su propio espacio. En caso de activar los directorios de usuarios se recomienda deshabilitar el de root Userdirdisabledroot

DirectoryIndex Especifica la pgina por defecto que se buscar al acceder a un directorio de nuestro sitio. DirectoryIndex index.html Puede establecerse una sucesin de archivos y el servidor mostrar la primera que encuentre del orden establecido en la directiva. DirectoryIndex index.html, index.htm, inicio.html, inicio.htm Si accedemos a un directorio que no contiene ninguno de los archivos especificados, Apache crea dinmicamente un archivo que lista los contenidos.

ErrorLog Esta directiva es muy importante ya que indica dnde ubicar el archivo de registro de los errores que se produzcan en Muchos el servidor. El lugar crean por una defectoes particin

%ServerRoot%/logs/error_log.

administradores

exclusivamente para situar este tipo de archivos y as tener msprobabilidades de poder consultarlos en caso de un error fatal.
5

Ejemplo: ErrorLog /var/log/apache2/error_log

AddLanguage Apache puede devolver contenidos en diferentes idiomas dependiendo de la configuracin del idioma del navegadorWeb.
AddLanguage es .es AddLanguage da .dk

Language Priority Permite establecer una prioridad de los idiomas en caso de que no se especifique uno o haya un empate en la negociacin por diferentes motivos. Por defecto viene en ingls, pero en la mayora de los casos nosotros querremos establecerlo en espaol. LanguagePriority es en fr de AddCharset Es igual que AddLanguagepero para aadir nuevos juegos de caracteres. AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen AddDefaultCharset Debera establecerse al juego de caracteres que mejor se ajuste a la zona en la que se sita el servidor y al idioma del contenido. En caso de no estarseguros es mejor dejarlo como est. AddDefaultCharset ISO-8859-1

Al instalar apache, se habr creado la carpeta /var/www/ Dentro de la carpeta se encuentra el archivo index.html, que es la pgina que el servidor sirve por defecto.

Para acceder, desde el navegador http://localhost Intentamos modificar el contenido de index.html sin sudo (o root). No nos deja Hacemos ls -l /var. Comprobamos q el propiertario es root Cambiamos el directorio de propietario o cambiamos los permisos: sudochwonR quique /var/www/

Cambiamos index.html y ponemos Servidor Apache Quique. Visualizamos los cambios


6

Detenemos el servicio y vemos que no funciona /etc/init.d/apache2 stop

Volvemos a arrancar el servicio y comprobamos que funciona otra vez /etc/init.d/apache2 start

En vez de reiniciar el servidor apache cuando hacemos cambios (sudo /etc/init.d/apache2 restart) podemos usar sudo /etc/init.d/apache2 graceful (coge los cambios sin que se pare el servidor).

Accedemos desde la mquina real. Creamos otra pgina llamada despliegue.html y accedemos a ella. Crea dentro de /var/www/ otra carpeta llamada ciclos, y mete dentro una pgina llamada daw.html y otra llamada dam.html. Desde el navegador accede a localhost Desde el navegador accede a localhost/ciclos Desde el navegador accede a localhost/ciclos/daw.html

Ficheros a servir por defecto (DirectoryIndex)


Modifica index.html y llmalo indice.html. Accede a localhost. Comenta la lnea Options Indexes. Accede a localhost. Descomenta la lnea anterior. En sites-available/default aadimos la directiva DirectoryIndex con el valor despliegue.html dentro de <Directory /var/www>. Accede. Qu ocurrir si accedemos a localhost/ciclos? por qu? Dentro de ciclos crea una pgina que se llame despliegue.html y como contenido pon Despliegue ciclos. Qu ocurrir si accedemos a localhost/ciclos? por qu?

Haz que al entrar en localhost/ciclos sirva automticamente la pgina daw.html.

Cdigos de error (ErrorDocument)


7

Por defecto, el log de errores se encuentra en /var/log/apache2/error_log.

Para indicar que deben mostrar los errores: En sites-avalaible/default

Hacer que cuando se quiera acceder a una pgina que no existe, salga la siguiente pgina: http://st.depositphotos.com/1803622/1397/i/450/dep_13975203-Unhappy-smileyicon.jpg

Hacer que en vez del error Forbidden se muestre una pgina propia guardada en /var/www/otros/ (Cdigos de error de apache:http://members.tripod.com/r_castaneda0/)

Redireccionamiento
<Directory /var/www/> Redirect /pagina_a_redireccionar </Directory> /pagina_redireccionada

Problema con las tildes, , etc


Para que muestre bien las tildes: Solucin fcil pero peor: /etc/apache2/apache2.conf aadimos AddDefaultCharset UTF-8

Solucin buena: http://principiatechnologica.wordpress.com/2013/01/08/problemas-html-acentos-yenes-charset-utf-8-iso-8859-1/


8

MULTILENGUAJE
http://www.novell.com/communities/node/4755/configuring-apache-multiple-languagesupport-sles-10

Creamos index.html.es en espaol e index.html.en en ingls. <Directory /var/www/> AddLanguaje es .es AddLanguaje en .en </Directory>

CONFIGURACIN DE HOST VIRTUALES


Permiten alojar distintos dominio en un mismo servidor web

Los hosts virtuales permiten alojar varios dominios en una sla mquina (respondiendo a una misma IP).Si no tendra que haber tantos servidores como sitios web, lo que es imposible.

Usando host virtuales, podemos conseguir que en el caso de que sea invocado el dominio www.dominio1.es vaya a leer los archivos en el directorio que hayamos configurado como DocumentRoot para el host virtual www.dominio1.es, y consecuentemente los mande al navegador de quien lo haya pedido, y en el caso que sea convocado como www.dominio2.com, vaya a leer los archivos a otro directorio. Es decir, habr un directorio (DocumentRoot) para cada uno de los servidores virtuales que definamos.

Todo aquello que no est incluido en la definicin de cada virtualhost se heredar de la configuracin principal: apache2.conf (/etc/apache2/apache2.conf). As si se quiere definir una directiva comn en todos los virtualhost no se debe modificar cada uno de los virtualhost introduciendo esa directiva, sino que debes definir esa directiva en la configuracin principal del servidor web Apache, de tal forma que todos los virtualhost heredarn esa directiva. Por ejemplo la directiva Timeout 300, que establece la directiva Timeout igual a 300 segundos (indica el nmero de segundos antes de que se cancele un conexin por falta de respuesta), al estar en el archivo apache2.conf la heredarn todos los virtualhosts que no la sobre escriban .

Hay tres tipos: basados en nombres, en IP y en puertos. Solo veremos la primera.

En /etc/apache2/sites-available es donde se definen los virtualhosts. Podemos poner todos los virtual host en un solo fichero o cada virtual host en un fichero distinto.

Es habitual configurar registros de error independientes para cada sitio (habr que crear la estructura de directorios). Esto se hace dentro de la configuracin de cada sitio virtual dejando el principal para el servidor en s. El general se guarda en /var/log/apache2/log

Se pueden usar varias directivas Listen para especificar varias direcciones y puertos de escucha. El servidor responder a peticiones de cualquiera de esas direcciones y puertos PASOS:

Creamos el directorio donde se guardarn las pginas del dominio Creamos el archivo con la definicin del virtualhost Ejemplo de fichero configuracin virtualhost para www.dominio1.es

10

NameVirtualHost ip_servidor:puerto DirectoryIndex <VirtualHost IP_Servidor_Web:puerto> DocumentRoot /var/www/dominio1/ ServerName www.dominio1.com. ServerAlias dominio.com dominio1.es www.dominio1.es </VirtualHost>

La directiva NameVirtualHost debe ir en uno solo de los archivos que se encuentren en /sites-available/, esto le indica a apache que se estn utilizando varios hostvirtuales.

Guardamos el fichero dominio1.es en /etc/apache2/sites-avalaible/dominio1.es

Creamos enlace simblico a /etc/apache2/sites-enabled (lo podemos hacer con la orden a2ensite dominio1.es)

Como no tenemos DNS, en /etc/hosts ponemos nuestro dominio y los alias: Ip_servidor www.dominio1.es Ip_servidor dominio1.com

Si configuramos servidor DNS, al poner el dominio tambin saldra la pgina.

Directiva Options

Opciones None All Indexes

Funcin No establece ninguna opcin. Establece todas las opciones. Permite visualizar pginas ndice existentes en el directorio.

FollowSymlinks Permite seguir los enlaces simblicos del directorio. ExecCGI AllowOverride None Admite la ejecucin de scripts CGI. No establece ninguna opcin. El servidor no leer los
11

archivos .htaccess All FileInfo Order allow,deny deny,allow Allow fromall from IP from dominio Deny fromall from IP from dominio Establece todas las opciones. Permite usar las directivas especificadas en .htaccess Muestra la informacin de los archivos del directorio. Primero aplicar los permisos de allow y luego los de deny. Primero aplicar los permisos de deny y luego los de allow. Admite cualquier acceso al directorio. Admite cualquier acceso al directorio proveniente de la direccin IP indicada. Admite cualquier acceso al directorio desde el dominio especificado. Deniega cualquier acceso al directorio. Deniega cualquier acceso al directorio proveniente de la direccin IP indicada. Deniega cualquier acceso al directorio desde el dominio especificado.

Ejercicios Configuracin Virtualhost


Haz que el servidor sirva dos sitios web distintos (www.dominio1.com y www.dominio2.com). Configralos en dos archivos diferentes. Para el dominio1 la pgina de inicio ser dominio1.html y para el dominio2, ser dominio2.html. Se podr acceder a ellos escribiendo en el navegador www.dominio1.es, www.dominio1.clase y dominio1.es. (Lo mismo para el dominio2). Cada uno de ellos tendr su propio archivo con el log de errores. Accede a una pgina del dominio1 que no exista y comprueba el log.

Crea dos nuevos host virtuales en un solo archivo (llmalos dominio3.es y dominio4.es), con sus respectivas pginas de inicio, que se llamarn index.html y en las que pondr dominio3 y dominio4.

12

Haz las modificaciones necesarias para que el dominio3.es se sirva por el puerto 81 y el dominio4.es se sirva por el 82.

Cuando accedamos a localhost, se mostrar automticamente una pgina llamada eleccin.html desde la que podremos navegar al dominio1, 2, 3 o 4.

MDULOS DE APACHE
Apache est compuesto por mdulos, algunos de ellos vienen activados por defecto, y otros se tendrn que activar si nos conviene. Los mdulos se utilizan para agrupar funcionalidades de Apache muy concretas. Algunos se instalan por defecto en el servidor y otros los activa y configura el usuario cuando los necesita. En /etc/apache2/ hay 2 carpetas: mods-avalible (mdulos disponibles) y modsenabled (mdulos activados). Cuando arranca apache, cargar los mdulos que estn activados (los del modsenabled). Cuando se activa un mdulo, se crea un enlace simblico (una especie de acceso directo) de los archivos correspondientes del directorio mods-avalaible a los del mods-enabled. Cada mdulo est compuesto por 2 archivos: el de configuracin

(nombre_modulo.conf) y el de carga (nombre_modulo.load).

13

Para habilitarlos tambin podemos hacerlo creando enlaces simblicos

MDULO USERDIR Instalamos el mdulo userdir. El mdulo userdir permite que cada usuario tenga un directorio personal en el servidor, que suele ser:

/home/usuario/public_html

Usu1 Pag1.html Pag2.html Usu2 Pag1.html Pag2.html

14

Comandos - sudo a2enmod userdir (activar mdulo) - sudo a2dismod userdir (desactivar mdulo) - /etc/int.d/apache2 graceful (o restart)

Vamos a /etc/apache2/mods.enabled y vemos que estn userdir.conf y userdir.load.

Si queremos cambiar el directorio por defecto (public_html) por otra, aadimos la directiva UserDir nombre_directorio Tendremos que crear la carpeta en el home Luego tendremos que hacer q lo haga automticamente para cada usuario del sistema: http://www.cristiantala.cl/configuracion-de-ubuntu-servercon-apache2-y-modulo-userdir/ /etc/skel El usuario usu1 crea el directorio /home/usu1/public_html, y mete su pgina web index.html.

Al activar el mdulo userdir, se permite que todos los usuarios menos root (por temas de seguridad) puedan acceder a pginas web guardadas en un subdirectorio con su propio nombre poniendo como URL

http://www.dominioquique.com/~usu1, donde dominioquique ser el dominio (o localhost si estamos en local) y usu1 ser un nombre de usuario del sistema. De esta manera se accede al public_html del usuario y no al directorio /var/www/, al que accederamos si pusiramos slo www.dominioquique.com.
15

Si queremos acceder sin necesidad de poner ~, necesitamos definir un alias:

Comandos - Alias /usu1 /home/usu1/public_html - Reiniciamos apache

SITIOS WEB NO ANNIMOS Restringen el acceso a recursos alojados en el servidor. Hay distintos mdulos y maneras de hacerlo, vamos a emplear el mdulo auth_basic. El problema es que la informacin viaja sin cifrar.

Directivas:
AuthUserFile: indica la ruta donde se encuentra el fichero que contiene la lista de usuarios y contraseas. Estos usuarios y contraseas debern haber sido creados anteriormente mediante el uso del comando htpasswd. AuthUserFile /var/www/seguridad/usuarios

AuthGroupFile: lo mismo que el anterior pero con el nombre de los grupos de cuentas de usuario que usar apache para la autentificacin. Sirve para organizar los usuarios en grupos y controlar su acceso de una manera ms cmoda. AuthGroupFile /var/www/seguridad/grupos

16

Require user: indica cuales de los usuarios de AuthUserFile tienen acceso al directorio especificado en la directiva Directory. El usuario debe estar contenido en el fichero indicado en la directiva AuthUserFile. Si queremos que sean todos pondremos Require valid-user. Require user quique

Require group: lo mismo pero para los grupos. El grupo debe estar contenido en el fichero indicado a travs de la directiva AuthGroupFile. Require group profesores

AuthType: indica el tipo de autentificacin: Basic (ms comn), Digest (ms robusto. Requiere que el navegador lo soporte). AuthType Basic

AuthName: Indica el mensaje que aparecer al usuario cuando se intente acceder a las pginas protegidas. AuthName Escriba su nombre y contrasea

17

Ejemplo autenticacin mediante usuarios: 1. En /var/www/ creamos directorio protegido donde meteremos las pginas web protegidas.

2. Creamos el fichero htpasswd (donde estarn los usuarios y sus contraseas) en, por ejemplo /etc/apache2/seguridad : htpasswd ruta_fichero_AuthUserFile nombre_usuario

htpasswd c /etc/apache2/seguridad/.usuarios quique (el c solo es necesario la primera vez para que cree el archivo, as no es necesario crear el archivo de antemano).

Vemos que se ha creado el archivo y que est encriptada la contrasea. Normalmente la archivo de usuario:contrasea (en nuestro caso usuarios) se le llama .htpasswd (con el punto delante se oculta). htpasswd /var/www/protegido/.usuarios ana

3. En /etc/apache2/sites-avalaible, aadimos lo siguiente: <VirtualHost> <Directory /var/www/protegido> AuthType Basic #tipo de autentificacin AuthName Escribe usuario y contrasea para entrar #mensaje AuthUserFile /etc/apache2/seguridad/.usuarios #ruta del fichero Require user quique ana #usuarios permitidos </Directory> </VirtualHost>

18

Hay que tener cuidado con este tipo de autentificacin porque al poner un usuario vlido guarda los datos en la cach del navegador y aunque salgamos del directorio protegido se puede volver a acceder a l sin necesidad de que pida la contrasea hasta que expire la cach.

Ejemplo autenticacin mediante grupos: 4. Creamos en /etc/apache2/seguridad el archivo grupos y lo rellenamos segn lo siguientenombre_grupo: lista_usuarios_separados_por_espacios Ej: finanzas: ana pepe informatica: quique

5. <VirtualHost> <Directory /var/www/protegido> AuthType Basic #tipo de autentificacin AuthName Escribe usuario y contrasea para entrar #mensaje AuthUserFile /etc/apache2/seguridad/.usuarios #ruta del fichero Require user quique ana #usuarios permitidos AuthGroupFile /etc/apache2/seguridad/grupos #ruta fichero con los grupos Require group infromatica </Directory> </VirtualHost

Al acceder, si ponemos un nombre de usuario y contrasea de un usuario perteneciente a un grupo que est autorizado entrar.

19

Autenticacion con mysql http://www.unlugarenelmundo.es/2010/03/18/autenticacion-en-apache-y-ii-digest-ycon-mysql/

CONTROL DE ACCESO A MQUINAS

Cuando un usuario hace una peticin HTTP al servidor, este puede atenderla o no en funcin de la mquina desde la que se hace la solicitud. Esto nos puede servir para limitar el acceso a determinadas mquinas si no disponemos de un firewall (por ejemplo). Tiene que estar activado el mdulo authz_host (est activado por defecto). Se usan las directivas Allow y Deny para aceptar o rechazar el acceso en funcin del nombre o direccin de la maquina desde la que se hace la peticin.

La directiva Order indica en qu orden se leern las directivas Allow y Deny.

Primero se evala el que est primero y luego el segundo.

Ej: (Ms informacin en la documentacin de las directivas allow, deny, order)

Deny from 192.168.1.4 evita que pueda entrar el equipo con esa ip -------------------------------------------------------------------------------------------------------

Deny from pc10.aula1.com evita que puedan entrar desde el equipo pc10 del aula1. ------------------------------------------------------------------------------------------------------Para especificar una red allow from 192.168.1 ------------------------------------------------------------------------------------------------------Para especificar varios equipos allow from 192.168.1.2 192.168.1.10 ----------------------------------------------------------------------------------------------------Order deny,allow Deny from all Primero evala las restricciones No permite a ningn ordenador

20

Allow from 192.168.1.4

Permite al 192.168.1.4, luego solo servir la pgina a ste ordenador

---------------------------------------------------------------------------------------------------------

Ej: Vamos a evitar el acceso a las pginas que estn dentro de /var/www/html a todos los ordenadores excepto a uno con ip 192.168.2.70

Abrimos /etc/apache2/sites-avalaible/default Modificamos el archivo para que quede de la siguiente forma: <VirtualHost> <Directory /var/www/html> AuthType Basic#tipo de autentificacin Order deny,allow Allow 192.168.2.70 Deny from all </Directory> </VirtualHost>

/etc/init.d/apache2 graceful Se podra acceder a la pgina desde cualquier ordenador excepto desde el 192.168.2.70 Ej: limita a todos los equipos que entren en el directorio donde se encuentran los archivos de contraseas (/var/www/protegidos)

21

22

You might also like