Cómo instalar Nginx con PHP y MySQL (LEMP Stack) en Ubuntu 18.04

Nginx(pronunciado«motor x») es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, su rico conjunto de características, su sencilla configuración y su bajo consumo de recursos. Este tutorial muestra cómo puedes instalar Nginx en un servidor Ubuntu 18.04 LTS con soporte para PHP 7.2 (a través dePHP-FPM) y soporte para MySQL (LEMP =Linux + nginx (se pronuncia «engine x») +MySQL +PHP).

Requisitos previos

  • Servidor Ubuntu 18.04 LTS
  • Privilegios de root

¿Qué vamos a hacer?

  1. Instalar Nginx
  2. Instalar MySQL
  3. Instalar PHP-FPM
  4. Configurar Nginx y PHP-FPM
  5. Instalar PhpMyAdmin
  6. Configurar PhpMyAdmin
  7. Probar

Paso 1 – Instalar Nginx

Nginx o motor x es un servidor HTTP y proxy de alto rendimiento y bajo consumo de memoria. La mayoría de los sitios web a gran escala como Netflix, Pinterest, CloudFlare, GitHub utilizan Nginx.

En este paso, instalaremos el servidor web Nginx desde el repositorio de Ubuntu.

Ejecuta el siguiente comando.

sudo apt install nginx -y

Una vez completada la instalación, inicia el servicio Nginx y habilítalo para que se lance cada vez que se inicie el sistema.

systemctl start nginx
systemctl enable nginx

La instalación de Nginx se ha completado.

Configurar el cortafuegos

Se recomienda activar el cortafuegos en el servidor.

Añade el puerto del servicio SSH y HTTP a la configuración del cortafuegos.

Ejecuta el siguiente comando UFW.

ufw allow ssh
ufw allow http

Ahora inicia el cortafuegos UFW y habilítalo para que se inicie siempre al arrancar el sistema.

ufw enable

El servidor web Nginx está en funcionamiento bajo el cortafuegos UFW.

Configuración del cortafuegos UFW

Paso 2 – Instalar MySQL

MySQL es el sistema de gestión de bases de datos relacionales (RDBMS) de código abierto más popular, creado por Oracle Corporation. Es un componente central de la pila LEMP, y vamos a instalar la última versión de MySQL desde el repositorio de Ubuntu.

Instala MySQL con el comando apt que aparece a continuación.

sudo apt install mysql-server mysql-client -y

Una vez completada la instalación de MySQL, inicia el servicio MySQL y habilítalo para que se inicie siempre al arrancar el sistema.

systemctl start mysql
systemctl enable mysql

Instalar el servidor de base de datos MySQL

Y hemos instalado MySQL 5.7 en el servidor Ubuntu 18.04.

Paso 3 – Instalar PHP-FPM

PHP-FPM o FastCGI Process Manager es una alternativa para el antiguo PHP FastCGI que proporciona características adicionales y mejoras de velocidad. Se adapta bien a sitios pequeños y grandes basados en el lenguaje de programación PHP.

En este paso, instalaremos PHP7.2-FPM con algunas extensiones adicionales requeridas por phpmyadmin.

Instala PHP-FPM utilizando el siguiente comando.

sudo apt install php7.2 php7.2-fpm php7.2-cli php7.2-curl php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php-pear -y

Ahora inicia el servicio PHP-FPM y habilítalo para que se inicie cada vez al arrancar el sistema una vez completada la instalación.

systemctl start php7.2-fpm
systemctl enable php7.2-fpm

PHP7.2-FPM está funcionando en Ubuntu 18.04 bajo el archivo sock, compruébalo usando el comando netstat.

netstat -pl | grep php

Instalar y probar PHP FPM

Paso 4 – Configurar Nginx y PHP-FPM

En este paso, configuraremos el servidor web Nginx y PHP-FPM.

Configurar Nginx

Ve al directorio de configuración ‘/etc/nginx’, y edita el archivo ‘nginx.conf’ usando vim o nano.

cd /etc/nginx/
vim nginx.conf

Descomenta las siguientes líneas.

keepalive_timeout 2;
server_tokens off;

Guarda el archivo de configuración y sal del editor.

Ahora edita el archivo de host virtual Nginx por defecto.

vim sites-available/default

Descomenta la línea PHP que se muestra a continuación y cambia la línea del archivo sock.

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        # # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        # # With php-cgi (or other tcp sockets):
        # fastcgi_pass 127.2.0.1:9000;
        }

Guarda y sal.

Prueba la configuración de Nginx y asegúrate de que no hay ningún error, luego reinicia el servicio.

nginx -t
systemctl reload nginx

Reinicia Nginx y prueba la configuración

Configurar PHP-FPM

Ve al directorio ‘/etc/php/7.2’ y edita el archivo ‘php.ini’.

cd /etc/php/7.2/
vim fpm/php.ini

Descomenta la línea ‘cgi.fix_patinfo’ y cambia el valor a ‘0’.

cgi.fix_pathinfo=0

Guarda y sal.

Vuelve a cargar el servicio PHP-FPM.

systemctl reload php7.2-fpm

Y ya hemos completado la configuración del servidor web Nginx y de PHP-FPM.

Paso 5 – Instalar PhpMyAdmin

PhpMyAdmin es una aplicación basada en PHP para gestionar bases de datos MySQL o MariaDB desde un navegador web.

En este paso, instalaremos y configuraremos phpmyadmin bajo la pila LEMP (Linux, Nginx, MySQL y PHP-FPM).

Instala PHPMyAdmin con el comando apt que aparece a continuación.

sudo apt install phpmyadmin -y

Durante la instalación, te preguntará por la configuración del servidor web para phpmyadmin.

Instalar PHPMyAdmin

No elijas ninguna opción y mueve el cursor a «Aceptar».

Para la configuración de la base de datos de phpmyadmin, elige ‘Sí’.

No selecciones configurar un servidor web

Y escribe un nuevo administrador de phpmyadmin ‘STRONG’ como ‘Hakaselabs001@#’.

Introduce una contraseña

Repite la contraseña de ‘Hakaselabs001@#’.

repite la contraseña

Y la instalación de phpmyadmin está completa.

Paso 6 – Configurar PhpMyAdmin

Después de la instalación de phpmyadmin, necesitamos configurar phpmyadmin para que se ejecute bajo el servidor web Nginx y configurar el acceso del usuario MySQL phpmyadmin.

Configurar PhpMyAdmin con Nginx

Para ejecutar phpmyadmin bajo el servidor web Nginx, tenemos que añadir la configuración al archivo de configuración del host virtual.

Ve al directorio de configuración ‘/etc/nginx’, y edita el archivo de host virtual por defecto.

cd /etc/nginx/
vim sites-available/default

Pega la siguiente configuración de Nginx para phpmyadmin dentro del paréntesis ‘servidor {…}’.

location /phpmyadmin {
    root /usr/share/;
    index index.php;
    try_files $uri $uri/ =404;

location ~ ^/phpmyadmin/(doc|sql|setup)/ {
    deny all;
    }

location ~ /phpmyadmin/(.+\.php)$ {
    fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
    }
}

Guarda y sal.

Prueba la configuración de nginx y reinicia el servicio nginx.

nginx -t
systemctl reload nginx

Y hemos añadido la configuración de Nginx para phpmyadmin.

Configurar el usuario de MySQL para PhpMyAdmin

En este tutorial, utilizaremos un usuario MySQL no root para phpmyadmin. Crearemos un nuevo usuario y le concederemos todos los privilegios de la base de datos dentro del servidor.

Accede al shell de MySQL.

mysql -u root -p

Ahora crea un nuevo usuario utilizando las consultas de MySQL que aparecen a continuación.

create user hakase@'localhost' identified by 'Hakaselabs001@#';
grant all privileges on *.* to hakase@'localhost' identified by 'Hakaselabs001@#';
flush privileges;
exit;

Y hemos creado un nuevo usuario para el acceso a phpmyadmin.

Configurar un usuario de MySQL

Paso 7 – Pruebas

Prueba de los archivos PHP

Ve al directorio raíz de la web ‘/var/www/html’ y crea un nuevo archivo phpinfo.

cd /var/www/html/
vim info.php

Pega el script phpinfo que aparece a continuación.

<?php
phpinfo();
?>

Guarda y sal.

Ahora abre el navegador web y escribe la dirección IP del servidor como se muestra a continuación. Sustituye la IP por la de tu servidor.

http://192.168.33.10/info.php

Y a continuación tienes toda la información sobre la configuración del servidor PHP.

Resultado de la información PHP

Prueba de inicio de sesión PhpMyAdmin

En el navegador web, escribe la siguiente URL de phpmyadmin (sustituye la IP por la de tu servidor).

http://192.168.33.10/phpmyadmin/

En la página de inicio de sesión de phpmyadmin, escribe el usuario ‘hakase’ con la contraseña ‘Hakaselabs001@#’ y haz clic en el botón ‘Go’.

Inicio de sesión de PHPMyAdmin

Ahora veremos el panel de phpmyadmin como se indica a continuación.

Panel de control de PHPMyAdmin

La pila LEMP y PhpMyAdmin están instalados con éxito en Ubuntu 18.04 LTS.

También te podría gustar...