Implantación de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2024/2025
LAMP es el acrónimo usado para describir un sistema de infraestructura de Internet que usa las siguientes herramientas:
En esta práctica vamos a utilizar el sistema operativo Red Hat Enterprise Linux (RHEL).
dnf
dnf
(Dandified Yum) es un gestor de paquetes
para distribuciones GNU/Linux basadas en RPM (Red Hat Package
Manager). dnf
es la evolución de yum
Yellowdog Updater, Modified.
Para actualizar los paquetes del sistema podemos utilizar cualquiera de estos comandos:
En en gestor de paquetes dnf
, las opciones
update
y upgrade
realizan la misma acción.
Podemos utilizar una versión abreviada.
Si sólo queremos actualizar un paquete del sistema podemos utilizar:
Para limpiar los archivos temporales de un repositorio que haya sido
eliminado o deshabilitado podemos utilizar la opción
clean
.
Para obtener un listado de los paquetes que están instalados en el sistema y los paquetes que están disponibles en los repositorios para instalar, podemos utilizar cualquiera de estos dos comandos:
Ejemplo:
Instalamos el paquete del servidor web Apache.
Después de la instalación del servidor hay que iniciar el servicio.
Y habilitar el servicio para que se inicie automáticamente después de cada reinicio.
Ahora podemos comprobar el estado del servicio para verificar que se está ejecutando.
Instalamos el paquete de MySQL Server.
Después de la instalación del servidor hay que iniciar el servicio.
Y habilitar el servicio para que se inicie automáticamente después de cada reinicio.
Ahora podemos comprobar el estado del servicio para verificar que se está ejecutando.
Instalamos el intérprete de PHP con el comando:
Podemos comprobar que PHP se ha instalado correctamente ejecutando el siguiente comando:
Instalamos la extensión de PHP para conectar con MySQL.
Después de la instalación es necesario reiniciar el servicio de Apache para que se apliquen los cambios.
Consultamos las versiones disponibles de PHP.
El comando anterior puede devolver una salida similar a esta.
Red Hat Enterprise Linux 8 for x86_64 - AppStream from RHUI (RPMs)
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
php 8.0 common [d], devel, minimal PHP scripting language
php 8.1 common [d], devel, minimal PHP scripting language
Si quisiéramos activar la versión 8.1
de PHP, tendríamos
que ejecutar el siguiente comando.
Instalamos la versión que hemos habilitado.
/var/www/html
.wget
para poder descargar el
código fuente de phpMyAdmin
.phpMyAdmin
.Nota: con el parámetro -P
podemos
indicar la ruta donde queremos guardar el archivo que vamos a descargar
con wget
.
.tar.gz
.apache
.Para configurar phpMyAdmin
necesitamos realizar los
siguientes pasos:
config.inc.php
.phpMyAdmin
.
config.inc.php
Creamos el archivo de configuración a partir del archivo de ejemplo
config.sample.inc.php
.
Editamos el archivo de configuración config.inc.php
.
En este archivo vamos a configurar las variables:
$cfg['blowfish_secret']
: Configura un valor aleatorio
de 32 caracteres que se utiliza como clave secreta para cifrar las
cookies de sesión de phpMyAdmin.$cfg['TempDir']
: Configura un directorio temporal.Ejemplo:
A continuación se muestra una configuración de ejemplo para estas dos variables.
Configuración de la variable
$cfg['blowfish_secret']
Tenga en cuenta que tendrá que modificar el valor de la variable
blowfish_secret
por uno que usted mismo genere. Es
recomendable que sea un valor aleatorio y que sea diferente para cada
instalación que realice.
Para generar un valor aleatorio de 32 caracteres puede utilizar el
comando openssl
y para modificar el archivo de
configuración puede utilizar el comando sed
.
A continuación, se muestra un ejemplo de cómo se podría automatizar este paso en un script de bash.
#!/bin/bash
# Generamos un valor aleatorio de 32 caracteres para la variable blowfish_secret
RANDOM_VALUE=`openssl rand -hex 16`
# Modificamos la variable blowfish_secret en el archivo de configuración
sed -i "s/\(\$cfg\['blowfish_secret'\] =\).*/\1 '$RANDOM_VALUE';/" /var/www/html/phpmyadmin/config.inc.php
El comando sed
que se utiliza para modificar y eliminar
texto en un archivo. Vamos a explicar los parámetros que se han
utilizado en el ejemplo anterior.
i
: Indica que queremos que los cambios se tienen que
aplicar directamente en el archivo que se pasa como parámetro. Si no se
utilizase este paráemtro, los cambios se mostrarían por la salida
estándar pero el archivo no se modificaría.
s/cadena_a_buscar/cadena_de_reemplazo/
: La sintaxis
Es la sintaxis que se utiliza para buscar y reemplazar texto en un
archivo. En este caso, se busca la cadena
$cfg['blowfish_secret'] =
y se reemplaza por la cadena
$cfg['blowfish_secret'] = '$RANDOM_VALUE';
.
Observe que se utiliza la barra invertida o backslash
\
para escapar los caracteres (
,
[
y $
.
En la cadena de reemplazo se utiliza
\1 '$RANDOM_VALUE';
. El número \1
quiere decir
que se debe poner el patrón que hemos buscado, es decir, se pondrá
$cfg['blowfish_secret'] =
seguido del contenido de la
variable $RANDOM_VALUE
.
Referencia:
Configuración de la variable
$cfg['TempDir']
Para configurar la variable $cfg['TempDir']
también
vamos a hacer uso del comando sed
, pero esta vez
utilizaremos el modificador a
que nos permite añadir texto
después de una línea que coincida con la cadena que estamos
buscando.
Ejemplo:
En este caso vamos a busar la cadena blowfish_secret
y
después de esa línea vamos a añadir la cadena
$cfg['TempDir'] = '/tmp';
Una vez que hemos terminado todo el proceso modificamos el
propietario y el grupo del directorio /var/www/html
.
Creación de la base de datos
Una vez que haya configurado el archivo de configuración debe crear una base de datos y un usuario para phpMyAdmin en MySQL.
En el archivo
/var/www/html/phpmyadmin/sql/create_tables.sql
tiene el
script SQL para crear la base de datos e importar las tablas de
phpMyAdmin.
Creación de un usuario para la base de datos
La base de datos que se ha creado se llama phpmyadmin
.
Ahora tendrá que crear un usuario y una contraseña para que pueda
acceder a esa base de datos.
Recuerde que todos estos valores de configuración (nombre de la base de datos, usuario y contraseña) deberán ser variables en su script de instalación de bash.
Puede utilizar las siguientes sentencias SQL.
Si durante la instalación obtiene el siguiente mensaje de error:
[Errno 12] Cannot allocate memory
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Es posible que necesite incrementar la cantidad de memoria de RAM de la instancia. Si está creando instancias EC2 en AWS se recomienda utilizar al menos 4 GB de RAM.
Una posible solución es detener de forma temporal los servicios que estén haciendo un uso intensivo de memoria RAM. Una vez que detenga los servicios puede volver a intentar realizar la instalación y si la operación termina con éxito, puede volver a iniciar los servicios que había detenido.
sed
to find and replace text in files in Linux/Unix
shell
Esta
página forma parte del curso
Implantación de Aplicaciones
Web de José Juan Sánchez
Hernández y su contenido se distribuye bajo una
licencia
Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0
Internacional.