SERVIDOR APACHE A lo largo de este módulo vamos a ir viendo los pasos para instalar el componente principal de nuestro servidor web. Apache es uno los servidores http más extendidos actualmente para la implementación de servidores web. Es un servidor de código abierto y multiplataforma, muy robusto y que destaca por su seguridad y rendimiento. Será el encargado de procesar las peticiones de recursos (páginas, archivos, etc.) que hagan los clientes que visiten nuestro sitio web, gestionar si se entregan esos contenidos o no al cliente dependiendo de las políticas de seguridad. Aparte del soporte para HTTP implícito, también nos ofrece soporte para la implementación de cifrados SSL y la configuración de conexiones seguras por medio de HTTPS. Conexión remota con el servidor (putty) Las instalaciones y configuraciones de nuestro servidor las realizaremos desde una terminal remota, utilizando el servicio SSH activado en FreeBSD por medio del programa putty que se describió en el módulo software necesario el cual nos permite conectarnos al servidor de forma remota sin tener que actuar directamente con el ordenador donde está instalado el sistema. Conectarnos al servidor: Suponiendo que ya tenemos nuestro servidor (máquina virtual) en funcionamiento, seleccionándola en la ventana de VirtualBox y pulsando el botón Iniciar. Abrir el programa putty Introducir la IP del servidor en el recuadro Host Name. Asegurarnos de dejar marcada la opción SSH en Connection type. Introducir una descripción en el recuadro Saved Sessions y pulsar el botón Save. De esta manera cada vez que deseemos conectarnos al servidor no tendremos que indicar la Ip, simplemente seleccionaremos de la lista el nombre y pulsaremos Load. Pulsar el botón Open para iniciar la conexión con el servidor. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 1/8
La primera vez que nos conectemos, se nos mostrará una ventana de advertencia de seguridad sobre las claves ssh por si deseamos almacenarlas en el registro de Windows para usos posteriores. Simplemente pulsaremos el botón Sí para que las recuerde. Se abrirá una ventana que hará las funciones de terminal, donde se nos solicitará el login y la clave del usuario con el que nos deseamos conectar. En nuestro caso utilizaremos el usuario super creado durante la instalación del sistema (ver Instalar FreeBSD 10.1 ). Una vez logeados, ya estaremos preparados para trabajar con nuestro servidor. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 2/8
Instalar el servidor APACHE Como ya comentamos en el módulo anterior, para poder realizar las instalaciones de paquetes debemos tener privilegios de administrador, lo que nos obliga a convertirnos en administrador de forma temporal. Ejecutamos el comando su e introducimos la clave del administrador (root). $ su Password: root@srvweb_peam:/usr/home/super # La instalación la realizaremos por medio de paquetes ya compilados del repositorio de FreeBSD por medio del comando pkg install apache24. Este comando iniciará primero una comprobación del catálogo local de repositorios por si fuese necesaria su actualización y posteriormente nos mostrará el paquete que se tiene que instalar, sus dependencias y el espacio necesario para su instalación, esperando la confirmación del usuario. Si en alguna de las instalaciones, se detecta que existen actualizaciones del programa pkg, primero nos preguntará si deseamos realizar su actualización antes de continuar con el paquete solicitado. # pkg install apache24 Updating FreeBSD repository catalogue... Fetching meta.txz: 100% 944 B 0.9kB/s 00:01 Fetching packagesite.txz: 100% 5 MiB 2.7MB/s 00:02 Processing entries: 100% FreeBSD repository update completed. 23970 packages processed Updating database digests format: 100% The following 9 packages will be affected (of 0 checked): New packages to be INSTALLED: apache24: 2.4.12 expat: 2.1.0_2 perl5: 5.18.4_11 pcre: 8.35_2 apr: 1.5.1.1.5.4 gdbm: 1.11_2 indexinfo: 0.2.2 gettext-runtime: 0.19.4 db5: 5.3.28_2 The process will require 0 GiB more space. 30 MiB to be downloaded. Proceed with this action? [y/n]:y Al confirmar esta acción, se iniciara la descarga del paquete, la instalación, la creación del usuario y grupo www y al finalizar nos mostrará una serie de comentarios acerca de cómo activar el servicio durante el arranque del sistema y de cómo tenemos que tratar el uso de las DNS. Una vez realizada la instalación, editaremos el fichero /etc/rc.conf para que cargue el servidor durante el proceso de inicio del sistema. Para ello nos vamos a servir del editor de textos ee incluido en FreeBSD ya que es uno de los más sencillos y fáciles de aprender. $ ee /etc/rc.conf Añadiremos la línea apache24_enable = YES, guardaremos los cambios y saldremos del editor. Para guardar los cambios accederemos al menú pulsando la tecla ESC, seleccionaremos la opción c) file operations y a continuación c) save file. Para salir del editor pulsaremos la tecla ESC y seleccionaremos la opción a) leave editor. Reiniciaremos el servidor con el comando reboot. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 3/8
Tras reiniciarse el servidor, vamos a comprobar que el servicio está en funcionamiento listando los procesos net con el comando netstat $ netstat -a Si nos muestra estas líneas el servicio estará preparado tcp4 0 0 *.http *.* LISTEN tcp6 0 0 *.http *.* LISTEN Comprobar desde otro pc el funcionamiento abriendo el navegador y escribiendo la ip de nuestro servidor, si funciona se mostrará el mensaje 'It works!'. Si obtenemos el siguiente mensaje de error cuando se esté iniciando el servidor: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message. Añadiremos la siguiente línea en el fichero de configuración de Apache /usr/local/etc/apache24/httpd.conf ServerName 127.0.0.1 ó ServerName localhost Esto lo comentaremos en el siguiente apartado de forma más amplia. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 4/8
Comando apachectl Si deseamos realizar las operaciones de puesta en marcha, detener o comprobar el servidor web de forma manual tendremos que utilizar el comando apachectl situado en el directorio /usr/local/sbin/ Muestra la versión de apache (-v) root@srvweb_peam:/usr/local/sbin # apachectl -v Server version: Apache/2.4.12 (FreeBSD) Server built: Feb 4 2015 08:06:56 Realiza una comprobación del archivo de configuraciones (configtest) # apachectl configtest Performing sanity check on apache24 configuration: Syntax OK Inícia el servidor (start) # apachectl start Performing sanity check on apache24 configuration: Syntax OK Starting apache24. Nos indica cual el identificador de proceso asociado al servidor y si se encuentra en funcionamiento # apachectl httpd (pid 690) already running Detiene el servidor (stop) # apachectl stop Stopping apache24. Waiting for PIDS: 690. Reiniciar el servidor (restart) # apachectl restart Performing sanity check on apache24 configuration: Syntax OK Stopping apache24. Waiting for PIDS: 690. Performing sanity check on apache24 configuration: Syntax OK Starting apache24. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 5/8
Configuración básica de Apache Ahora que ya tenemos instalado y funcionando el servidor Apache, vamos a comentar y realizar una serie de configuraciones básicas. Para configurar el servidor modificaremos el fichero /usr/local/etc/apache24/httpd.conf que es donde guarda los parámetros y opciones de su funcionamiento. Ejecutamos el comando su y luego editamos el fichero de configuración de apache $ su Password: root@srvweb_peam:/usr/home/super # ee /usr/local/etc/apache24/httpd.conf Poner comentarios Cuando necesitemos comentar alguna línea de este archivo simplemente pondremos al principio de la línea el carácter #. # De esta manera establecemos comentarios en el archivo de configuración Listen El comando Listen identifica los puertos en los que el servidor Web aceptará las peticiones entrantes. Por defecto, el Servidor Apache HTTP está configurado para escuchar en el puerto 80 para comunicaciones Web no seguras y en el puerto 443 para comunicaciones seguras. Listen 80 ServerAdmin Esta variable (directriz) establece la dirección de correo del administrador del servidor web. Esta dirección de correo aparecerá en los mensajes de error en las páginas generadas por el servidor Web, de tal manera que los usuarios pueden comunicar errores enviando correo al administrador. Una forma típica de configurar ServerAdmin es configurarlo en a webmaster@ejemplo.com. ServerAdmin webmaster@peam.es ServerName Esta variable para configurar un nombre de servidor y un número de puerto (que coincida con la directriz Listen) para el servidor. El ServerName no necesita coincidir con el nombre real de la máquina. Por ejemplo, el servidor Web puede ser www.example.com pero el nombre del servidor es en realidad foo.example.com. En nuestro caso como no tenemos configurado un nombre de dominio utilizaremos localhost o 127.0.0.1 que hacen referencia a nuestra máquina. ServerName DocumentRoot localhost:80 DocumentRoot es el directorio que contiene la mayoría de los archivos HTML que se entregarán en respuesta a peticiones. El directorio predeterminado DocumentRoot para servidores web seguros y no seguros es /usr/local/www/apache24/data. Por ejemplo, el servidor puede recibir una petición para el siguiente documento: http://172.26.0.150/cursos.html Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 6/8
El servidor busca por el archivo siguiente en el directorio por defecto: /usr/local/www/apache24/data/cursos.html Si deseamos establecer otra ubicación para la estructura de directorios visible desde la web, indicaremos la nueva ruta en esta directiva. DocumentRoot "/mnt/webapps/www" <Directory "/mnt/webapps/www"> Hemos cambiado la carpeta predeterminada donde se ubican los archivos de las webs a /mnt/webapps/www. También tendremos que cambiar el grupo principal de esta carpeta a www con el comando chgrp www /mnt/webapps/www y darle permisos de escritura con chmod 775 /mnt/webapps/www. Para evitar que se muestren los listados de archivos en los directorios web que no dispongan de archivo index.html o index.php, incluiremos la directiva Options en la sección Directory de la siguiente manera. <Directory "/mnt/webapps/www"> Options -Indexes Con esta modificación evitaremos que cuando un usuario solicite una ruta a un directorio web, se le muestre un listado con el contenido del mismo. Por ejemplo si disponemos de un directorio de nombre documentos en nuestro servidor y un usuario escribe en el navegador http://192.168.1.150/paginas y en este directorio no se encuentra un archivo de índice (index.html o index.php) el servidor web en lugar de mostrarle un listado del contenido del directorio le mostrará un mensaje indicando que no tiene permiso para acceder a este directorio. Para comprobar que funciona este cambio vamos a crear una página básica html en este directorio con el editor ee que la guardaremos con el nombre index.html. <html> <head> <title>pagina INICIO</title> </head> <body> <h1>funciona</h1> <p>si consigues leer este texto estarás en la nueva ubicación de los documentos web de apache 24</p> </body> </html> Ahora cuando escribamos la ip de nuestro servidor en el navegador, si funciona se mostrará lo siguiente: Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 7/8
Alias La directiva Alias permite que los documentos se almacenen en un directorio del sistema de archivos local que no sea el especificado por DocumentRoot. Si vamos a crear un alias en un directorio fuera del de DocumentRoot, puede que tengamos que permitir explícitamente el acceso al directorio de destino. Por ejemplo podemos tener una web en desarrollo en el directorio /var/www/miweb que no es el especificado en la directiva DocumentRoot de Apache, por lo que no podemos acceder a su contenido. Por medio de Alias podemos mapear su dirección a una carpeta virtual como si se encontrara dentro de nuestro DocumentRoot. Alias /miweb /var/www/miweb <Directory /var/www/miweb > AllowOverride none Require all granted </Directory> A partir de este momento podremos acceder al contenido de miweb desde nuestro navegador simplemente indicando la URL del servidor seguida del nombre del alias (http://192.168.1.150/miweb). DirectoryIndex DirectoryIndex es la página web por defecto que entrega el servidor cuando hay una petición de índice de un directorio especificado con una barra (/) al final del nombre del directorio. <IfModule dir_module> DirectoryIndex index.html </IfModule> Se pueden ir añadiendo distintos nombres de archivos separados por un espacio en blanco entre cada nombre de archivo. Esta directiva la modificaremos más adelante cuando incluyamos los servicios php en nuestro servidor web. Grupo Isfe (c/ Blasco Ibáñez, 74 / 46100 / Burjassot / 963 643 447 / info@peam.es / peam.es) Pág: 8/8