Instalación del servicio web apache 2.0
Lo
primero que hacemos es instalar apache y el comando a ejecutar como root es el
siguiente:
apt-get
install apache2 pero
para que no te de problemas hacer primero un
apt-get update
Para
probar que el servidor está instalado podemos poner en un navegador http://192.168.1.104 (en mi caso la dirección ip que uso es esta).
Vamos a ver diferentes casos y para eso, vamos a simular la siguiente red con el Virtual Box.
Lo primero que hacemos es configurar otra interfaz en la
máquina virtual. La ponemos en solo anfitrión y configuramos
la dirección de la nueva interfaz.
Configuración de dos virtualHosts con distinta interfaz y mismo puerto y
creando dos sitios distintos.
Para
ello lo primero que hacemos es irnos a donde se encuentran los ficheros donde
se guardan los sitios que se abren con el navegador.
Que
la dirección es en /var/www/html y allí creamos dos directorios
nuevos sitio1 y sitio 2.
Y
dentro de cada uno creamos un fichero index.html con el mensaje que queramos.
Nos
vamos ahora a configurar el archivo para cambiar las directivas que
corresponden a los sitios que hemos
creado nuevos.
Se
encuentra dentro de: /etc/apache2/sites-available y copiamos el archivo
000-default.conf
y creamos sitio1.conf y sitio2.conf
Vamos
ahora a configurar ambos archivos sitio1 y sitio2 cada uno con lo que le
corresponde.
Le
ponemos al VirtualHosts la dirección
que le corresponde, en DocumentRoot
la ruta correcta de acceso al sitio1 y en los errores los denominamos correctamente.
Hacemos
lo mismo con el sitio2.
Activamos
el servicio, tanto en el sitio 1, como en el 2 y desactivamos el sitio que hemos copiado para que no se duplique la información..
Y finalmente restablecemos el servicio de apache para que guarde todos los cambios.
Lo
comprobamos desde el navegador, introduciendo ambas direcciones.
Configuración de dos virtualHosts con misma interfaz y distinto puerto.
Para
ello, mantenemos el sitio1.conf como lo hemos configurado en el caso anterior.
Nos
vamos ahora al sitio2. Y aquí, cambiamos la interfaz, que en este caso es la
misma, y cambiamos el puerto que no será el 80, sino que será el 8080 por ejemplo. El resto no se
modifica, se mantiene como lo habíamos puesto para el caso anterior.
Para
que funcione en el navegador nos falta habilitar el nuevo puerto, si no, no
funcionara. Para ello nos vamos a /etc/apache2/ports.conf y se le añade el puerto
nuevo.
Restablecemos
el servicio.
Nos
vamos ahora al navegador, para comprobar que funciona.
Configuración de dos virtualHosts con misma interfaz, mismo puerto y
distinto nombre sitio1.es y sitio2.es.
Para
ello hay que añadir una nueva directiva en cada uno de los archivos sitio1.conf y sitio2.conf que es ServerName y a cada uno poner el que le
corresponda.
En
el sitio1.conf
ponemos:
En
el sitio2, como en este caso es la misma interfaz y el mismo puerto, volvemos a
poner el puerto
80 y le ponemos el ServerName que le corresponde.
Restablecemos
el servicio.
Y
para que funcione, hay que modificar un
archivo más de la máquina real. Si estamos en Linux, el archivo a modificar
es el que se encuentra en /etc/hosts que habría que añadir la dirección IP y
las páginas asociadas, es decir, habría que poner:
192.168.1.108
www.sitio1.es
www.sitio2.es
En
mi caso estoy en Windows y el archivo a modificar se encuentra en la siguiente
ruta: C://
Windows/system32/drivers/etc/hosts
Y
añadimos: 192.168.1.108
www.sitio1.es
www.sitio2.es
Y
con esto ya podríamos acceder al navegador sin tener que restaurar el servicio
de nuevo. Para poder hacer este cambio, hay que darle permisos al usuario, si
no, no te dejara guardarlo.
Nos
ponemos sobre el archivo y con el botón derecho del ratón, marcamos propiedades.
Nos
metemos en la pestaña de seguridad, marcamos el usuario correspondiente, le damos a editar,
en la pestaña que se nos abre marcamos de nuevo el usuario y marcar los permisos de control
total, aplicar y aceptar, y ya nos deja guardar los cambios.
Introducimos
las páginas en el navegador para comprobar que funciona.
Manteniendo la última configuración del ejercicio anterior,
crea un tercer sitio "moodle.es" sobre cualquier interfaz y puerto
443 (https) y con directorio /var/www/html/moodle (ficheros de logs de errores
y accesos igualmente independizados). Dicho sitio deberá tener un moodle
instalado y funcionando sobre https. Activa el/los módulo/s que necesites para
que apache funcione con ssl.
Lo
primero que hacemos es crear el nuevo sitio desde el archivo /var/www/html/moodle y dentro de este index.html
Lo
siguiente es habilitar el servicio ssl para hacerlo de forma segura, para ello
lo que ponemos es a2enmod ssl
Y
restablecemos el servicio.
Lo siguiente es irnos a
/etc/apache2/sites-availables
y dentro de default-ssl.conf
modificar la dirección
y los errores.
Poner
activo el servicio con a2ensite default-ssl.conf.
Y
restablecemos el servicio.
Lo
comprobamos en el navegador poniendo https:// 192.168.128.209 (dirección que tengo en mi caso).
Vamos
a crear dentro de Moodle el archivo img y dentro un archivo oculto .htaccess
con las directivas que queramos, que en este caso la que ponemos es la de
Options
–indexes para que
quien entre en el moodle no pueda acceder a toda la información.
Para
ver el listado de estos archivos ocultos se hace con ls -a
Ahora
hay que modificar el archivo default-ssl.conf
Restablecemos
el servicio.
Comprobamos con el
navegador poniendo https://192.168.128.209/img
Ahora vamos a ponerlo seguro cambiando la directiva Options –Indexes
Configurar apache2 para que pueda cachear y
comprimir.
Configuración del cacheado.
Vamos a realizar la configuración del cacheado
para un sitio ya creado.
Tenemos tres módulos que son.
- Mod_file_cache que es
el menos flexible de los tres. Sirve para cachear ficheros concretos en disco o
memoria, pero si modificamos alguno de dichos ficheros sólo podremos conseguir
que Apache sirva la versión actualizada con un reinicio del gestor.
- Mod_mem_cache nos
permite cachear los ficheros de memoria. Sin embargo, lo que teóricamente
podría suponer una gran mejora de rendimiento del servidor, puede quedarse en
mucho menos por dos motivos In-Memory
Caching.
- Mod_disk_cache va
almacenando en un directorio los documentos que se van solicitando, así como
sus cabeceras. Si el mod_deflate está activo y hay unos clientes que aceptan
compresión y otros que no, se cacheará el documento comprimido y sin comprimir.
Por supuesto, no debemos olvidar que la caché del sistema operativo está
actuando, así que estos ficheros de caché, si hay memoria suficiente, también
serán cacheados en memoria por el kernel.
Vamos a
utilizar Disk_cache que es el más
eficiente. Para habilitarlo hacemos lo siguiente:
Nos
vamos a /etc/apache2/mods-available y
habilitamos el módulo cache_disk con
a2enmod cache-disk.
Nos vamos a cache_disk.conf y descomentamos la línea Cache Enable disk.
Nos dirigimos ahora a /etc/apache2/sites-available/sitio1.conf
y añadimos la misma línea. CacheEnable
disk /
Por
último reiniciamos el servidor apache.
La
carpeta donde se almacena el contenido por defecto es:
/var/cache/apache2/mod_cache_disk
Configuración para comprimir.
Vamos
a realizar la configuración para un sitio, para que apache comprima el
contenido de una página web.
Vamos
a habilitar el módulo correspondiente, nos vamos dentro de /etc/apache2/mods-available/ y el
módulo que necesitamos es el deflate.
Así que lo habilitamos con a2enmod deflate
Ahora
nos vamos al fichero de configuración deflate.conf
para comprobar que están todas las líneas y si no añadirlas.
Y
una vez configurado, reiniciamos el servicio apache.
Configura el sitio1.es
para que contenga un directorio "privado" al que sólo puedan acceder
usuarios autorizados. Debes usar el tipo de autenticación básica, realizarlo
usando el archivo htaccess para configurar las directivas de seguridad y crear
un archivo de usuarios/contraseñas. Indica cómo se realizaría utilizando el
tipo de autenticación "digest".
Autenticación básica.
Lo
primero que hay que hacer es añadir una directiva al fichero de configuración
del sitio1 que se encuentra en /etc/apache2/sites_availables
Y
le añadimos:
<directory
/var/www/html/sitio1>
AllowOverride AuthConfig
</directory>
Especifica
que las directivas, en su caso, puede ser puesto en archivos de configuración
por directorio.
Si no lo tenemos instalado, hay que instalar apache2-utils para
poder utilizar la herramienta htpasswd.
Utilizando htpasswd creo el usuario y las contraseñas,
para ello ponemos:
htpasswd –c
/var/www/usuarios.apache usuario
donde /var/www/usuarios.apache
es la ruta, usuario.apache es el
fichero donde lo creo y usuario es
el usuario que se crea. Te pide también que introduzcas la contraseña y que la
repitas.
Si quiero crear otro usuario le quito el –c
Y ahora hay que configurarlo y para ello nos vamos
donde se encuentra el sitio1
/var/www/html/sitio1 y creamos un .htaccess
Reiniciamos
el servicio.
Comprobamos con el navegador que al poner www.sitio1.es
nos pide las credenciales.
Creación
de otro usuario.
En el archivo de configuración, se pone el nuevo
usuario.
Para evitar tener que cambiar el archivo cada vez que
metamos un usuario nuevo, vamos a crear un grupo que los contenga a todos.
Para ello habilitamos el módulo authz_groupfile.load
con:
a2enmod
authz_groupfile.load y restablecemos el servicio.
Lo siguiente es que en la ruta /var/www al igual que creamos antes
usuarios.apache, creamos ahora con nano grupos.apache.
Y dentro ponemos el nombre del grupo y los
componentes.
Y modifico el archivo de configuración.
De forma que si yo creo un nuevo usuario que no se
encuentra en el grupo, e intento entrar, no me dejara.
Digest.
Configura el sitio1.es
para que contenga un directorio "privado" al que sólo puedan acceder
usuarios autorizados. Cómo se realizaría utilizando el tipo de autenticación
"digest".
Creamos
el directorio privado.
Habilitamos
el módulo
auth_digest.
Reiniciamos
apache2.
Para
usar la autentificación digest hay que crear un fichero accesible por Apache en
el que se guardarán los usuarios y sus contraseñas asociados a un dominio.
Para
crear este fichero se utilizará el comando htdigest.
htdigest –c
/etc/apache2/digest privado usuario1
Para
crear el usuario 2 no hace falta poner –c.
Editamos
el fichero de configuración /etc/apache2/sites-available/sitio1 y permitimos
el acceso al directorio /var/www/privado a los usuarios usuario1 y usuario2.
Para
eso lo que hacemos es introducir una nueva directiva.
Añade estadísticas a cada uno de los sitios con “awstats” y con
“Webalizer”.
Awstats.
Lo
primero que hacemos es instalar el awstats con apt-get install awstats.
Configuración de awstats y
funcionamiento.
El
archivo de configuración de awstats es /etc/awstats/awstats.conf. Hacemos una copia de
este en /etc/awstats/sitio1.awstats.conf.
Es
importante comprobar que se tiene activado el módulo cgid ya que es necesario
para el funcionamiento de Awstats.
Y se restablece el servicio.
Nos
vamos al archivo de configuración /etc/awstats/sitio1.awstats.conf y se hacen las modificaciones correspondientes.
Hay
que indicar donde se encuentra el log de Apache2, para ello modificamos la
siguiente directiva: LogFile=”/var/log/apache2/sitio1-access.log”
Como
en un mismo host pueden "cohabitar" distintos dominios, SiteDomain es
la directiva que indica a cual de esos dominios nos estamos refiriendo. En caso
de tener varios dominios en un mismo host (virtual host) es recomendable
generar logs independientes, es decir, uno para cada dominio. En mi caso:
SiteDomain=www.sitio1.es
Y
modificamos HostAliases="localhost
127.0.0.1 www.sitio1.es"
Nos
falta configurar en el apache otra cosa, nos vamos a /etc/apache2/conf-available y
creamos un nuevo archivo awstats.conf con el siguiente contenido.
Alias
/awstatsclasses "/usr/share/awstats/lib/"
Alias /awstats-icon
"/usr/share/awstats/icon/"
Alias /awstatscss
"/usr/share/doc/awstats/examples/css"
ScriptAlias /awstats/
/usr/lib/cgi-bin/
Options
+ExecCGI -MultiViews +SymLinksIfOwnerMatch
Una
vez llegado a este punto, deberíamos de ser capaces de visualizar la página web
por medio del enlace ip/cgi-bin/awstats.pl.
Las
estadísticas están vacías. Eso es porque el archivo no lee los datos de los
logs directamente sino que genera un archivo de texto y muestra los datos a
partir de dicho texto. Los archivos de texto generados se encuentran en:
/var/lib/awstats
Para
generar estos archivos por primera vez o actualizarlos manualmente, ejecutamos el
archivo awstats.pl con los siguientes parámetros: /usr/lib/cgi-bin/awstats.pl -config=sitio1 –update.
Para
hacer esto automáticamente cuando se instala awstats se crea un tarea cron en /etc/cron.d/awstats. Esta tarea hay que
modificarla para indicar la ruta correcta de los log de Apache:
0,10,20,30,40,50 * * * * www-data [ -x
/usr/lib/cgi-bin/awstats.pl -a -
f /etc/awstats/awstats.conf -a -
r /var/log/apache2/access.log ] &&
/usr/lib/cgi-bin/awstats.pl -
config=awstats -update >/dev/null
Es
decir cada 10 minutos se va actualizar la estadística utilizando el log de
apache y el fichero de configuración de awstats.
Webalizer.
The
Webalizer es una herramienta de análisis de servidores rápida, fiable y fácil
de usar. Genera informes con información detallada sobre todos los movimientos que
se producen en un servidor web.
Estos
informes están en formato HTML, por lo que se pueden visualizar con cualquier
navegador web, y son sencillos de configurar y totalmente personalizables.
Lo
primero que hacemos es instalarlo. apt-get install webalizer.
Configuración.
El fichero de
configuración de webalizer es /etc/webalizer/webalizer.conf, veamos los cambios
que hay que realizar para poner en marcha nuestra estadística:
Fichero donde
apache está guardando sus LOGS.
LogFile /var/log/apache2/access.log
Directorio donde
se van a generar los ficheros html que muestran la estadística
OutputDir /var/www/webalizer
Indicar el
nombre de dominio.
HostName www.sitio1.es
Para generar las estadísticas sólo es necesario
ejecutar el comando:
Webalizer
Para ver las estadísticas sólo hay que indicar como
dirección URL:
Para automatizar esta tarea, podemos crear una tarea
crontab que ejecute el comando
periodísticamente cada cierto tiempo, para ello editamos
el crontab del root con la instrucción crontab
-e y añadimos la siguiente línea:
0,10,20,30,40,50
* * * * webalizer > /dev/null
Lo que hemos
explicado hasta ahora es la configuración de webalizer para un sólo dominio. Si
tenemos más de uno, vamos a ver como tener una estadística para cada uno.
Lo primero que
hay que hacer es guardar en fichero de logs distintos cada uno de los accesos a
los distintos sitios virtuales, para ello hay que modificar la configuración de
los sitios virtuales y añadir una nueva directiva. Por ejemplo para sitio1.es
habría que añadir la siguiente línea:
CustomLog /var/log/apache/pagina1-access.log common
Se cambia
también en el sitio2 y después hay que reiniciar el servicio.
A continuación
vamos a crear un directorio donde vamos a guardar los ficheros de configuración
de webalizer para cada uno de los dominios:
mkdir
/var/www/estadistica/
Del mismo modo
creamos los directorios donde vamos aguardar los ficheros html generados que
muestran las estadísticas:
mkdir
/var/www/sitio1/webalizer
mkdir
/var/www/sitio2/webalizer
A continuación
copiamos el fichero de configuración de webalizer en el directorio que hemos
creado anteriormente pero con nombre distintos para cada uno de los dominios:
cp
/etc/webalizer.conf /var/www/estadistica/sitio1.conf
cp
/etc/webalizer.conf /var/www/estadistica/sitio2.conf
Dentro de cada uno de ellos se deben hacer los
siguientes cambios:
LogFile
/var/log/apache2/sitio1-access.log
OutputDir
/var/www/sitio1/webalizer
HostName
www.sitio1.es
No hay comentarios:
Publicar un comentario