En esta entrada explicaremos cómo instalar la pila LAMP en Rocky Linux 8 paso a paso, de tal forma que puedas instalar o desarrollar aplicaciones web complejas basadas en Apache, PHP y MariaDB/MySQL sobre tu máquina, servidor o VPS Rocky Linux.
Contenido
Antes de instalar la pila LAMP en Rocky Linux 8
Si quieres completar los pasos de esta guía de instalación de la pila LAMP en Rocky Linux 8, sólo tienes que cumplir los siguientes requisitos básicos:
- Una máquina Rocky Linux 8 actualizada.
- Un usuario con privilegios de sudo.
- Acceso a Internet.
Como seguramente ya cumples todos estos requerimientos es el momento de ajustar tu mesa a la altura más cómoda, abrir una consola de comandos y ponernos a trabajar.
Cómo instalar la pila LAMP en Rocky Linux 8
Para instalar la pila LAMP en Rocky Linux 8 podríamos usar sólo paquetes procedentes de los repositorios de la distribución, pero puede que algún componente como PHP no se correspondan con la versión que necesites (actualmente se ofrece desde la versión 7.2 a la 8.2, pero no la 8.3) Otro tanto sucede si prefieres usar MariaDB en lugar de MySQL, ya que la versión por defecto es la 10.3.
PHP 8.3, 8.2, 8.1 y anteriores
Si te sirve alguna de las versiones de la 7.2 a la 8.2 incluidas en la distribución, puedes saltarte esta sección.
Si necesitas la versión 8.3 (o alguna superior, cuando salga) habrá que instalar el repositorio alternativo:
~$ sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Actualizamos la información de los repositorios para que se incluyan las listas de paquetes de los que acabamos de instalar:
~$ sudo yum update -y
Deshabilitamos el módulo de PHP del repositorio de Rocky Linux 8:
~$ sudo yum module disable -y php
Y habilitamos el módulo que nos interese. En el caso de optar por una versión incluida en Rocky Linux, el nombre del módulo será php:X.Y, donde X.Y es la versión requerida; por ejemplo, para PHP 8.2:
~$ sudo yum module enable -y php:8.2
Y si necesitamos un módulo del repositorio alternativo, el nombre del módulo será php:remi-X.Y, sustituyendo igualmente X.Y por el valor adecuado; por ejemplo, para PHP 8.3:
~$ sudo yum module enable -y php:remi-8.3
Recuerda que antes de cambiar la versión por defecto previamente hay que desactivar el módulo activo:
~$ sudo yum module disable -y php
MariaDB 10.5, 10.6 y superiores
Si prefieres usar MySQL, puedes saltarte esta sección.
Rocky Linux 8 ofrece como versión por defecto la versión 10.3, aunque también están disponibles opcionalmente la 10.5 y la 10.11.
Si quieres cambiar de versión en primer lugar hay que desactivar el módulo actual:
~$ sudo yum module disable -y mariadb
Y activar el módulo de la versión que te interese, por ejemplo, para la 10.11:
~$ sudo yum module enable -y mariadb:10.11
Pero si necesitas trabajar con las versiones 11.3, 11.4, etc. hay que instalar el repositorio oficial, para lo que creamos un archivo de repositorio:
~$ sudo nano /etc/yum.repos.d/mariadb.org.repo
Y añadimos el siguiente contenido:
[mariadb] name = MariaDB baseurl = https://rpm.mariadb.org/11.3/rhel/$releasever/$basearch module_hotfixes = 1 gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck = 1
Si quieres otra versión, como la 11.4, haz el cambio apropiado en la directiva baseurl anterior.
Una vez guardado y cerrado el archivo, actualizamos los repositorios:
~$ sudo yum update
Instalación del servicio web y PHP
Instalamos los paquetes que corresponden al servicio web y al lenguaje de programación:
~$ sudo yum install -y httpd php php-mysqlnd
Instalación del motor de bases de datos
En cuanto al servicio de bases de datos podemos optar por MariaDB y MySQL.
Para instalar MariaDB:
~$ sudo yum install -y mariadb-server
O para instalar MySQL:
~$ sudo yum install -y mysql-server
Iniciando los servicios
Tras la descarga e instalación de todos estos paquetes y sus dependencias se crean nuevos servicios en Rocky Linux 8, los servicios httpd para el servicio web, php-fpm para el servicio PHP y mariadb o mysqld para el servicio de bases de datos (dependiendo del que hayamos elegido).
Iniciamos y habilitamos el servicio web y el servicio PHP-FPM:
~$ sudo systemctl enable --now httpd php-fpm
Si hemos elegido MariaDB iniciamos y habilitamos su servicio:
~$ sudo systemctl enable --now mariadb
Y si hemos optado por MySQL, hacemos lo propio:
~$ sudo systemctl enable --now mysqld
Podemos comprobar fácilmente que estos servicios quedan en ejecución y habilitados para su inicio automático también con el comando systemctl:
~$ systemctl status httpd php-fpm mariadb
O:
~$ systemctl status httpd php-fpm mysqld
Configuración del firewall
Si vas a permitir conexiones en red a tu servidor LAMP Rocky Linux 8 es necesario añadir las excepciones necesarias al firewall, concretamente para los puertos HTTP y HTTPS:
~$ sudo firewall-cmd --permanent --add-service={http,https}
Aplicamos estas reglas recargando la configuración del firewall:
~$ sudo firewall-cmd --reload
Cómo probar la pila LAMP en Rocky Linux 8
Para probar la pila LAMP que acabamos de instalar en Rocky Linux 8 desde un navegador, crearemos un sencillo script en PHP:
~$ sudo nano /var/www/html/info.php
Su contenido será únicamente la siguiente línea:
<?php phpinfo();
Guardamos y cerramos el archivo.
Ahora, desde el navegador web indicamos la dirección IP, nombre DNS, dominio, etc. del servidor Rocky Linux 8 (o localhost si trabajamos localmente) y añadimos la ruta /info.php.
Por ejemplo, la máquina Rocky Linux 8 sobre la que hemos desarrollado este tutorial es accesible en el subdominio rocky8.local.lan, así que podemos usar http://rocky8.local.lan/info.php como URL de prueba:
Esta página es la prueba de que todos los elementos de la pila LAMP están interconectados y funcionando, además de ofrecer mucha información sobre su configuración.
Cómo configurar la pila LAMP en Rocky Linux 8
Vamos a configurar la pila LAMP en Rocky Linux 8 rápidamente, ya que como acabamos de ver la configuración por defecto es funcional.
PHP
Sin embargo, sí sería interesante revisar rápidamente la configuración de PHP, para lo que editamos el archivo php.ini:
~$ sudo nano /etc/php.ini
Buscamos esta línea:
... ;date.timezone = ...
Activamos la directiva eliminando el carácter ; inicial y le damos el valor que necesitemos:
... date.timezone = Europe/Madrid ...
Si no sabes qué valor corresponde a tu zona horaria, consúltalo en la documentación oficial.
En caso de que estés montando un servidor LAMP para producción al que accederán usuarios finales, el resto de la configuración presenta valores adecuados. Pero si se trata de un servidor para desarrollo de aplicaciones sin duda querrás que se muestre información en caso de errores para poder depurar dichas aplicaciones.
Para este último caso localiza estas directivas:
... error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ... display_errors = Off ... display_startup_errors = Off ...
Y cambia sus valores por defecto por estos otros:
... error_reporting = E_ALL ... display_errors = On ... display_startup_errors = On ...
Una vez guardados los cambios, recargamos la configuración del servicio PHP-FPM para que los tenga en cuenta.
~$ sudo systemctl reload php-fpm
MariaDB
Versiones de la distribución
El usuario root del motor de bases de datos no tiene contraseña, algo que no es aconsejable para la mayoría de escenarios, así que conectaremos al servicio para solucionarlo:
~$ mysql -u root
El primer paso será crear un usuario administrador alternativo:
> grant all privileges on *.* to instalador identified by 'XXXXXXXX' with grant option;
Cerramos sesión:
> exit
Y volvemos a iniciarla, esta vez usando nuestro nuevo administrador:
~$ mysql -u instalador -p
Una vez introducida la contraseña, modificamos el plugin de conexión para root:
> alter user root@localhost identified with unix_socket;
Cerramos de nuevo sesión:
> exit
El nuevo método de conexión para root depende de un plugin que el servicio de bases de datos no carga por defecto. Para solucionarlo, editamos el archivo de configuración del servidor:
~$ sudo nano /etc/my.cnf.d/mariadb-server.cnf
En la sección [server] del archivo añadimos esta línea:
... [server] plugin-load-add=auth_socket.so ...
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart mariadb
Ahora para conectar como root sólo será posible hacerlo usando sudo:
~$ sudo mysql
Las versiones del repositorio oficial ya incluyen esta configuración del usuario root (excepto lo relacionado con tu propio usuario administrador).
Versiones del repositorio oficial
Para conectar al servicio como root con el cliente mysql hay que usar sudo:
~$ sudo mysql
Eliminamos la base de datos de pruebas:
> drop database test;
Comprobamos los usuarios anónimos incluidos:
> select user,host from mysql.user; +-------------+------------------+ | User | Host | +-------------+------------------+ | | localhost | | mariadb.sys | localhost | | mysql | localhost | | root | localhost | | | rocky8.local.lan | +-------------+------------------+
En este caso hay dos usuarios anónimos, aquellos cuyo valor en la columna ‘User‘ es nulo. Procedemos a eliminarlos:
> drop user ''@localhost; > drop user ''@rocky8.local.lan;
Opcionalmente, podemos crear un usuario administrador con acceso mediante contraseña y capacidad de conexión remota:
> grant all privileges on *.* to instalador identified by 'XXXXXXXX' with grant option;
Ya podemos cerrar la conexión:
> exit
El servicio por defecto usa el juego de caracteres latin1, pero es recomendable usar UTF-8, así que podemos editar el archivo de configuración:
~$ sudo nano /etc/my.cnf.d/server.cnf
En la sección [server] añadimos estas dos directivas:
... [server] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ...
Guardamos y cerramos el archivo, y reiniciamos el servicio para que cargue los nuevos ajustes:
~$ sudo systemctl restart mariadb
MySQL
Con MySQL ocurre algo parecido al caso anterior, el usuario root del servicio de bases de datos no tiene contraseña. Lo solucionaremos realizando algún ajuste en el archivo de configuración del servicio:
~$ sudo nano /etc/my.cnf.d/mysql-server.cnf
Añadimos esta directiva plugin-load-add dentro de la sección [mysqld]:
... [mysqld] ... plugin-load-add=auth_socket.so
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mysqld
Conectamos al servicio con el cliente mysql:
~$ mysql -u root
Creamos un usuario administrador alternativo con contraseña y capacidades de conexión remota:
> create user instalador identified by 'XXXXXXXX'; > grant all privileges on *.* to instalador with grant option;
Cambiamos el método de conexión para root:
> alter user root@localhost identified with auth_socket;
Cerramos la conexión:
> exit
Ahora root sólo puede acceder a través del comando sudo:
~$ sudo mysql
Conclusión
Ahora que sabes cómo instalar y configurar la pila LAMP en Rocky Linux 8 ya estás en condiciones de instalar potentes aplicaciones web o desarrollar las tuyas propias en tu máquina o servidor, proporcionando la plataforma básica que necesitan para funcionar.
¡Apoya comoinstalar.me!
Si ya funciona la pila LAMP en tu propia máquina Rocky Linux 8 y quieres agradecérnoslo, siempre es bienvenida cualquier pequeña aportación al mantenimiento de este sitio y la creación de más tutoriales y guías.
Puedes ayudarnos dejando una propina a partir de 1 $ mediante PayPal:
O, si te encuentras especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
¿Dudas, preguntas, sugerencias?
¿Te ha surgido alguna duda o pregunta? ¿Quieres hacernos alguna corrección o sugerencia? Si es así puedes dejarnos un comentario que, aunque están moderados para evitar SPAM, se revisan prácticamente a diario.
Actualizado para incluir las versiones 8.1, 8.2 y 8.3 de PHP.