5 servidor web

29
Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons 5. Servidor web. 5.1. Introducción. Hoy en día casi todos los centros educativos cuentan con una página web donde poder ofrecer información del centro como las enseñanzas que se imparten, horarios escolares, ubicación del mismo, fotos y un largo etc de cosas relativas al mundo educativo y del propio centro. Además en muchas ocasiones podemos ver como en un centro nos vendría muy bien tener una plataforma donde los profesores y alumnos tuvieran un punto en común donde poder subir y descargar materiales, ponerse en contacto entre ellos, o saber cuando es la fecha de un examen por ejemplo. La ventaja de tener el servidor web alojado en el propio centro es que no dependemos de un servicio de hosting, pagado en la mayoría de los casos, para administrar nuestra página y probar cosas. Podemos probar todo lo que queramos y tener una gestión directa de todo lo que acontece al servidor. Otro punto positivo, es que las peticiones que se hagan desde dentro de la red del centro, irán bastante más rápidas comparándolas cuando estas se hacen a un servidor externo. Como contrapunto, el equipo que haga de servidor debe estar siempre encendido si queremos que los alumnos y profesores puedan acceder a su información en el momento que quieran. Además la potencia del ordenador servidor y el ancho de banda de la conexión de nuestro centro, delimitará las posibilidades del mismo cuando tenga que atender a varias peticiones simultáneas de información. Nosotros vamos a aprovechar que en esta unidad vamos a aprender a montar un Servidor Web en Linux, para además instalarle una plataforma de software libre como es Moodle. A partir de aquí empezaremos instalando los recursos necesarios para que nuestro servidor aloje una página web con acceso a bases de datos SQL y código PHP. 1

Transcript of 5 servidor web

Page 1: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5. Servidor web.

5.1. Introducción.Hoy en día casi todos los centros educativos cuentan con una página web

donde poder ofrecer información del centro como las enseñanzas que se imparten, horarios escolares, ubicación del mismo, fotos y un largo etc de cosas relativas al mundo educativo y del propio centro. Además en muchas ocasiones podemos ver como en un centro nos vendría muy bien tener una plataforma donde los profesores y alumnos tuvieran un punto en común donde poder subir y descargar materiales, ponerse en contacto entre ellos, o saber cuando es la fecha de un examen por ejemplo.

La ventaja de tener el servidor web alojado en el propio centro es que no dependemos de un servicio de hosting, pagado en la mayoría de los casos, para administrar nuestra página y probar cosas. Podemos probar todo lo que queramos y tener una gestión directa de todo lo que acontece al servidor. Otro punto positivo, es que las peticiones que se hagan desde dentro de la red del centro, irán bastante más rápidas comparándolas cuando estas se hacen a un servidor externo.

Como contrapunto, el equipo que haga de servidor debe estar siempre encendido si queremos que los alumnos y profesores puedan acceder a su información en el momento que quieran. Además la potencia del ordenador servidor y el ancho de banda de la conexión de nuestro centro, delimitará las posibilidades del mismo cuando tenga que atender a varias peticiones simultáneas de información.

Nosotros vamos a aprovechar que en esta unidad vamos a aprender a montar un Servidor Web en Linux, para además instalarle una plataforma de software libre como es Moodle.

A partir de aquí empezaremos instalando los recursos necesarios para que nuestro servidor aloje una página web con acceso a bases de datos SQL y código PHP.

1

Page 2: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.2. LAMP.

LAMP son las siglas de Linux + Apache + MySQL + PHP/Perl/Python y en resumen es un paquete con todo lo necesario para poder instalar un servidor web con la mayoría de las funcionalidades que vamos a necesitar.

Quitando Linux por ser obvio, una breve descripción de los elementos anteriores:

•Apache: servidor web HTTP de código abierto, potente y muy estable usado en la mayoría de los servidores web de Internet.El archivo principal de configuración de Apache es /etc/apache2/apache2.conf

•MySQL: Sistema de gestión de Bases de Datos que usa el modelo relacional con SQL.El archivo principal de configuración de MySQL es /etc/mysql/my.cnf

•PHP: lenguaje de programación diseñado para obtener páginas web dinámicas.El archivo principal de configuración de PHP es /etc/php5/apache2/php.ini

Más información:

http://es.wikipedia.org/wiki/LAMP

https://wiki.archlinux.org/index.php/LAMP_%28Espa%C3%B1ol%29

http://www.lamphowto.com/

2

Page 3: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.2.1.Instalando LAMP.

Seguramente si hemos seguido los pasos ya tendremos instalado LAMP en nuestro sistema servidor pero de no ser así lo instalaremos usando el comando:

sudo tasksel install lamp-server

Probamos que el servicio MySQL está activo con

service mysql status

Y vemos como entre los puerto a la escucha de nuestro servidor deben estar el 80 para el servidor web ( HTTP) y el 3306 del servicio de base de datos ( MySQL).

netstat -putan |more

3

Page 4: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.2.2. Probando el servidor web.

Hay muchas formas para comprobar que el servidor web Apache está activo, pero tal vez la mejor sea probarlo desde algún ordenador cliente intentando cargar la página de inicio por defecto que Apache lleva una vez instalado. Para eso abrimos un navegador web en cualquier ordenador cliente de la red, o en el equipo anfitrión en el caso de que el servidor este virtualizado y cargamos la dirección IP del servidor. El resultado debe ser el contenido del la página index.html situada en el directorio /var/www

En el caso de que quisiéramos probar directamente en el propio servidor si nuestra página está activa, como no disponemos de ningún navegador web ya que a nuestro sistema seguramente no le hemos instalado entorno gráfico, nos iremos a la carpeta /var/www y una vez allí conectaremos mediante telnet usando

telnet 127.0.1.1 80

Una vez hemos conectado cargaremos la página con el comando

GET /index.html

El resultado debe mostrar el contenido de la página

4

Page 5: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Ahora vamos a probar que el servidor también ejecute código PHP sin problemas.

5.2.3. Probando el servidor PHP.

Vamos a probar por último que nuestro servidor puede ejecutar código PHP. Para ello nos dirigimos a la carpeta var/www y creamos un archivo de texto usando alguno de los editores de texto como por ejemplo nano

sudo nano probando.php

Modificamos el contenido añadiéndole estas líneas, guardamos y cerramos.

<?php echo 'Hola Mundo!!!'; ?>

A continuación nos vamos a un navegador de algún cliente en red y cargamos la dirección IP del servidor /la_página.php que acabamos de crear para ver el resultado.

5

Page 6: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Todo funciona correcto, el servidor web, las bases de datos MySQL y PHP ejecuta correctamente el código.

5.2.4. Configurando MySQL.

Para poder acceder externamente a las bases de datos de nuestro servidor es necesario modificar el archivo de configuración de MySQL para ello nos iremos al archivo de configuración del mismo /etc/mysql/my.cnf y lo editaremos para que apunte a la IP de nuestro servidor.

sudo nano /etc/mysql/my.cnf

y modificamos la línea donde permite sólo acceder desde el localhost por nuestra IP del servidor.

bind-adress = 192.168.2.100

Guardamos y salimos.

6

Page 7: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Reiniciaremos el servicio para que tengan efecto los cambios

sudo service mysql restart

Como por motivos de seguridad no es recomendable usar el superusuario root para acceder desde otros equipos vamos a crearnos un nuevo usuario con permisos de administrador que usaremos para administrar las bases de datos. Para crearlo usamos el comando

mysql -u root -p

Ahora es cuando tenemos que recurrir a la memoria, o mejor aún a ese papel o archivo donde guardamos las claves y usuarios que usamos durante la instalación de nuestro servidor, para poder acceder como root a MySQL.

Una vez dentro del SQL Monitor usaremos un comando para crearnos un usuario que en mi caso le he llamado enriquesql con pass “0000” y luego le daremos todos los privilegios como administrador.

7

Page 8: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Para crear al usuario usamos

CREATE USER 'nombre_usuario'@'%' IDENTIFIED BY 'password';

CREATE USER 'enriquesql'@'%' IDENTIFIED BY '0000';

Y para darle todos los permisos usamos el comando

GRANT ALL PRIVILEGES ON *.* TO 'nombre_usuario'@'%' WITH GRANT OPTION;

Una vez realizados los cambios salimos con

exit

5.3. phpMyAdmin.

Una vez tenemos todo lo necesario en nuestro servidor vamos a aprovecharnos de una herramienta que nos va a facilitar mucho la interacción con las bases de datos de MySQL, esta herramienta es PHPMyAdmin.

PHPMyAdmin es una aplicación escrita usando código PHP que nos va a permitir manejar las bases de datos a través de una página web con un interfaz gráfico ahorrándonos muchos de los comandos SQL que tendríamos que usar hasta para las tareas más básicas.

Más información:

http://es.wikipedia.org/wiki/PhpMyAdmin

http://www.phpmyadmin.net/home_page/index.php

8

Page 9: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.3.1. Instalando phpMyAdmin.

Para iniciar la instalación de PHPMyAdmin usaremos apt-get en una terminal mediante el comando

sudo apt-get install phpmyadmin

Elegimos “apache2” y aceptamos. Nos avisará que para empezar a usar PHPMyAdmin necesitamos tener una base de datos creada y configurada, para simplificar seleccionamos “SÍ”.

9

Page 10: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Para confirmar nos va a pedir el password de root de MySQL, la introducimos.

Necesitamos además, una clave que nos permita usar PHPMyAdmin y conectarlo con las bases de datos de MySQL. Podemos usar la misma clave que tenemos para MySQL o otra diferente. En nuestro caso, a pesar de ser menos seguro que usar una nueva clave, usaremos la misma para no tener que estar recordando o apuntando más claves. Aunque siempre es posible usar una nueva clave si así lo deseamos.

Repetimos la clave y aceptamos.

Pasamos a probarlo.

5.3.2. Probando phpMyAdmin

Ahora falta hacer que la carpeta del phpmyadmin apunte a la carpeta www de apache para que podamos probarlo. Para hacerlo hacemos un enlace simbólico con

sudo ln -s /usr/share/phpmyadmin /var/www

10

Page 11: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Vamos a probarlo para ello como con los otros servicios web nos vamos a un navegador de un ordenador cliente y escribimos en la barra de dirección:

IP_servidor/phpmyadmin

Ingresamos el usuario y la contraseña que creamos anteriormente (“enriquesql” y “0000”) y accederemos al panel de control de PHPMyAdmin. También podemos usar el usuario root con su clave y entraríamos como administrador del sistema.

11

Page 12: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

En Privilegios podemos ver los usuarios y sus permisos en el sistema para comprobar que el usuario que creamos tiene todos los privilegios que vamos necesitar para manejar nuestras bases de datos.

5.4. Creando una copia de seguridad.

En este punto del curso no estaría de más que hiciéramos una copia de seguridad de nuestra máquina virtual con el sistema servidor. Para ello buscamos el archivo de la máquina virtual en la ruta donde eligiéramos guardarlo al crearla. Copiamos el archivo, o la carpeta entera de la máquina a otra partición, o disco duro externo, por si

12

Page 13: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

cometemos algún error que no sabemos solucionar en un futuro. Esta operación tardará unos minutos dependiendo del espacio de disco duro que le asignarais a la máquina.

5.5. Moodle.

Moodle es un Sistema de Gestión de Cursos de Código Abierto (Open Source Course Management System, CMS), conocido también como Sistema de Gestión del Aprendizaje (Learning Management System, LMS) o como Entorno de Aprendizaje Virtual (Virtual Learning Environment, VLE). Es una aplicación web gratuita que los educadores pueden utilizar para crear sitios de aprendizaje efectivo en línea como por ejemplo está actividad formativa.

La filosofía planteada por Moodle incluye una aproximación constructiva basada en el constructivismo social de la educación, enfatizando que los estudiantes (y no sólo los profesores) pueden contribuir a la experiencia educativa en muchas formas. Las características de Moodle reflejan esto en varios aspectos, como hacer posible que los estudiantes puedan comentar en entradas de bases de datos (o inclusive contribuir entradas ellos mismos), o trabajar colaborativamente en un wiki.

Habiendo dicho esto, Moodle es lo suficientemente flexible para permitir una amplia gama de modos de enseñanza. Puede ser utilizado para generar contenido de manera básica o

13

Page 14: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

avanzada (por ejemplo páginas web) o evaluación, y no requiere un enfoque constructivista de enseñanza.

En términos de arquitectura, Moodle es una aplicación web que se ejecuta sin modificaciones en Unix, GNU/Linux, OpenSolaris, FreeBSD, Windows, Mac OS X, NetWare y otros sistemas que soportan PHP, incluyendo la mayoría de proveedores de alojamiento web.

En cuanto al servidor web corre principalmente en Apache o IIS. La versión mínima de PHP soportada en la versión de Moodle 2.2 es PHP 5.3.2.Los datos se almacenan en una base de datos SQL. Los sistemas de gestión de bases de datos soportados son: MySQL, PostgreSQL, MSSQL, Oracle, SQLite. 2

5.5.1. Comprobando compatibilidad.

Antes de instalar Moodle, debemos ver si es compatible la versión que queremos instalar de moodle con la versión de php que estamos usando. Para eso vamos a crear un archivo con un sencillo código php /var/www/probando2.php.

sudo nano /var/www/probando2.php

Y vamos introducir el siguiente código

<? php PHPinfo ();?>

Guardamos el archivo. Con ese código al cargar la página en un navegador nos dará la información de la versión de php que tenemos. En nuestro caso tenemos instalada la versión 5.3.6.

14

Page 15: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Para ver la versión de MySQL basta con cargar la página de PHPMyAdmin como hicimos anteriormente.

Una vez que hemos comprobado en la página oficial de moodle (http://download.moodle.org/ ) que nuestro servidor soportará la versión de moodle que queremos instalar vamos a configurar algunos parámetros de Apache.

5.5.2. Configurando Apache.

Para que Apache tenga como página por defecto además de index.html, e index.htm, también index.php. Para eso tenemos que editar el archivo de apache /etc/apache2/sites-available/default

sudo nano /etc/apache2/sites-available/default

Insertando la línea

DirectoryIndex index.php index.html index.htm

15

Page 16: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Quedando así

Para que cuando reiniciamos apache no nos aparezca más el siguiente mensaje:

Vamos a darle el nombre de FQDN (Fully Qualified Domain Name) “localhost” con el comando

echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

Y reiniciamos apache sin interrumpir las conexiones establecidas con el comando

sudo apache2ctl graceful

Comprobamos que apache se está ejecutando correctamente en nuestro sistema

sudo apache2ctl status

16

Page 17: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.5.3. Creando una base de datos para moodle.

Lo siguiente que vamos a hacer es crear la base de datos que moodle utilizará. Para hacerlo tenemos varias opciones con comandos, o usando PHPMyAdmin. Ya que tenemos instalado esta última herramienta vamos a usarla desde algún equipo cliente o el host anfitrión ( que también es cliente claro).

Cargamos PHPMyAdmin en un navegador ( ip_servidor/phpmyadmin ) y a continuación nos vamos a la pestaña Bases de Datos. Una vez allí seleccionamos el tipo “utf8_unicode_ci” y el le ponemos de nombre moodle. Pulsamos en el botón de “Crear”.

17

Page 18: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Para ver los usuarios que tienen privilegios sobre la base de datos que hemos creado, le damos a “Comprobar privilegios” y vemos como el usuario que creamos en esta unidad ( enriquesql ) tiene permisos totales en la base de datos.

5.5.4. Descargando moodle.

Ya tenemos lo necesario para instalar moodle ahora es el momento de descargarlo. Tal vez la versión más extendida de moodle es la 1.9, pero nosotros vamos a instalar la última en aparecer en el momento de escribir este curso que es la 2.2.1.

Para bajarla nos vamos a a la carpeta /var/www de nuestro servidor y usamos el comando wget

wget http://downloads.sourceforge.net/project/moodle/Moodle/stable22/moodle-latest-22.tgz

Ocupa unos 24MB así que dependiendo de la velocidad de descarga de nuestra conexión tardará más, o menos.

18

Page 19: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

comprobamos que lo hemos descargado y lo descomprimimos.

sudo tar xzvf moodle-latest-22.tgz

Volvemos a comprobar que al descomprimirlo nos ha creado una carpeta llamada moodle dentro de /var/www

ls -l

19

Page 20: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.5.5. Preparando la instalación de moodle.

Además, Moodle necesita un directorio moodledata para almacenar archivos. Por seguridad no debe estar accesible desde la web por lo que lo crearemos en /var con el siguiente comando:

sudo mkdir -p /var/moodledata

Cambiaremos los permisos para que el usuario de moodle pueda acceder al mismo

sudo chown -R nobody:www-data /var/moodledata

Y los modificamos permisos del usuario sobre el mismo

sudo chmod -R 0770 /var/moodledata

5.5.6. Instalando y configurando moodle.

Es hora de dejar los comandos de terminal a un lado e irnos a algún equipo cliente (el equipo anfitrión por ejemplo) abriendo un navegador web y cargando la página de instalación de moodle, que si habéis seguido las mismas rutas del curso será:

http://ip_servidor/moodle

http://192.168.2.100/moodle

En la pantalla inicial debemos seleccionar el lenguaje, que en nuestro caso será

Español – España (es - es)

20

Page 21: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

En el siguiente paso tenemos que confirmar las rutas por defecto de moodle para acceder a la web, donde se encuentran los archivos de moodle y el directorio que moodle usará para los datos.

21

Page 22: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Ahora especificamos el tipo de base de datos que nosotros usaremos que en nuestro caso es MySQL mejorado (native/mysql)

Configuramos los datos para acceder a nuestra base de datos donde tenemos que completar el nombre de la base de datos (moodle) el usuario que hemos creado (enriquesql) y la contraseña (0000) para dicho usuario.

En este punto moodle nos mostrará una pantalla de “Configuración completa”, pero nos avisará que no ha podido escribir el archivo de configuración config.php en la carpeta de moodle. Nos mostrará el archivo con el contenido de como debería quedar el archivo config.php que almacena la información de la configuración de nuestro moodle.

22

Page 23: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Hay varias formas de conseguir el archivo config.php con el contenido anterior pero la que me parece más sencilla es la que veremos a continuación.

5.5.7. Configurando config.php.

Nos vamos a ir a nuestro servidor a la carpeta /var/www/moodle y vamos a modificar un archivo de configuración base que viene con los archivos de moodle que descargamos y descomprimimos. El archivo se llama config-dist.php y para editarlo usamos

sudo nano config-dist.php

Ahora vamos a ir modificándole los valores por defecto por los que nos ha reportado la

23

Page 24: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

pantalla de configuración completa. De esta manera tendremos que modificar el archivo para que quede así

24

Page 25: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

No hará falta que modifiquemos ningún valor más. Observad que el parámetro CFG-> passwordsaltmain, no lo hemos modificado como venía en el archivo que nos genera la

25

Page 26: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

instalación porque no vamos a usar ese añadido de seguridad a las contraseñas.

Una vez terminemos la edición guardamos con el nombre config.php y salimos.

Volvemos a un navegador en un equipo cliente y cargamos de nuevo la dirección

http://ip_servidor/moodle

http://192.168.2.100/moodle

Seguirá el proceso de instalación de los módulos de moodle hasta que nos permita pulsar el botón “continue”

Completamos algunos datos personales referentes al administrador y otras opciones de configuración.

26

Page 27: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Por último configuramos los parámetros básicos de la página web de moodle, como el nombre de la página de inicio o una breve descripción de la misma.

27

Page 28: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

Ya tenemos lista nuestra Aula virtual para seguir configurándola o cargando contenido.

Hemos visto un ejemplo de página web que podemos tener alojada en nuestro servidor una vez lo hemos preparado con algunos de los servicios básicos que suelen tener los servidores web, pero podríamos haber escogido cualquier otro tipo de página en lugar de la plataforma Moodle, como por ejemplo Joomla, o cualquier página simple hecha con editores HTML.

28

Page 29: 5 servidor web

Redes, servidores y seguridad informática en Linux . CEP Indalo. Enrique Brotons

5.6. Usando los DNS.

Hasta ahora hemos accedido a la página web alojada en nuestro servidor desde los clientes a través de la dirección IP del mismo. Es posible que queramos acceder a ella usando un nombre de dominio más fácil de recordar. Para esto tenemos dos opciones, o usamos un servidor de nombres de dominio donde esté establecida la asociación de la dirección ip al nombre que queremos ponerle a nuestra página, o podemos resolver esta asociación localmente introduciéndola en el archivo /etc/hosts. Para hacerlo editamos el archivo de manera que haya una entrada así:

ip_servidor nombre_dominio

192.168.2.100 www.servidorcep.es

De esta forma cuando pongamos en un navegador de un equipo cliente al que le hemos introducido esa asociación en su archivo hosts, www.servidorcep.es este cargará la página alojada en nuestro servidor como si hubiéramos introducido la dirección IP directamente.

Este artículo esta licenciado bajo Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.

Redes, servidores y seguridad informática en Linux

Enrique Brotons

29