¿Cómo instalar y configurar un servidor web en Ubuntu 16.04?

Una de las ventajas que podemos utilizar cuando tenemos instalado un sistema operativo como Ubuntu es la de tener un sistema operativo muy parecido al que utilizan la mayoría de servidores en Internet.

Esto puede ayudarnos mucho a la hora de desarrollar aplicaciones o probar nuestra página web en local antes de ponerla en el servidor real, y así evitar posibles problemas que puedan ocurrir en el transcurso de subir la web a “producción” (término utilizado para denominar cuando un sistema está listo para su puesta en marcha).

En este artículo vamos a aprender a instalar y configurar un servidor web con todos los elementos indispensables (Apache, como servidor web; PHP, para contenido dinámico; y MySQL para bases de datos). Este conjunto de aplicaciones, para nuestro caso, se suele denominar LAMP (por las siglas de Linux, Apache, MySQL y PHP).

Instalación

Lo primero que tenemos que hacer es instalar todos los elementos necesarios para que funcione un servidor web. Voy a poner el comando completo y después voy a explicar qué es cada cosa.

Ahora vamos a ir uno por uno:

  • apache2: es la aplicación que actúa como servidor web.
  • php: el intérprete del lado del servidor para poder usar algún tipo de lenguaje de programación dinámico.
  • curl: aplicación para realizar peticiones. Muy útil si vamos a utilizar algún tipo de API en nuestra aplicación.
  • php-curl: librería de php para poder usar curl.
  • mysql: servidor de bases de datos.
  • php-mysql: librería de php para poder usar mysql.
  • libapache2-mod-php*: librería de apache2 para poder ejecutar archivos .php.
* Si estamos en Ubuntu 14.04, tenemos que instalar apache2-mpm-prefork en lugar de libapache2-mod-php

Durante la instalación, aparecerá una pantalla para que introduzcamos una contraseña. Esa contraseña es la de root de MySQL, es decir, el usuario con más permisos. Yo recomiendo desde aquí utilizar una contraseña segura.

Una vez que ya tenemos todas las aplicaciones y librerías necesarias, vamos a empezar con la segunda parte, la de la configuración de todos los servicios.

Configuración de apache2

Vamos a hacer una configuración que se podría considerar avanzada. Lo que vamos a tener al final de este apartado serán dos servidores webs virtuales configurados en la misma dirección IP pero usando dos puertos distintos, es decir, podremos acceder a dos webs totalmente distintas en la misma IP (o dominio) sólo con cambiar el puerto.

Para ello, lo primero es preparar dos carpetas. Por defecto, la instalación de Apache crea la carpeta donde poner nuestros archivos para que sean visibles a través del servidor web en “/var/www/html”. Lo que vamos a hacer es crear otra carpeta que le pondremos el nombre de “other” en la ruta “/var/www”. Para ello ejecutamos el siguiente comando:

Es importante que el usuario que ejecuta el servidor web (un usuario que crea la instalación de Apache, llamado “www-data”, que se añade automáticamente a un grupo que también crea la instalación y que tiene el mismo nombre) sea el dueño de las carpetas, para que después no haya problemas con los permisos de la aplicación. Lo único que tenemos que hacer es poner el siguiente comando:

Ese comando lo que significa es que vamos a cambiar la propiedad de las carpetas que están a partir de “www” (ésta incluida), es decir, de forma recursiva (-R), y que el nuevo dueño va a ser el usuario www-data y el grupo www-data (con el formato usuario:grupo).

Y vamos a aplicar los permisos necesarios, dejando todos los permisos para el propietario (7) y de lectura y ejecución para el grupo y para el resto (5, 5).

Ya tenemos todos los temas de carpetas y permisos solucionados. Ahora vamos con los archivos de configuración. El primero de ellos “ports.conf”.

Antes de seguir adelante, yo voy a usar “nano” como editor, pero se puede usar cualquiera, incluso los que tienen interfaz gráfica. El primero lo voy a hacer con “nano” y “pluma” (que es el editor por defecto de Ubuntu MATE) a modo de ejemplo, pero después voy a seguir sólo con “nano”.

Habría que añadir la línea que está resaltada en el siguiente código:

En mi caso es “8080” porque es el segundo puerto que voy a utilizar (el que utiliza por defecto Apache es 80, como se ve en la imagen, el primer “Listen”).

Después de modificar el archivo tenemos que pulsar “Control+o” para guardar y, despues, “Control+x” para salir.

En la parte inferior se pueden ver los diferentes comandos que hay. Si abajo pone ^X, significa “Control+X”.

Ahora usando pluma:

En este caso podemos simplemente darle al botón de guardar y, después, pulsar la (X) del panel superior derecho para cerrar.

Al cerrar el editor, habrá unos “warnings” en el terminal. No hay que preocuparse por eso.

Con esto ya hemos configurado nuestro servidor para que escuche en dos puertos distintos, en mi caso, el puerto 80 y el 8080. Ahora vamos a indicarle que hay dos aplicaciones distintas que van a ejecutarse cada una en un puerto. Para ello vamos a modificar el “virtualhost” por defecto y vamos a crear otro.

Al igual que antes, hay que añadir o modificar las líneas resaltadas.

La parte de “<Directory…” es para permitir indexar las carpetas del lado del servidor en el caso de que no haya un index (index.html, index.php, …) y para que pueda seguir el servidor los enlaces simbólicos y para que se permitan todas las opciones del .htaccess. Toda esta parte está puesta para aquellos que necesiten usar archivos .htaccess (por ejemplo, para habilitar las urls “amigables” de wordpress y para hacer las nuestras propias en nuestras aplicaciones), es decir, si no vas a hacer una aplicación en este sentido, podrías no añadir la parte de “<Directory…”.

Ahora vamos a crear el segundo VirtualHost y a configurarlo adecuadamente.

 

Como vemos al principio del archivo, esta aplicación será la que use el puerto “8080” que hemos configurado antes.

Ya hemos terminado con la parte de configuración de ficheros, ahora terminamos con unos pocos comandos más.

Activamos el mod rewrite (en el caso de que lo vayamos a necesitar):

Añadimos el segundo sitio que hemos creado (other.conf) a la lista de sitios disponibles:

Y, para terminar, reiniciamos el servicio Apache:

Con todo esto que hemos hecho tendremos que ser capaces de acceder tanto a http://localhost como a http://localhost:8080 .

Yo, para comprobarlo, he dejado el index que instala Apache por defecto en la dirección principal (puerto 80) y he creado un archivo llamado “info.php” en el secundario (puerto 8080) con el siguiente contenido:

Y os dejo aquí las capturas de las dos “aplicaciones”.

Página mostrada en el puerto 80

 

Página mostrada en el puerto 8080

Conclusión

Ya hemos configurado todo lo necesario para tener dos aplicaciones en el mismo servidor y en el mismo dominio o IP, ahora sólo faltaría rellenar las dos aplicaciones con contenido.

Es un proceso que, la primera vez, puede resultar un poco difícil o tedioso, pero una vez que lo has realizado varias veces se vuelve completamente automático.

Para finalizar, esta vez una nota.

Para todos aquellos que quieran seguir la guía ¿Cómo crear un servidor casero mediante Debian? (parte 1) pueden seguir por aquí, que sería el siguiente paso. Esa guía se quedó incompleta al cerrar la web Forat.info.

WormDay

Estudiante de Grado en Informática y aprendiz de informático. Siempre intento aprender y enseñar.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*