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 PHP Remi para RHEL 9.
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
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
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
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.
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.
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 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;
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.
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:
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:
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í:
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:
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«.
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
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.
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:
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.
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.