Instalar TYPO3 CMS con Nginx en AlmaLinux 9

TYPO3 es un sistema de gestión de contenidos de nivel empresarial, gratuito y de código abierto. Ofrece múltiples características de nivel empresarial, como CMS escalable con soporte multisitio, instalaciones multilingües, fuerte implementación de seguridad, velocidad vertiginosa y puede ejecutarse en cualquier lugar.

Usar TYPO3 CMS te permite construir sitios web flexibles y fiables. El CMS TYPO3 está respaldado por una vibrante comunidad profesional. Y por diseño, el TYPO3 CMS es un sistema de gestión de contenidos enchufable con una arquitectura adaptable y desacoplada.

En esta guía, te mostraré cómo instalar TYPO3 CMS en un AlmaLinux 9 paso a paso. Instalaremos TYPO3 CMS con el servidor web Nginx, el servidor de base de datos MariaDB y PHP-FPM.

Requisitos previos

Antes de continuar, asegúrate de que tienes lo siguiente:

  • Un servidor AlmaLinux 9 – Este ejemplo utiliza un servidor con el nombre de host almalinux9.
  • Un usuario no root con privilegios de root sudo.
  • Un nombre de dominio apuntando a la dirección IP del servidor.

Instalación de dependencias

En los siguientes pasos, instalarás las dependencias de los paquetes para TYPO3 CMS, incluyendo:

  • Nginx: Como servidor web.
  • MariaDB: Como servidor de base de datos.
  • PHP-FPM: En este ejemplo se utilizará PHP 8.1 para TYPO3 CMS.
  • Compositor: Un gestor de dependencias para aplicaciones PHP.

Ahora vamos a empezar.

En primer lugar, ejecuta el siguiente comando para añadir los repositorios EPEL y Remi a tu sistema. El repositorio Remi proporciona varias versiones de paquetes PHP y algunas extensiones PHP adicionales que no están disponibles en el repositorio appstream por defecto.

sudo dnf epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Introduce y para confirmar la instalación y pulsa ENTER.

Añadir repositorio EPEL.

añadir repositorio epel

Añadir repositorio PHP Remi para RHEL 9.

añadir repositorio remi

Ahora, ejecuta el siguiente comando para restablecer el módulo por defecto del repositorio PHP y habilitar el módulo PHP 8.1 del repositorio Remi.

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

activar el repositorio php8.1 remi

A continuación, ejecuta el siguiente comando dnf para instalar las dependencias de paquetes para TYPO3 CMS. Cuando se te solicite, introduce y para confirmar, y pulsa INTRO.

sudo dnf install nginx mariadb-server composer ImageMagick php-fpm php-mysqlnd php-gd php-curl php-json php-intl php-bcmath php-zip php-apcu php-mbstring php-fileinfo php-xml php-soap

instalar dependencias

Una vez instaladas las dependencias, ejecuta el siguiente comando systemctl para iniciar y habilitar los servicios principales, como Nginx, MariaDB y PHP-FPM.

sudo systemctl enable --now nginx mariadb php-fpm

iniciar y activar servicios

A continuación, verifica los servicios utilizando el siguiente comando para asegurarte de que todos esos servicios se están ejecutando.

sudo systemctl status nginx mariadb php-fpm

Si el servicio se está ejecutando, deberías ver la salida activo (en ejecución). El ejemplo siguiente muestra que el servicio Nginx se está ejecutando.

verificar servicios

Por último, ejecuta el siguiente comando para asegurarte de que Composer está instalado y comprueba su versión.

sudo -u nginx composer -V

En el momento de escribir esto, Composer v2.5.5 está instalado a través del repositorio EPEL.

comprueba la versión de composer

Configurar Firewalld

Tras instalar las dependencias de los paquetes, el siguiente paso es configurar firewalld y abrir sobre él los protocolos HTTP y HTTPS.

Ejecuta el siguiente comando firewall-cmd para abrir los servicios HTTP y HTTPS. A continuación, recarga el firewalld para aplicar los cambios.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Ahora comprueba la lista de puertos y servicios abiertos en firewalld utilizando el siguiente comando.

sudo firewall-cmd --list-all

En la sección de servicios, deberías ver que tanto HTTP como HTTPS están habilitados.

configurar firewalld

Configurar el servidor MariaDB

En la siguiente sección, asegurarás el servidor MariaDB y crearás una nueva base de datos y un nuevo usuario que utilizará la instalación de TYPO3 CMS.

En primer lugar, ejecuta el comando mariadb-secure-installation para asegurar tu instalación de MariaDB.

sudo mariadb-secure-installation

A lo largo del proceso, se te pedirá que configures el servidor MariaDB. Introduce Y para confirmar el paso.

  • ¿Cambiar la autenticación raíz de MariaDB a unix_socket? Introduce n.
  • ¿Configurar la contraseña raíz de MariaDB? Introduce y, luego escribe la nueva contraseña y repite el paso.
  • ¿Desactivar el inicio de sesión remoto para el usuario root? Introduce y.
  • ¿Eliminar la prueba de base de datos por defecto? Introduce y otra vez.
  • ¿Eliminar el usuario anónimo por defecto? Introduce y para confirmar.
  • ¿Recargar los privilegios de la tabla para aplicar los cambios? Introduce y.

Una vez asegurada la MariaDB, inicia sesión en ella utilizando el comando mariadb que se indica a continuación. Cuando se te pida la contraseña, introduce tu contraseña de root de MariaDB.

sudo mariadb -u root -p

Tras acceder a MariaDB, ejecuta las siguientes consultas para crear una nueva base de datos typo3db, un usuario typo3 y la contraseña typo3password.

CREATE DATABASE typo3db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typo3db.* to typo3@localhost IDENTIFIED BY 'typo3password';
FLUSH PRIVILEGES;

crear base de datos y usuario

A continuación, ejecuta la siguiente consulta para verificar el privilegio del usuario typo3 de MariaDB y asegurarte de que el usuario puede acceder a la base de datos typo3db.

SHOW GRANTS FOR typo3@localhost;

En la salida, deberías ver que el usuario typo3 de MariaDB puede acceder a la base de datos typo3db.

mostrar privilegios de usuario

Escribe quit para salir del servidor MariaDB y completar el paso.

Configurar PHP-FPM

Con el servidor MariaDB configurado, el siguiente paso es configurar la instalación de PHP-FPM. Integrarás la instalación de PHP-FPM con el servidor web Nginx.

En primer lugar, ejecuta el siguiente comando para configurar la zona horaria por defecto de tu sistema.

sudo timedatectl set-timezone Europe/Stockholm

Ahora abre la configuración de PHP /etc/php.ini utilizando el comando editor vim.

sudo vim /etc/php.ini

Descomenta el parámetro date.timezone y cambia el valor por la zona horaria adecuada.

date.timezone = Europe/Stockholm

Aumenta y activa algunos de los parámetros PHP de la siguiente manera. Para el parámetro memory_limit, ajústalo con la memoria actual que tengas.

memory_limit = 512M
max_execution_time = 300
max_input_vars = 2000

Ahora aumenta los parámetros post_max_size y upload_max_filesize a 30MB.

post_max_size = 30M
upload_max_filesize = 30M

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, abre la configuración del pool PHP-FPM /etc/php-fpm.d/www.conf utilizando el editor vim.

sudo vim /etc/php-fpm.d/www.conf

Cambia el valor por defecto del parámetro usuario y grupo a nginx así:

user = nginx
group = nginx

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para reiniciar el servicio PHP-FPM y aplicar los cambios. A continuación, verifica el PHP-FPM para asegurarte de que se está ejecutando.

sudo systemctl restart php-fpm
sudo systemctl status php-fpm

Si se está ejecutando, deberías obtener una salida como ésta:

configurar php-fpm

Además, también puedes verificar PHP-FPM comprobando el archivo de socket por defecto para PHP-FPM, que es /run/php-fpm/www.sock. Ejecuta el siguiente comando ss para obtener la lista de sockets disponibles en tu sistema y filtra la salida para mostrar sólo www. sock.

ss -pl | grep www.sock

Si PHP-FPM se está ejecutando, deberías ver que el archivo de sockets predeterminado de PHP-FPM /run/php-fpm/www. sock está disponible de esta forma:

comprobar php-fpm sock

Descargar TYPO3 CMS

TYPO3 CMS se puede instalar de muchas maneras, y para esta demo, instalarás TYPO3 CMS a través del gestor de paquetes Composer.

Ejecuta el siguiente comando para crear un nuevo directorio /var/www/typo3. Éste se utilizará como directorio de destino para la instalación de TYPO3 CMS

mkdir -p /var/www/typo3

A continuación, ejecuta el siguiente comando para cambiar la propiedad del directorio /var/www/typo3 al usuario nginx y asegurar el acceso de lectura y escritura para el propietario de ese directorio.

sudo chown -R nginx:nginx /var/www/typo3
sudo chmod u+rw /var/www/typo3

Ahora, desplázate al directorio /var/www/typo3 y ejecuta el comando Composer que aparece a continuación para descargar el código fuente de TYPO3 CMS.

cd /var/www/typo3
sudo -u nginx composer create-project typo3/cms-base-distribution:^12 .

Cuando la instalación se esté ejecutando, deberías ver el proceso así:

descargar e instalar TYPO3 CMS

Una vez descargado TYPO3, ejecuta el siguiente comando para verificar la lista de archivos y directorios en el directorio /var/www/typo3.

ls -lah /var/www/typo3

Deberías ver archivos y directorios similares a estos:

lista de archivos código fuente TYPO3 CMS

Por último, ejecuta el archivo binario TYPO3 CMS para iniciar la configuración, y se te pedirán algunas configuraciones.

sudo -u nginx ./vendor/bin/typo3 setup

Se te pedirán algunas de las configuraciones de TYPO3 CMS.

  • Introduce el driver de la base de datos a mysqli.
  • Introduce el usuario de la base de datos, la contraseña, el puerto y el host.
  • Ahora escribe el nombre de la base de datos que se utilizará para TYPO3 CMS. En este ejemplo el nombre de la base de datos es typo3db.
  • Introduce el nuevo usuario administrador, el correo electrónico y la contraseña para TYPO3 CMS.
  • Para el nombre del proyecto y la URL básica del sitio, pulsa ENTER para dejarlo por defecto.

Una vez finalizada la configuración de TYPO3 CMS, deberías ver el mensaje«Enhorabuena – La configuración de TYPO3 ha finalizado«.

instalar TYPO3 CMS a través de la línea de comandos

Configuración del Bloque de Servidor Nginx para TYPO3 CMS

Después de instalar y configurar TYPO3 CMS, vas a configurar el bloque de servidor Nginx para TYPO3 CMS. Antes de empezar, asegúrate de que tienes el nombre de dominio apuntando a la dirección IP de tu servidor.

Crea una nueva configuración del bloque del servidor Nginx/etc/nginx/conf.d/typo3.conf utilizando vim.

sudo vim /etc/nginx/conf.d/typo3.conf

Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio de destino en el parámetro nombre_servidor.

server {
    listen       80;
    server_name  typo3.hwdomain.io;

root         /var/www/typo3/public;
index index.php;

# Load configuration typo3.conf.
include /etc/nginx/default.d/typo3-nginx.conf;
}

Guarda y sal del archivo cuando hayas terminado.

A continuación, crea otra configuración /etc/nginx/default.d/typo3-nginx.conf utilizando el siguiente comando vim.

sudo vim /etc/nginx/default.d/typo3-nginx.conf

Introduce la siguiente configuración en el archivo. Esta es la configuración principal de Nginx para TYPO3 CMS.

# Compressing resource files will save bandwidth and so improve loading speed, especially for users
# with slower internet connections. TYPO3 can compress the .js and .css files for you.
# *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend
# *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties
#    config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files.
location ~ \.js\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/javascript gzip; }
}
location ~ \.css\.gzip$ {
    add_header Content-Encoding gzip;
    gzip off;
    types { text/css gzip; }
}
# TYPO3 - Rule for versioned static files, configured through:
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
if (!-e $request_filename) {
rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last;
}

# TYPO3 - Block access to composer files
location ~* composer\.(?:json|lock) {
deny all;
}

# TYPO3 - Block access to flexform files
location ~* flexform[^.]*\.xml {
deny all;
}

# TYPO3 - Block access to language files
location ~* locallang[^.]*\.(?:xml|xlf)$ {
deny all;
}

# TYPO3 - Block access to static typoscript files
location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt {
deny all;
}

# TYPO3 - Block access to miscellaneous protected files
location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ {
deny all;
}

# TYPO3 - Block access to recycler and temporary directories
location ~ _(?:recycler|temp)_/ {
deny all;
}

# TYPO3 - Block access to configuration files stored in fileadmin
location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ {
deny all;
}

# TYPO3 - Block access to libraries, source and temporary compiled data
location ~ ^(?:vendor|typo3_src|typo3temp/var) {
deny all;
}

# TYPO3 - Block access to protected extension directories
location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ {
deny all;
}

location / {
try_files $uri $uri/ /index.php$is_args$args;
}

location = /typo3 {
rewrite ^ /typo3/;
}

location /typo3/ {
absolute_redirect off;
try_files $uri /typo3/index.php$is_args$args;
}

location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_buffer_size 32k;
fastcgi_buffers 8 16k;
fastcgi_connect_timeout 240s;
fastcgi_read_timeout 240s;
fastcgi_send_timeout 240s;

# this is the PHP-FPM upstream - see also: https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/#connecting-nginx-to-php-fpm
fastcgi_pass         unix:/run/php-fpm/www.sock;
fastcgi_index        index.php;
include              fastcgi.conf;
}

Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando para asegurarte de que tienes la configuración de Nginx adecuada. A continuación, reinicia el servicio Nginx para aplicar los cambios.

sudo nginx -t
sudo systemctl restart nginx

Una vez ejecutado el comando, deberías obtener una salida«sintaxis ok – la prueba se ha realizado correctamente» y tu instalación de TYPOC3 CMS debería ser accesible.

Proteger TYPO3 CMS con SSL/TLS

En la siguiente sección, asegurarás tu instalación de TYPO3 CMS con certificados SSL/TLS que se generarán desde Letsencrypt. Para ello, debes instalar Certbot en tu sistema.

Ejecuta el siguiente comando dnf para instalar Certbot y el plugin de Certbot para Nginx. Introduce y para confirmar la instalación y pulsa INTRO.

sudo dnf install certbot python3-certbot-nginx

instalar certbot

Ahora ejecuta el siguiente comando para generar nuevos certificados SSL de Letsencrypt para el CMS TYPO3. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico.

sudo certbot --nginx --agree-tos --no-eff-email  --redirect --hsts --staple-ocsp --email [email protected] -d typo3.hwdomain.io

Si el proceso funciona correctamente, los nuevos certificados SSL se generarán en el directorio /etc/letsencrypt/live/typo3.hwdomain.io. Además, la configuración del bloque del servidor para TYPO3 CMS se configurará automáticamente con SSL activado a través de certbot.

Inicia tu navegador web y visita la dirección de instalación de TYPO3 CMS (es decir: https://typo3.hwdomain.io/). Deberías obtener la pantalla de inicio de sesión de TYPO3 CMS.

Introduce el usuario administrador y la contraseña que has creado, y haz clic en Iniciar sesión.

Iniciar sesión en TYPO3 CMS

Si tienes el usuario y la contraseña de administrador correctos, debería aparecerte el panel de control del administrador de TYPO3 CMS de la siguiente manera:

Panel de administración de TYPO3 CMS

En el menú superior derecho, haz clic en el icono de información y deberías obtener los detalles de las pilas de software que estás utilizando actualmente para la instalación de TYPO3 CMS. En esta demo, la versión instalada de TYPO3 CMS es la v12 con servidor web Nginx, servidor de base de datos MariaDB y PHP-FPM 8.1.

información sobre la instalación de typo3 cms

Conclusión

¡Ya lo tienes todo listo! Has completado la instalación de TYPO3 CMS en tu servidor AlmaLinux 9 con servidor de base de datos MariaDB, PHP-FPM y servidor web Nginx. También has asegurado tu despliegue mediante certificados SSL/TLS de Letsencrypt. Con esto en mente, ya puedes crear un nuevo sitio a través de TYPO3 CMS.

También te podría gustar...