domingo, 18 de enero de 2015

Instalación de Moodle

Para ello instalamos php5, mysql-server y phpmyadmin.


A todo le ponemos la contraseña de root
Lo siguiente que hacemos es borrar la carpeta de Moodle y para ello ponemos
rm –R Moodle



Ahora vamos a descargarnos el archivo de Moodle desde la página de internet.



Hay que descomprimirlo y para ello ponemos tar xvzf moodle-lastest-28.tgz
Una vez descomprimido, nos vamos al navegador y poniendo la dirección https:// 192.168.1.108 directamente entramos en la página de configuración del moodle. Nos pedirá que nos descarguemos el php curl, así que hacemos un apt—get install php5-curl.



Creamos el directorio moodledata y le damos permisos con:
chown www-data:www-data moodledata/





Para rellenar esto hay que crear antes la base de datos, para ello se hace instalando el phpmyadmin. A mí me dio problemas entonces lo desinstale con apt-get - - purge remove phpmyadmin y lo volví a instalar de nuevo y en el archivo /etc/apache2/apache2.conf incluí la siguiente línea include /etc/phpmyadmin/apache.conf, restaure el servicio de apache2 y en el navegador puse la ip/phpmyadmin/index.php y ya entre sin problemas para poder configurar la base de datos.


Nos vamos a la pestaña de la base de datos y le damos un nombre, en este caso bdmoodle y elegimos el cotejamiento y le damos a crear.


Nos vamos a la columna de la izquierda pulsamos nuestra base de datos, recientemente creada, nos vamos a la derecha y pulsamos en privilegios, y marcamos crear un nuevo usuario. Rellenamos los datos, marcamos todos los permisos y lo creamos.


Rellenamos los datos que corresponden en la instalación de Moodle.


La siguiente ventana, nos dice que creemos el archivo config.php dentro de moodle.


Dentro de la carpeta Moodle tenemos el fichero config-dist.php lo que hacemos es cat config-dist.php >> config.php de esta forma creamos el fichero config.php que nos pide la instalación de Moodle y lo que hay que hacer es cambiar los datos que correspondan.


Y seguimos con la instalación.






Y ya tendríamos la Moodle creada.










HTTP Linux (Apache2)

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:


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