En este artículo veremos cómo instalar LAMP en CentOS 9 paso a paso, de modo que tendrás disponible esta pila de Apache, PHP y MariaDB/MySQL para las aplicaciones que lo requieran en tu servidor o VPS CentOS.
Contenido
Antes de instalar LAMP en CentOS 9
Para seguir esta guía de instalación LAMP en CentOS 9 necesitas partir de la siguiente base:
- Un sistema CentOS Stream 9 actualizado.
- Acceso a terminal de comandos con un usuario con permisos de sudo o el mismo usuario root.
- Conexión a Internet.
Una pila o entorno LAMP se basa en un sistema Linux con servidor web Apache, el lenguaje del lado de servidor PHP y motor de bases de datos MySQL o MariaDB. En esta guía instalaremos estos componentes, pero tienes guías específicas para cada uno de ellos en este mismo sitio.
Cómo instalar LAMP en CentOS 9
Para instalar una pila LAMP en CentOS 9 podemos usar los paquetes disponibles en los repositorios de la distribución y los del repositorios alternativo de Remi (para usar versiones de PHP más avanzadas o que incluyen extensiones extra).
PHP
Los módulos incluidos en la distribución corresponden a las versiones 8.1 y 8.2. Si necesitas una versión más moderna, como la 8.3, o requieres de ciertas extensiones (como la extensión sodium) hay que instalar el repositorio alternativo:
~$ sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
En cualquier caso, actualizamos los repositorios:
~$ sudo yum update -y
Y activamos el módulo que nos interese. Si se trata de una versión de los repositorios de CentOS 9 el módulo se denominará como php:XY, donde X.Y es la versión; por ejemplo, para la versión 8.2:
~$ sudo yum module enable -y php:8.2
Pero si se trata de un módulo del repositorio alternativo se denominará como php:remi-X.Y; por ejemplo, para la versión 8.3:
~$ sudo yum module enable -y php:remi-8.3
MySQL
Los repositorios de CentOS 9 incluyen paquetes para MySQL Server 8.0.
MariaDB
Los repositorios de CentOS 9 incluyen actualmente un único módulo para MariaDB 10.11, una versión estable y que tiene soporte a largo plazo.
Instalación y activación de los servicios de la pila LAMP
Si quieres instalar la versión de la pila LAMP con MariaDB instala los siguientes paquetes:
~$ sudo yum install -y httpd php php-mysqlnd mariadb-server
Pero si prefieres una pila LAMP basada en MySQL, instala estos otros:
~$ sudo yum install -y httpd php php-mysqlnd mysql-server
Se crean los servicios httpd.service y php-fpm.service por un lado, y mariadb.service o mysqld.service por otro. Por defecto estos servicios no quedan iniciados ni habilitados para iniciar automáticamente junto a CentOS 9, así que los iniciaremos y habilitaremos a continuación.
Para la pila basada en MariaDB:
~$ sudo systemctl enable --now httpd php-fpm mariadb
Y para la pila basada en MySQL:
~$ sudo systemctl enable --now httpd php-fpm mysqld
Podemos comprobar que los servicios están en funcionamiento mediante los comandos:
~$ systemctl status httpd php-fpm mariadb -n 0
O:
~$ systemctl status httpd php-fpm mysqld -n 0
Configurando el firewall de CentOS 9
Si quieres que el servidor web sea accesible desde la red debes proporcionar una regla o excepción para el firewall: de CentOS 9:
~$ sudo firewall-cmd --permanent --add-service={http,https}
Si sólo quieres ofrecer el servicio HTTP entonces puedes especificar unicamente ese protocolo:
~$ sudo firewall-cmd --permanent --add-service=http
Hay que recargar la configuración del firewall para aplicar los cambios:
~$ sudo firewall-cmd --reload
Probando el servicio
Para probar la integración del servidor web con PHP, crearemos un script de prueba en este lenguaje:
~$ sudo nano /var/www/html/info.php
Y pondremos este contenido:
<?php phpinfo();
Accedemos a través de un navegador, indicando la dirección del servidor y la ruta /info.php (en este ejemplo, http://centos9.local.lan/info.php).
Cómo configurar la pila LAMP en CentOS 9
Los servicios ya están configurados por defecto, pero es necesario realizar unos mínimos y rápidos ajustes.
Servicio web
El servidor web funciona bien con los valores por defecto, pero para ajustes avanzados puede interesarte nuestra guía de instalación de Apache en CentOS 9.
Configurar PHP
El archivo principal de configuración es php.ini que debemos editar:
~$ sudo nano /etc/php.ini
Buscamos la directiva date.timezone:
... [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = ...
Está desactivada, hay que darle el valor de la zona horaria que nos interese:
... date.timezone = Europe/Madrid ...
Puedes consultar los valores posibles para esta directiva en http://php.net/date.timezone.
Si tu servidor LAMP CentOS 9 es para producción y funcionamiento expuesto al público hemos terminado, pero si es para desarrollo necesitas configurar algunos valores de tratamiento de errores.
Busca las siguientes directivas:
... error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT ... display_errors = Off ... display_startup_errors = Off ...
Y cambia los valores adecuados para desarrollo:
... error_reporting = E_ALL ... display_errors = On ... display_startup_errors = On ...
Tras hacer cualquier cambio en la configuración del archivo php.ini es necesario recargar el servicio php-fpm:
~$ sudo systemctl reload php-fpm
Configurar el motor de bases de datos
MySQL
Por defecto se crea una cuenta de root sin contraseña, lo que puede suponer un problema de seguridad enorme si no se soluciona. Para ello conectaremos con el sistema:
~$ mysql -u root
Creamos un usuario administrador alternativo con contraseña:
> create user instalador identified by 'XXXXXXXX'; > grant all privileges on *.* to instalador with grant option;
De esta forma garantizamos poder conectar al servicio si cometemos algún error en la configuración de root.
Cerramos la conexión:
> exit
Editamos el archivo de configuración principal del servicio:
~$ sudo nano /etc/my.cnf.d/mysql-server.cnf
Y dentro de la sección [mysqld] añadimos la siguiente directiva plugin_load_add:
... [mysqld] ... plugin-load-add=auth_socket.so
Guardamos los cambios y reiniciamos el servicio:
~$ sudo systemctl restart mysqld
Iniciamos sesión con el usuario administrador nuevo (y su contraseña):
~$ mysql -u instalador -p
Cambiamos el método de conexión del usuario root:
> alter user root@localhost identified with auth_socket;
Y cerramos la conexión.
A partir de este momento podemos administrar el servicio con el usuario administrador alternativo (y su contraseña) o con root a través de sudo:
~$ sudo mysql
MariaDB
El servicio usa por defecto el juego de caracteres latin1, cuando lo recomendable sería utilizar el UTF-8. Para hacer el cambio editamos el archivo de configuración:
~$ sudo nano /etc/my.cnf.d/mariadb-server.cnf
Y añadimos estas dos líneas en la sección [server]:
... [server] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ...
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mariadb
Podemos aprovechar para crear un usuario administrador con contraseña que pueda utilizarse de forma remota, a través de frontends, etc., conectando con el servicio:
~$ sudo mysql
Creamos el usuario con su contraseña y le damos privilegios:
> grant all privileges on *.* to instalador identified by 'XXXXXXXX' with grant option;
Cerramos sesión:
> exit
Y probamos nuestro nuevo usuario:
~$ mysql -u instalador -p Enter password: ... >
Conclusión
Ahora que sabes cómo instalar una pila o stack LAMP en CentOS 9 ya puedes dar soporte a aplicaciones y CMS que lo requieren, o realizar tus propios desarrollos web avanzados.
Si tienes dudas o preguntas, alguna sugerencia, etc. puedes dejar un comentario.
¡Apoya esta entrada!
¿Te ha servido esta guía de instalación LAMP en CentOS 9 para montar tu servidor? Si es así y deseas agradecérnoslo, cualquier mínima contribución ayuda al mantenimiento de este sitio y elaboración de nuevos tutoriales y guías.
Puedes ayudarnos dejando tan sólo 1 $ de propina deshaciéndote de la calderilla que no usas en PayPal:
O, si te sientes especialmente generoso, puedes invitarnos a un café:
¡Gracias!