Cómo instalar LEMP, Linux, nginx, MySQL, PHP en Ubuntu 14.04

En este tutorial vamos a ver como instalar y configurar un servidor LEMP para Ubuntu, aunque en este caso estoy utilizando la versión de Ubuntu 14.04, este tutorial sirve para cualquier versión de Ubuntu desde la 12.04.

Si quieres saber como instalar un Servidor LAMP en Ubuntu con Apache puedes ver este tutorial.

Un servidor LEMP se refiere a un conjunto de aplicaciones que por sus siglas es Linux+(Engine X)nginx+MySQL+PHP y en este caso vamos a instalar y configurar un servidor con los siguientes componentes:

nginx – Servidor Web muy versatil y rápido, muy utilizado y un buen sustituto para Apache. Se suele pronunciar Engine X por eso la E de LEMP.

MySQL 5 – Uno de los servidores de base de datos más populares y utilizados en sitios y aplicaciones web

PHP 5 – Es un lenguaje interpretado utilizado para construir aplicaciones y páginas web

Concepto: Un servidor no es más que un PC que presta algún servicio (como mostrar páginas web).

Pasos previos:

 

  • Obtener e Instalar Ubuntu: lo pueden obtener desde la página Oficial de Ubuntu, si el servidor Web LEMP sólo lo van a utilizar como servidor les aconsejo descargar la versión de servidor. Igualmente se puede hacer la instalación sobre la versión de Escritorio de Ubuntu.
  • El servidor debe tener al menos 256 MB de memoria RAM, si no saben cuanta memoria tiene su PC simplemente ejecuten free -m en el terminal si donde dice total es mayor a 256 están bien. Yo personalmente recomiendo tener al menos 512 MB de memoria RAM
  • También pueden probar instalando el servidor en una máquina virtual ya sea con virtualbox, vmware, kvm o el manejador de máquinas virtuales de su preferencia.
  • Si van a hacer la administración del servidor LEMP de manera remota les aconsejo instalar openssh-server (sudo aptitude install openssh-server).

Les aconsejo también seguir el tutorial paso a paso, he tratado de hacer los pasos lo más concretos y cortos posibles, para que así no se pierdan de nada y tampoco les aburra el tutorial.

Bueno ya tenemos todo listo para empezar así que abran un Terminal y pongámonos a trabajar.

1. Actualizar nuestro sistema

Es siempre aconsejable realizar la actualización de nuestro sistema antes de llevar a cabo cualquier instalación simplemente ejecuten lo siguiente en el terminal

sudo apt-get update && sudo apt-get upgrade

Con este comando se actualiza nuestra lista de repositorios y los paquetes que tengamos instalados si hay alguna actualización disponible. Si les hace cualquier pregunta acerca de actualizar algún paquete pueden contestar que sí.

2. Instalar NGINX

La forma más fácil de instalar nginx es ejecutar el siguiente comando:

sudo apt-get install nginx

Cuando pregunte si quieres continuar simplemente responde Y y enter y espera que finalice la instalación.

Para probar que la instalación se hizo correctamente en tu navegador ve a http://localhost  o http://tudireccionIP y deberías ver un mensaje como este:

nginx

3. Instalar MySQL

MySQL es una de las base de datos open source más popular y utilizadas en innumerables páginas web y aplicaciones tanto gratuitas como comerciales. Es una base de datos bastante robusta y flexible, fácil de configurar y lo bastante rápida para la mayoría de las aplicaciones comunes.

Para instalar el servidor de MySQL debemos ejecutar el siguiente comando:

sudo apt-get install mysql-server

Esto instalará todos los paquetes y librerias necesarios para que funcione el servidor MySQL

Durante la instalación les aparecerá la siguiente pantalla solicitando la clave de root para el servidor MySQL, aquí deberán colocar una clave para el administrador de la base de datos, no es recomendable colocar la misma clave del usuario de Ubuntu, se recomienda también que tenga una longitud mayor a 8 caracteres y que mezclen letras, símbolos y números, no son permitidos los espacios en blanco.

Nota: No confundir esto con el usuario root de Linux, este es el usuario root de MySQL

Para comprobar el funcionamiento del servidor MySQL ejecuten el siguiente comando:

mysql -u root -p

Deberá pedirles la clave que colocaron en el paso anterior y aparecerles el prompt  mysql> algo parecido a esto:

vensign@lemp-vensign:~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37-1ubuntu5 (Ubuntu)

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

Vemos que nos muestra la versión del MySQL que acabamos de instalar. Para salir del prompt de mysql y volver al terminal de Linux simplemente escriban exit y presionen Enter o Intro.

Los comandos para administrar MySQL son:

Función Comando Comando Corto
Iniciar MySQL sudo /etc/init.d/mysql start sudo service mysql start
Detener MySQL sudo /etc/init.d/mysql stop sudo service mysql stop
Reiniciar MySQL sudo /etc/init.d/mysql restart sudo service mysql restart
Estatus MySQL sudo /etc/init.d/mysql status sudo service mysql status

 

El archivo de configuración de mysql se encuentra en /etc/mysql/my.cnf

4. Haciendo Seguro MySQL

Si vamos a utilizar nuestro servidor para producción queremos que sea lo más seguro posible, en el caso de MySQL nos proporciona un script que podemos ejecutar para realizar algunas configuraciones de seguridad.

Para esto ejecutamos el siguiente comando:

sudo mysql_secure_installation

Primero nos preguntará la contraseña de root de MySQL que establecimos en el paso anterior.

Luego nos preguntará si queremos cambiar nuestra contraseña de usuario root de MySQL si estás contento con tu contraseña puedes decir que N a este paso.

Luego nos hará una serie de preguntas a las cuales lo más fácil y seguro es responder que Si a todas. Coloco un comentario sobre cada pregunta para explicar un poco de que trata.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

// Quitar cualquier usuario anónimo
Remove anonymous users? [Y/n] y                                            
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

// Que el usuario root de MySQL no se pueda loguear remotamente
Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

// Quitar la base de datos test que crea por defecto MySQL
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

// Recargar los privilegios para que hagan efecto los cambios.
Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

Con esto tendremos un MySQL un poco más seguro.

5. Instalar PHP

PHP es un lenguaje interpretado que es utilizado para crear páginas web dinámicas y aplicaciones, de una manera rápida y flexible. Entre las plataformas que utilizan PHP está WordPress, Drupal y Joomla.

Para instalar PHP 5 junto con el soporte para MySQL ejecutamos el siguiente comando en el terminal:

sudo apt-get install php5-fpm php5-mysql

Igual que en los pasos anteriores responde S cuando te pregunte que quieres instalar los paquetes.

Nota: Como vemos instalamos la versión FPM de PHP ((PHP5 FastCGI Process Manager), esta es la versión ideal para utilizar con nginx.

Los comandos para administrar PHP son:

Función Comando Comando Corto
Iniciar PHP sudo /etc/init.d/php5-fpm start sudo service php5-fpm start
Detener PHP sudo /etc/init.d/php5-fpm stop sudo service php5-fpm stop
Reiniciar PHP sudo /etc/init.d/php5-fpm restart sudo service php5-fpm restart
Estatus PHP sudo /etc/init.d/php5-fpm status sudo service php5-fpm status

6. Configurar NGINX y PHP para que funcionen juntos

Ahora que tenemos todos los componentes instalados nos falta configurar PHP y NGINX para que trabajen juntos para estos hacemos los siguientes pasos:

Primero editamos el archivo de configuración de PHP-FPM que está ubicado en /etc/php5/fpm/php.ini. Abrélo con tu editor de texto favorito, en este caso yo voy a utilizar nano:

sudo nano /etc/php5/fpm/php.ini

Y cambiamos la línea cgi.fix_pathinfo=1 por, si el parámetro tiene un ( ; ) adelante lo eliminamos ya que quiere decir que está comentado :

cgi.fix_pathinfo=0

Nota: Si este parámetro lo dejamos en 1, el intérprete de php hará todo lo posible para procesar el archivo más cercano al archivo solicitado, lo que es un riesgo de seguridad. Colocando el parámetro a 0 sólo se procesará el archivo solicitado.

Guardamos el archivo y reiniciamos PHP ejecutando:

sudo service php5-fpm restart

Ahora vamos a modificar el archivo de configuración del sitio por defecto de nginx que es el que vamos a utilizar y que está ubicado en /etc/nginx/sites-available/default, una vez más utilizando nano:

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

Debemos descomentar las líneas que comienzan con # que se indican a continuación para que el archivo quede de la siguiente forma:

 location ~ \.php$ {
         fastcgi_split_path_info ^(.+\.php)(/.+)$;
 #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 #
 #       # With php5-cgi alone:
 #        fastcgi_pass 127.0.0.1:9000;
 #       # With php5-fpm:
         fastcgi_pass unix:/var/run/php5-fpm.sock;
         fastcgi_index index.php;
         include fastcgi_params;
 }

Guarda el archivo y reiniciamos nginx ejecutando:

sudo service nginx restart

7. Verificando que todo funciona

Por último debemos verificar que todo funciona y que nuestra configuración está correcta.

En Ubuntu el directorio por defecto donde estarán nuestros archivos para el sitio es /usr/share/nginx/html. Por lo que crearemos un archivo ahí que llamaremos prueba.php, creamos el archivo ejecutando:

sudo nano /usr/share/nginx/html/prueba.php

Y dentro de ese archivo escribimos la siguiente línea:

<?php phpinfo(); ?>

Ahora abrimos en nuestro navegador http://localhost/prueba.php o http://tudireccionip/prueba.php

Y nos debería aparecer algo como:

php-nginx

Si no te aparece esto o produce algún error entonces verifica tu configuración o deja un comentario y veré como puedo ayudarte.

Eso es todo ya tenemos un servidor LEMP funcionando, no olvides borrar el archivo de prueba.php una vez que hayas terminado de probar el servidor, ya que este archivo da mucha información de tu servidor que no queremos que sea pública.

Cualquier duda o sugerencia por favor deja un comentario y si te gustó este artículo puedes suscribirte al blog dejando tu dirección de correo en la barra de la izquierda y recibirás un correo semanal con los últimos artículos que tenemos.

1 comentario