Introducción
LEMP es un grupo de software de código abierto que normalmente se instala junto para permitir que un servidor aloje sitios web y aplicaciones web dinámicos. LEMP incluye Nginx, MySQL, PHP.
En este tutorial instalaremos LEMP en Linux Mint 19 Tara.
Instalación de Nginx
Los repositorios oficiales de paquetes de Linux Mint incluyen una versión actualizada de Nginx, luego podemos instalar los paquetes necesarios usando apt.
Actualice la lista de paquetes de Linux Mint para tener la última versión de las listas de repositorios, desde la terminal:
sudo apt update
Para instalar Nginx abre la terminal y da estos comandos:
sudo apt install nginx
Si el firewall de Linux Mint está activo, necesita habilitar el tráfico para Nginx:
sudo ufw allow 'Nginx HTTP'
En este punto, el servidor está listo con las configuraciones predeterminadas. Simplemente conéctese a su dirección IP pública o localhost:
http://localhost
Para reiniciar Nginx:
sudo service nginx restart
Para detener Nginx:
sudo service nginx stop
Para iniciar Nginx:
sudo service nginx start
Instalar MySQL
Puede instalar MySQL usando el repositorio oficial de Linux Mint con apt. Instale MySQL:
sudo apt install mysql-server
Asegurar MySQL
Inicie un script MySQL para cambiar algunas configuraciones:
sudo mysql_secure_installation
Se le pedirá que ingrese una contraseña para el usuario root, que utilizará para iniciar sesión en el servidor MySQL.
Ingrese "y" para "sí" o cualquier otra letra para "no".
Se le preguntará si desea probar la seguridad de la contraseña.
Entonces se recomienda presionar "y" y luego "sí".
- Eliminar usuarios anónimos
- Deshabilitar el inicio de sesión de root de forma remota
- Eliminar la base de datos de prueba
- Actualizar las nuevas reglas
Cambiar el método de autenticación
A partir de la versión 5.7 de MySQL, el usuario root de MySQL está configurado para autenticarse a través del complemento auth_socket de forma predeterminada en lugar de una contraseña.
Para usar una contraseña para conectarse a MySQL como usuario root, debe cambiar el método de autenticación, de auth_socket a mysql_native_password.
Como aún no se ha establecido una contraseña, puede conectarse al servidor MySQL simplemente usando el comando mysql o sudo mysql si ha iniciado sesión como usuario normal. A continuación, deberá usar el comando mysql -u root -p como root, de lo contrario sudo mysql -u root -p como usuario normal.
Entonces, si ha iniciado sesión como root, escriba en la terminal:
mysql
De lo contrario, si ha iniciado sesión como un usuario normal con privilegios de sudo:
sudo mysql
Para verificar el método de autenticación asociado con las cuentas mysql:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Debería recibir un mensaje similar a este:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *5852386AB32C5DAD5DDA4F5FED911A70DA342656 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Como puede ver, el método de autenticación auth_socket está configurado por defecto para el usuario root.
Para utilizar la autenticación de contraseña para la cuenta raíz, realice los siguientes cambios:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'TUA_PASSWORD';
Atención:Your password does not satisfy the current policy requirements.
este tutorial
Actualizar las tablas:
FLUSH PRIVILEGES;
Ahora puede verificar el nuevo método de autenticación asociado con el usuario raíz:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Debería recibir un mensaje similar a este:
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *E6A3377941E640ADEDCC8907E390B06B0C863862 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *5852386AB32C5DAD5DDA4F5FED911A70DA342656 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Salga del indicador de MySQL:
exit;
Para iniciar sesión nuevamente en el servidor MySQL ahora, deberá ingresar una contraseña, luego desde la terminal:
Si ha iniciado sesión como root, escriba en la terminal:
mysql -u root -p
De lo contrario, si ha iniciado sesión como un usuario normal con privilegios de sudo:
sudo mysql -u root -p
Instalación de PHP
Para instalar PHP desde la terminal:
sudo apt install php-fpm php-mysql
ATENCIÓN: En el momento de escribir PHP 7.2 es la última versión, por lo que es posible que deba cambiar la ruta del archivo con la versión que está utilizando.
Para que la instalación de PHP sea más segura, escriba el siguiente comando:
sudo nano /etc/php/7.2/fpm/php.ini
Busque esta línea ; cgi.fix_pathinfo, elimine el ";" e inserte el parámetro "0". Entonces:
cgi.fix_pathinfo=0
Reinicie PHP:
sudo systemctl restart php7.2-fpm
Configure Nginx para usar PHP:
sudo nano /etc/nginx/sites-available/default
ATENCIÓN: En el momento de escribir PHP 7.2 es la última versión, por lo que es posible que deba cambiar la ruta del archivo a la versión que está usando dentro del bloque ubicación ~ \.php $.
Realice los cambios necesarios agregando: index.php ubicación ~.php $ fastcgi_pass unix: /var/run/php/php7.X-fpm.sock;.
Entonces:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location /{
try_files $uri $uri/=404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Probemos la configuración correcta:
sudo nginx -t
Reinicie Nginx:
sudo service nginx restart
Revisemos la instalación de PHP. Creemos un archivo con la extensión.php:
sudo nano /var/www/html/info.php
Pega este código:
<?php phpinfo(); ?>
Guarde y cierre el archivo.
Conéctese a su dirección IP pública o localhost:
http://localhost/info.php
Ha finalizado la instalación y configuración básica de un servidor web Nginx con MySQL y PHP en Linux Mint 19 Tara.