Hace unos días publicábamos un post sobre la instalación del conjunto de herramientas para servidor web LAMP (Linux, Apache, MySQL, PHP) en distribuciones Ubuntu y derivadas.
En este artículo veremos cómo hacerlo en una distro muy especial, que ha conseguido en los últimos meses una gran popularidad manteniéndose en el primer puesto en Distrowatch con diferencia, MX Linux.
Además, phpMyAdmin no se encuentra en los repositorios oficiales de Debian, por lo que la instalación y configuración debe hacerse manualmente.
Artículo disponible en vídeo
Empezamos…
Paso 1. Instalar Apache
sudo apt install apache2
Comandos básicos para Apache
sudo service apache2 start
sudo service apache2 restart
sudo service apache2 reload
sudo service apache2 stop
Una vez instalado e iniciado (normalmente se inicia junto al sistema), comprobar en la dirección http://localhost/ del navegador:
Paso 2. Instalar MariaDB
sudo apt install mariadb-server
sudo apt install mariadb-client
Comandos básicos para MariaDB
sudo service mysql start
sudo service mysql restart
sudo service mysql stop
sudo service mysql status
Securizar la instalación de MySQL
sudo mysql_secure_installation
Nos preguntará si queremos cambiar la constraseña de root, en caso afirmativo, introducirla 2 veces.
Iniciar consola MySQL
sudo mysql -u root -p
Crear usuario de MySQL
Dentro del prompt de MySQL ejecutar la orden:
CREATE USER nombre_usuario IDENTIFIED BY 'clave_usuario';
Crear nueva base de datos
CREATE DATABASE nombre_bbdd;
Asignar usuario MySQL con privilegios a una base de datos
GRANT ALL PRIVILEGES ON nombre_bbdd.* TO nombre_usuario;
FLUSH PRIVILEGES;
Paso 3. Instalar PHP
Estos comandos pueden variar dependiendo de la versión de PHP disponible en los respositorios (7.2, 7.3, 7.4…)
sudo apt install php7.3 php7.3-fpm php7.3-gd php7.3-curl php7.3-mysql libapache2-mod-php7.3
sudo service apache2 restart
Comprobar si PHP se ha instalado correctamente
Creamos un archivo info.php con el editor nano dentro del directorio de proyectos de Apache (var/www/html)
sudo nano /var/www/html/info.php
Escribimos:
<?php echo phpinfo(); ?>
Guardamos con Ctrl+O y salimos con Ctrl+X
En el navegador nos dirigimos a http://localhost/info.php donde debe aparecer una pantalla similar a:
Paso 4. Configuraciones óptimas para WordPress (y otros CMS)
Activar el módulo REWRITE
Imprescindible para que funcionen los enlaces permanentes (slugs) de WordPress.
sudo a2enmod rewrite
sudo service apache2 restart
Editar el archivo de configuración con nano:
sudo nano /etc/apache2/sites-available/000-default.conf
Sobre la parte final del archivo, incluir:
<Directory "/var/www/html">
AllowOverride All
</Directory>
sudo service apache2 restart
Ajustes óptimos en el archivo php.ini
Abrimos el archivo con nano:
sudo nano /etc/php/7.3/apache2/php.ini
Cambiamos los valores de los siguientes parámetros:
memory_limit = 128M
post_max_size = 64M
max_execution_time = 180
upload_max_filesize = 64M
max_input_time = 180
max_input_vars = 3000
Paso 5. Instalar phpMyAdmin
Instalar los siguientes complementos de PHP (siempre sustituyendo el número de versión de PHP por el disponible en los repositorios):
sudo apt install php-imagick php-phpseclib php-gettext php7.3-imap php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl
sudo service apache2 restart
Descarga la última versión estable de phpMyAdmin
https://www.phpmyadmin.net/downloads/
Podemos descargar directamente desde el terminal (asegúrate de cambiar el número de versión si es distinto).
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.3/phpMyAdmin-4.9.3-all-languages.zip
Descomprimir con unzip (si no lo tenemos instalado ejecutamos antes)
sudo apt install unzip
unzip phpMyAdmin-4.9.3-all-languages.zip
Mover el directorio descomprimido a /usr/share/phpmyadmin
sudo mv phpMyAdmin-4.9.3-all-languages /usr/share/phpmyadmin
Hacer que el usuario del servidor web (www-data) sea propietario del directorio:
sudo chown -R www-data:www-data /usr/share/phpmyadmin
Crear la base de datos de phpMyAdmin y asignarla a nuestro usuario
sudo mysql -u root -p
CREATE DATABASE phpmyadmin;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO nombre_usuario;
FLUSH PRIVILEGES;
Crear el archivo de configuración de phpMyAdmin para Apache
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Insertar el código:
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Fuente del código:
https://www.linuxbabe.com/debian/install-phpmyadmin-apache-lamp-debian-10-buster
Habilitar el snippet para la configuración:
sudo a2enconf phpmyadmin.conf
Crear el directorio temporal de phpMyAdmin
sudo mkdir -p /var/lib/phpmyadmin/tmp
Hacer que el usuario del servidor web (www-data) sea propietario del directorio:
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp
sudo service apache2 reload
Iniciar phpMyAdmin en la ruta http://localhost/phpmyadmin
Si tienes algún problema, no dudes en dejarlo en los comentarios. Espero que te haya servido el artículo y disfrutes de tu MX Linux.
Cacho dice
Buenas, me ha sido de muchisima utilidad el articulo, Muchas Gracias, todo esta funcionando muy bien, salvo por un detalle: no puedo loguearme como root en phpmyadmin, si por linea de comandos. CUal sera el problema? Saludos
Daniel, Gestionatuweb.net dice
Hola, creo que se debe a que phpMyAdmin, como aplicación no tiene permisos para ejecutar tareas de root. Seguramente habrá algún modo de darle permisos de root. Yo lo que hago es crear las bases de datos directamente desde el terminal y asignarle todos los privilegios a mi usuario de mysql.
Cacho dice
Buenas Daniel, gracias por responder, te comento que luego de escribir la pregunta, encontre en otro articulo la siguiente solucion. El autor decia
»Básicamente lo que pasa, es que tu usuario «root» en la BB.DD MySQL no tiene password, y tienes que ponerle uno, así que abres una consola de Linux y escribes (como root)»
$ mysqladmin -u root password rootpassword
Debo decir que yo si habia seteado el password de root en el script mysql_secure_installation, pero aun asi no me funcionaba. Volviendo a setear el password de esta manera pude acceder a phpmyadmin como root.
Saludos 🙂
Daniel, Gestionatuweb.net dice
Pues perfecto entonces. A mí también me extrañó que configurando mysql_secure_installation no aceptase el acceso como root. Puede que se trate del acceso root del sistema al gestor MySQL, y no al usuario root de MySQL en sí.
Gracias por el aporte!
Hernan dice
simplemente agradecerte por este tutorial es muy completo y sin dudas funciona, he instalado todo en minutos y a corrido como la seda, una vez mas gracias, todos los exitos
Mayorcito dice
Hola, cuando quiero ingresar a loclahost/phpmyadmin, sale un mensaje: 403 forbidden, you don’t have permission to acces to this resource.
dani dice
Revisa que no te hayas saltado algún paso. Lo he instalado muchas veces siguiendo punto por punto y nunca me ha dado ningún problema.
william maffiold dice
excelente explicación, todo bien sin ningún problema.
Alex dice
excelente articulo, me sirvio mucho, muchas gracias por compartir.