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?
- Instalar Nginx
- Instalar MySQL
- Instalar PHP-FPM
- Configurar Nginx y PHP-FPM
- Instalar PhpMyAdmin
- Configurar PhpMyAdmin
- 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.
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
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
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
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.
No elijas ninguna opción y mueve el cursor a «Aceptar».
Para la configuración de la base de datos de phpmyadmin, elige ‘Sí’.
Y escribe un nuevo administrador de phpmyadmin ‘STRONG’ como ‘Hakaselabs001@#’.
Repite la contraseña de ‘Hakaselabs001@#’.
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.
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.
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’.
Ahora veremos el panel de phpmyadmin como se indica a continuación.
La pila LEMP y PhpMyAdmin están instalados con éxito en Ubuntu 18.04 LTS.