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 Ubuntu 20.04 LTS Focal Fossa.
Si desea instalar LEMP en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Ahora está conectado a su servidor, está listo para comenzar la instalación de LEMP.
Instalación de Nginx
Los repositorios de paquetes oficiales de Ubuntu incluyen una versión actualizada de Nginx, luego podemos instalar los paquetes necesarios usando apt.
Actualice la lista de paquetes de Ubuntu 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 Ubuntu está activo, debe 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 Ubuntu 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 raíz 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, necesita 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 |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$u3KbW* y@aUv+#3LNVNBBcGIT0Q2RfuDwKRUDgRa2wnAAFeL4m2I06vi/| caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 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 |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$u3KbW* y@aUv+#3LNVNBBcGIT0Q2RfuDwKRUDgRa2wnAAFeL4m2I06vi/| caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *13097EDBBF2AB852D55D47ED1477E2901F60DFE1 | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 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
Instalar PHP
Para instalar PHP desde la terminal:
sudo apt install php-fpm php-mysql
ATENCIÓN: En el momento de escribir PHP 7.4 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.4/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.4-fpm
Configure Nginx para usar PHP:
sudo nano /etc/nginx/sites-available/default
ATENCIÓN: En el momento de escribir PHP 7.4 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 de ubicación ~ \.php $.
Realice los cambios necesarios agregando:
index.php
location ~ \.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.4-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
Conclusión
Ha finalizado la instalación y configuración básica de un servidor web Nginx con MySQL y PHP en Ubuntu 20.04 LTS.