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.