Cómo instalar LAMP (Apache, MySQL, PHP) y phpMyAdmin en Manjaro; válido para base Arch

marzo 11, 2023 0 Comments

phpMyAdmin en Manjaro

Hay muchas cosas en Linux que son más fáciles que en Windows, pero también es cierto que mucha información se encuentra antes para Windows. Cosas como trabajar con PHP o acceder a un servidor FTP desde el mismo gestor de archivos son mucho mejor en Linux, y por ese motivo suelo moverme mejor en los sistemas con el núcleo del pingüino. Lo malo es que lo que vale para una distribución no siempre vale para otra, e instalar phpMyAdmin y todo LAMP en Manjaro y otras distros basadas en Arch no es igual que hacerlo en las derivadas en Debian.

Pero también es cierto que todo (o casi todo) lo que se puede hacer en una distribución Linux se puede hacer en otra, y lo único que es necesario es saber otro camino que nos lleve a la misma Roma. Conseguir tener LAMP en Manjaro no es difícil, y aquí vamos a enseñar el camino más sencillo, que lo es, aunque no lo parezca por el número total de pasos. Antes explicaremos qué significan las siglas: Linux, Apache, MySQL y PHP. Los pasos a seguir serían los que tenéis a continuación:

Instalando y configurando LAMP

  1. Antes de nada, ante instalaciones como esta merece la pena hacer una sincronización completa de los servidores y actualizar todos los paquetes disponibles. Eso lo conseguimos con el comando
sudo pacman -Syyu
  1. Con todo actualizado, y reiniciado si se pidiera o viéramos que se ha actualizado algo importante, seguimos. En muchos comandos vamos a necesitar privilegios, por lo que nos identificamos como root con:
sudo su
  1. Lo primero a instalar será la A, es decir, Apache:
pacman -S apache
  1. Ahora empezamos con la edición del archivo httpd.conf. Aquí vamos a usar nano, y los atajos que usaremos son Ctrl+W para buscar, para pegar es Ctrl+Shift+V (porque estamos en el terminal), Ctr+O para guardar, Enter para confirmar cambios y Ctrl+X para salir. No está de más pulsar luego la flecha hacia arriba, volver a introducir el último comando y comprobar que hemos guardado los cambios. Lo primero será entrar en la edición del archivo:
nano /etc/httpd/conf/httpd.conf
  1. Buscamos lo siguiente y lo comentamos, si no lo está ya:
# LoadModule unique_id_module modules/mod_unique_id.so
  1. Buscamos ServerName y ponemos lo que sea necesario, descomentando la línea si no lo está. Para conexiones locales:
ServerName localhost
  1. Guardamos y cerramos.
  2. Iniciamos el servicio web:
systemctl enable --now httpd
  1. comprobamos que está activo:
systemctl status httpd
  1. Hacemos una prueba, no necesaria paro recomendada, pues nos dirá que vamos por el buen camino, metiendo un archivo con nombre index.html en /srv/http, para lo que necesitaremos permisos. Por ejemplo, con este contenido: <h1>Hola, LinuxAdictos</h1>

Creando prueba HTML

  1. Ahora instalamos la M, es decir, MariaDB, que es el motor que usa Manjaro y otras distros basadas en Arch para gestionar las bases de datos MySQL.
pacman -S mariadb
  1. Inicializamos el directorio de MariaDB antes de iniciar el servicio.
mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  1. Cuando finalice, activamos el servicio:
systemctl enable --now mariadb
  1. Comprobamos que se ha iniciado. Tiene que poner que está activo y no mostrar ningún error.
systemctl status mariadb
  1. Es recomendable ponerle seguridad a nuestra instalación de bases de datos con un script que se ha diseñado para ello. Hay que leer lo que nos pone, pero aquí van unas sugerencias:
    1. Se inicia con «mariadb-secure-installation» sin las comillas.
    2. La contraseña debe estar vacía si la iniciamos por primera vez. Si ya hemos hecho pruebas y tiene otra contraseña, tenemos que saber cuál es o restablecerla.
    3. Cuando nos pida si cambiar a la autenticación unix_socket, decimos que no.
    4. Cambiar la contraseña, sí.
    5. La introducimos dos veces, una para configurarla y otra para confirmar.
    6. Eliminar usuarios anónimos, sí.
    7. Deshabilitar el inicio de sesión remoto, de entrada, sí. Esto se puede cambiar más adelante, pero puede ser peligroso y hay que gestionar las conexiones con un cortafuegos.
    8. Sí a eliminar base de datos de prueba. O no, si se quiere eliminar más tarde. Esa base de datos sirve como ejemplo para ver algunas cosas.
    9. Recargar privilegios, sí.
  2. Instalamos ahora la P, es decir PHP:
pacman -S php php-apache
  1. Entramos en el módulo PHP de Apache:
nano /etc/httpd/conf/httpd.conf
  1. Buscamos LoadModule y dejamos esto así:
#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  1. Al final del archivo, añadimos:
LoadModule php_module modules/libphp.so
AddHandler php-script .php
Include conf/extra/php_module.conf
  1. Comprobamos la configuración con esto, y debe decirnos «Ok»:
apachectl configtest
  1. Reiniciamos el servicio con:
apachectl restart
  1. Hacemos otra prueba, esta vez del PHP. En la misma carpeta que antes, /srv/http, creamos el archivo info.php, y dentro ponemos este texto:
<?php phpinfo(); ?>;

Prueba de php

Configuración de phpMyAdmin

  1. Instalamos phpMyAdmin:
pacman -S phpmyadmin
  1. creamos o editamos el archivo phpmariadb.ini:
nano /etc/php/conf.d/phpmariadb.ini
  1. Pegamos esto:
extension=bz2
extension=iconv
extension=mysqli
extension=pdo_mysql
  1. Verificamos que el archivo .ini se ha cargado (mostrará las rutas):
php --ini
  1. Iniciamos la configuración de Apache:
nano /etc/httpd/conf/extra/phpmyadmin.conf
  1. y pegamos esto:
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">;
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
  1. Abrimos el archivo la configuración de Apache:
nano /etc/httpd/conf/httpd.conf
  1. Al final añadimos lo siguiente, y la configuración final quedará como en la captura:
Include conf/extra/phpmyadmin.conf

Configuración final de phpMyAdmin

  1. guardamos y comprobamos la configuración (debe decir que no hay errores de sintaxis):
apachectl configtest
  1. Reiniciamos apache:
apachectl restart
  1. Abrimos el archivo de configuración de phpMyAdmin:
nano /etc/webapps/phpmyadmin/config.inc.php
  1. Este paso podemos hacerlo manualmente, pero merece la pena hacerlo así. En otro terminal, generamos un numero hexadecimal aleatorio:
openssl rand -hex 16
  1. Copiamos lo que nos haya dado en la línea donde pone blowfish_secret, entre las comillas. Debe quedar así (cambiando lo que hay entre comillas por el número hexadecimal del paso anterior:
$cfg['blowfish_secret'] = 'valorhexadecimancreadoenelpasoanterior';
  1. Debajo de esa línea, añadimos la carpeta termporal:
$cfg['TempDir'] = '/tmp';
  1. Guardamos y salimos. Ahora ya sólo queda entrar en este caso, localhost/phpmyadmin

Si preferimos otra opción diferente a phpMyAdmin, una de las mejores para Linux es DBeaver. Si uno se acostumbra, hay cosas que funcionan mejor, por ejemplo, crear las relaciones.

Y así es cómo se puede tener phpMyAdmin y LAMP en distros con base Arch. Si hay algo diferente, debería ser alguna ruta, pero para la mayor parte de lo explicado aquí debería valer.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.