Despliegue de un Entorno LAMP y PHPCMS en Red Hat Enterprise Linux 7

Especificaciones del Sistema

Para esta implementación, utilizaremos un entorno basado en Red Hat Enterprise Linux (RHEL) versión 7.2. A continuación, se detallan las versiones del núcleo y del sistema operativo:

# Verificación de la versión del sistema
cat /etc/redhat-release
# Salida: Red Hat Enterprise Linux Server release 7.2 (Maipo)

# Información del kernel
uname -rs
# Salida: Linux 3.10.0-327.el7.x86_64

Los componentes principales de la pila tecnológica son:

  • PHP: 5.4.16
  • MySQL: 5.6.51
  • Apache: 2.4.6

Instalación del Stack LAMP

Antes de comenzar, asegúrese de tener configurados los repositorios YUM correspondientes. El proceso inicial consiste en instalar el servidor web y el lenguaje de procesamiento.

yum -y install httpd php php-mysql

Gestión del Conflicto entre MariaDB y MySQL

Por defecto, RHEL 7 y CentOS 7 incluyen MariaDB en lugar de MySQL. Para instalar específicamente MySQL Community Server, debemos eliminar cualquier rastro de MariaDB:

# Identificar paquetes de MariaDB
rpm -qa | grep mariadb

# Eliminación forzada de librerías y servidor
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mariadb-5.5.68-1.el7.x86_64

Una vez limpio el sistema, procedemos a descargar e instalar el repositorio oficial de MySQL para EL7:

# Descarga del repositorio
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

# Instalación del repositorio y del servidor MySQL
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql-server

Configuración y Seguridad Inicial

Iniciamos los servicios básicos y establecemos las credenciales del administrador de la base de datos:

# Iniciar servicios
systemctl start httpd
systemctl start mysqld

# Configurar contraseña de root para MySQL
mysqladmin -u root password 'ClaveSegura123'

Para entornos de desarrollo o pruebas controladas, es necesario ajustar los parámetros de red y seguridad del sistema:

# Desactivar temporalmente el firewall y SELinux
iptables -F
setenforce 0

Para verificar que el intérprete PHP funciona correctamente, cree un archivo de prueba en el directorio raíz de Apache:

echo "<?php phpinfo(); ?>" > /var/www/html/test.php

Despliegue de PHPCMS V9

Descargue el código fuente de PHPCMS y ubíquelo en /var/www/html/cms_app. Durante el proceso de instalación a través del navegador, es común encontrar problemas de dependencias y validaciones de red.

Resolución de Dependencias y Errores Comunes

Si el instalador indica que falta la librería de procesamiento de imágenes, instale el paquete GD:

yum -y install php-gd

En caso de fallos en la resolución DNS durante el paso de pre-instalación, edite el archivo install.php dentro del directorio install de la aplicación. Localice y modifique la validación de DNS de la siguiente manera:

// Modificación para forzar validación mediante un dominio externo conocido
$PHP_DNS = preg_match("/^[0-9.]{7,15}$/", @gethostbyname('www.google.com')) ? 1 : 0;

Administración de la Base de Datos y Usuarios

Una vez finalizada la instalación web, se puede gestionar la estructura de datos directamente desde la terminal. Por ejemplo, para listar las tablas creadas por el CMS:

mysql -u root -p'ClaveSegura123'
mysql> USE phpcmsv9;
mysql> SHOW TABLES;

Si necesita insertar un administrador manualmente con una contraseña específica (ejemplo: phpcms), puede ejecutar la siguiente sentencia SQL, asegurándose de manejar correctamente los campos de encriptación requeridos por la plataforma:

INSERT INTO `v9_admin` (`userid`, `username`, `password`, `roleid`, `encrypt`, `email`) 
VALUES (NULL, 'superadmin', '09fd8aa544abd9f913c277d3f9215014', '1', 'TPTUni', 'admin@ejemplo.com');

Ajustes de Seguridad en el Acceso Administrativo

PHPCMS implementa una restricción de intentos de inicio de sesión que puede bloquear el acceso durante una hora. Para entornos donde se requiere acceso continuo durante la configuración, se puede comentar la lógica de bloqueo en el archivo /var/www/html/cms_app/phpcms/modules/admin/index.php:

/* 
Comentar este bloque para omitir la restricción de tiempo de espera
if($rtime['times'] >= $maxloginfailedtimes) {
    $minute = 60-floor((SYS_TIME-$rtime['logintime'])/60);
    if($minute>0) showmessage(L('wait_1_hour', array('minute'=>$minute)));
}
*/

Etiquetas: rhel7 lamp MySQL phpcms Apache

Publicado el 7-1 22:25