GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar phpMyAdmin con Nginx (LEMP) en Ubuntu 18.04 LTS

Este tutorial le mostrará cómo instalar phpMyAdmin con Nginx, MariaDB y PHP7.2 (LEMP) en Ubuntu 18.04. phpMyAdmin es una herramienta de administración de base de datos basada en web gratuita y de código abierto escrita en PHP. Proporciona una interfaz web gráfica para que los usuarios administren la base de datos MySQL o MariaDB. También aprenderá cómo habilitar la autenticación de dos factores en phpMyAdmin.

Requisitos

Para seguir este tutorial, debe tener un sistema operativo Ubuntu 18.04 ejecutándose en su computadora local o en un servidor remoto. Si está buscando un VPS (servidor privado virtual), puede hacer clic en este enlace especial para obtener $ 100 de crédito gratis en DigitalOcean. (Solo para nuevos usuarios). Si ya es usuario de DigitalOcean, puede hacer clic en este enlace especial para obtener $50 de crédito gratis en Vultr (solo para nuevos usuarios).

Se supone que ya instaló la pila LEMP en Ubuntu 18.04. Si no es así, consulta el siguiente tutorial.

  • Cómo instalar la pila LEMP (Nginx, MariaDB, PHP7.2) en Ubuntu 18.04

Con eso fuera del camino, comencemos con la instalación de phpMyAdmin.

Paso 1:Descargue e instale phpMyAdmin

phpMyAdmin está incluido en el repositorio de software de Ubuntu 18.04, por lo que podemos instalarlo fácilmente con el siguiente comando.

sudo apt update
sudo apt install phpmyadmin

Durante la instalación, le pedirá que seleccione un servidor web para configurar. Nginx no está en la lista, así que presione la tecla Tab y presione Aceptar para omitir este paso.

A continuación, seleccione Sí para crear una nueva base de datos y deje que dbconfig-common para configurarlo.

Esto también creará un nuevo usuario de base de datos llamado phpmyadmin . Dale a este usuario una contraseña.

Una vez hecho esto, una nueva base de datos llamada phpmyadmin se crea y el usuario de la base de datos phpmyadmin tiene los privilegios necesarios para administrar esta base de datos. Si tiene curiosidad como yo, puede iniciar sesión en MariaDB y verificar qué privilegios phpmyadmin usuario ha sido concedido.

Puede usar el siguiente comando para iniciar sesión en el servidor MariaDB.

sudo mysql -u root

Luego verifique los privilegios.

show grants for [email protected];

Salida:

Como puede ver, el usuario phpmyadmin tiene todos los privilegios en la base de datos phpmyadmin . Ahora puede salir ejecutando:

exit;

Paso 2:Crear bloque de servidor Nginx

Para poder acceder a la interfaz web de phpMyAdmin, debemos crear un bloque de servidor Nginx ejecutando el siguiente comando.

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Lo configuraremos para que podamos acceder a phpMyAdmin a través de un subdominio. Pegue el siguiente texto en el archivo. Reemplace pma.example.com con su subdominio real y no olvide crear un registro A para él.

server {
  listen 80;
  listen [::]:80;
  server_name pma.example.com;
  root /usr/share/phpmyadmin/;
  index index.php index.html index.htm index.nginx-debian.html;

  access_log /var/log/nginx/phpmyadmin_access.log;
  error_log /var/log/nginx/phpmyadmin_error.log;

  location / {
    try_files $uri $uri/ /index.php;
  }

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

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

  location ~ /\.ht {
    deny all;
  }
}

Sus archivos phpMyAdmin están en /usr/share/phpmyadmin/ directorio. Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora debería poder acceder a la interfaz web de phpMyAdmin a través de

pma.example.com

Tenga en cuenta que phpMyAdmin no funcionará en versiones recientes de Firefox. Puede usar Google Chrome para visitar la interfaz web de phpMyAdmin. Antes de ingresar las credenciales de usuario en el formulario de inicio de sesión, habilitemos HTTPS.

Paso 3:Instalación del certificado TLS

Para proteger la interfaz web de phpMyadmin, podemos instalar un certificado TLS gratuito de Let's Encrypt. Instale el cliente Let's Encrypt desde el repositorio de software de Ubuntu 18.04 como se muestra a continuación:

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx es el complemento de Nginx para Certbot. Ahora ejecute el siguiente comando para obtener e instalar el certificado TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address

Explicación:

  • –nginx :utilice el autenticador y el instalador de Nginx
  • –de acuerdo :Acepto los términos de servicio de Let's Encrypt
  • –redireccionar :Agregar redirección 301.
  • –hsts :agregue el encabezado Strict-Transport-Security a cada respuesta HTTP.
  • –grapa-ocsp :Habilita el grapado OCSP.
  • -imprescindible :Agrega la extensión OCSP Must Staple al certificado.
  • -d va seguido de una lista de nombres de dominio, separados por comas. Puede agregar hasta 100 nombres de dominio.
  • –correo electrónico :Correo electrónico utilizado para el registro y el contacto de recuperación.

Se le preguntará si desea recibir correos electrónicos de EFF (Electronic Frontier Foundation). Después de elegir S o N, su certificado TLS se obtendrá y configurará automáticamente para usted, lo cual se indica en el mensaje a continuación.

Pruebe su certificado TLS

Vaya a ssllabs.com para probar su certificado TLS y su configuración. Debería obtener A+ porque HSTS está habilitado.

Solucionar problemas de error de inicio de sesión

Si inicia sesión con la cuenta raíz de MariaDB, es posible que vea el siguiente error.

 #1698 - Access denied for user 'root '@'localhost'

y

mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

Si inicia sesión con el usuario phpmyadmin , no verá el error anterior. Sin embargo, el usuario phpmyadmin solo se puede usar para administrar phpmyadmin base de datos. La causa del error es que, de forma predeterminada, el usuario raíz de MariDB se autentica a través del complemento unix_socket, en lugar de usar mysql_native_password enchufar. Para solucionar este problema, podemos crear otro usuario administrador y otorgar todos los privilegios al nuevo usuario administrador.

Inicie sesión en el servidor MariaDB desde la línea de comandos.

sudo mariadb -u root

Cree un usuario administrador con autenticación de contraseña.

create user [email protected] identified by 'your-chosen-password';

Otorgue todos los privilegios en todas las bases de datos.

grant all privileges on *.* to [email protected] with grant option;

Vaciar privilegios y salir;

flush privileges;

exit;

Ahora puede iniciar sesión en phpMyAmin con la cuenta de administrador y administrar todas las bases de datos.

Uso de un puerto diferente

Usar un puerto diferente en lugar del puerto predeterminado 443 puede ser ventajoso porque puede cerrar ese puerto cuando no esté usando phpMyAdmin para evitar la actividad de piratería, o puede especificar qué direcciones IP pueden acceder a ese puerto. Es muy simple de configurar. Simplemente abra el archivo de bloqueo del servidor.

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Busque las siguientes dos líneas:

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot

Cambie 443 a un puerto diferente, por ejemplo, 8443.

listen [::]:8443 ssl ipv6only=on; # managed by Certbot
listen 8443 ssl; # managed by Certbot

También puede agregarles http2 como se muestra a continuación para habilitar el protocolo HTTP/2.

listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot
listen 8443 ssl http2; # managed by Certbot

Guarde y cierre el archivo. Luego pruebe las configuraciones de Nginx.

sudo nginx -t

Si la prueba es exitosa, vuelva a cargar Nginx para que los cambios surtan efecto.

sudo systemctl reload nginx

Ahora puede acceder a phpMyAdmin a través de:

https://pma.example.com:8443

Instalar la última versión estable de phpMyAdmin

El repositorio de Ubuntu 18.04 viene con PHP7.2 y phpMyAdmin 4.6.6. Puede verificar su versión de phpMyAdmin en la barra de título del navegador.

Sin embargo, PHP7.2 es compatible con phpMyAdmin desde la versión 4.7.4. Cuando utilice phpMyAdmin 4.6.6 con PHP7.2, verá el siguiente mensaje de advertencia.

parameter must be an array or an object that implements countable

Para solucionar el problema de compatibilidad, podemos instalar phpMyAdmin 4.8, que es la última versión estable en el momento de escribir este artículo. Descárgalo usando wget .

wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip

Luego extráigalo.

sudo apt install unzip

unzip phpMyAdmin-4.8.0.1-all-languages.zip

Haga una copia de seguridad de los archivos phpMyAdmin originales.

sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original

Mover phpMyadmin 4.8 a /usr/share/phpmyadmin/ directorio.

sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin

Edite el archivo de configuración del proveedor.

sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php

Busque la siguiente línea.

define('CONFIG_DIR', '');

Cámbialo a

define('CONFIG_DIR', '/etc/phpmyadmin/');

Guarde y cierre el archivo. Luego crea el tmp carpeta para almacenar archivos de caché.

sudo mkdir /usr/share/phpmyadmin/tmp

Cambie la propiedad del usuario y la propiedad del grupo a www-data .

sudo chown www-data:www-data /usr/share/phpmyadmin/tmp

Ahora puede usar phpMyAdmin 4.8 sin recargar o reiniciar Nginx.

Habilitar autenticación de dos factores

También puede fortalecer phpMyAdmin habilitando la autenticación de dos factores, que es una función agregada en la versión 4.8. Para habilitarlo, inicie sesión en phpMyAdmin. Luego ve a Settings -> Two-factor authentication y seleccione Aplicación de autenticación (2FA) .

Después de hacer clic en Configurar autenticación de dos factores botón, se le presentará un código QR, que debe escanear con una aplicación de autenticación de dos factores en su teléfono.

Google Authenticator es una aplicación 2FA popular, pero recomiendo FreeOTP, que es una aplicación 2FA de código abierto desarrollada por Red Hat. Una vez que ingresa el código de autenticación generado por su aplicación 2FA, se habilita la autenticación de dos factores. Si ahora cierra la sesión y vuelve a iniciarla, debe ingresar el código de autenticación además del nombre de usuario y la contraseña.

Renovación automática de certificados

Para renovar automáticamente el certificado de Let's Encrypt, simplemente edite el archivo crontab del usuario raíz.

sudo crontab -e

Luego agregue la siguiente línea en la parte inferior.

@daily certbot renew --quiet && systemctl reload nginx

--quiet bandera suprimirá la salida estándar. Si desea recibir un error estándar, agregue la siguiente línea al comienzo del archivo crontab.

MAILTO=your-email-address

Es necesario volver a cargar Nginx para presentar el nuevo certificado a los clientes.

Espero que este tutorial le haya ayudado a instalar phpMyAdmin con Nginx en Ubuntu 18.04 LTS. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín informativo gratuito para obtener más consejos y trucos. Cuídate.


Ubuntu
  1. Cómo instalar phpMyAdmin con Nginx en Ubuntu 18.04

  2. Cómo instalar Seafile con Nginx en Ubuntu 20.04 LTS

  3. Cómo instalar Seafile con Nginx en Ubuntu 18.04 LTS

  4. Cómo instalar GitBucket con Nginx en Ubuntu 18.04 LTS

  5. Cómo implementar Modsecurity con Nginx en Ubuntu 20.04 LTS

Cómo instalar phpMyAdmin en Ubuntu 18.04 LTS

Cómo instalar LEMP en Ubuntu 18.04 LTS

Cómo instalar phpMyAdmin con Nginx en Ubuntu 18.04 LTS

Cómo instalar LEMP en Ubuntu 20.04 LTS

Cómo instalar phpMyAdmin con Nginx en Ubuntu 20.04 LTS

Cómo instalar LEMP Stack con PhpMyAdmin en Ubuntu 20.04