Cómo instalar Typo3 CMS en Debian 9

En esta guía, aprenderemos a instalar y configurar la última versión de Typo3 CMS en Debian 9.

Typo3 es un potente sistema de gestión de contenidos de código abierto con la mayoría de las partes escritas en el lenguaje de programación PHP. Suele desplegarse en Linux bajo servidores web Apache/Nginx, lenguaje de programación del lado del servidor PHP y sistema de gestión de bases de datos MySQL/MariaDB, también conocido como pila LAMP o LEMP. La plataforma Typo3 CMS es muy flexible y escalable y puede ampliarse sin necesidad de escribir ninguna línea de código, lo que la convierte en una candidata perfecta para desplegar pequeños sitios web o potentes portales empresariales multilingües.

Requisitos

  • Instalación mínima de Debian 9 en una máquina bare-metal o en un servidor virtual privado
  • Privilegios sudo de root para una cuenta local o remota o acceso directo a la cuenta de root
  • Una dirección IP estática configurada para una de las tarjetas de interfaz de red de tu sistema
  • Un nombre de dominio, privado o público, según tu implantación, con los registros DNS adecuados configurados para los servicios web. Si no tienes un nombre de dominio válido o registrado, puedes realizar la instalación y acceder al sitio web a través de la dirección IP de tu servidor
  • Si quieres utilizar el registro del sitio web, la moderación de los comentarios y otras funciones, deberás tener un servidor de correo en funcionamiento debidamente configurado en tus instalaciones con acceso remoto a sus servicios IMAP y SMTP.

Preparar el servidor

Antes de empezar a instalar y configurar Typo desde las fuentes en tu propio servidor, asegúrate primero de que el sistema cumple todos los requisitos de software para compilar e instalar la aplicación. En el primer paso, actualiza los repositorios de tu sistema y los paquetes de software mediante el siguiente comando.

apt update
apt upgrade

Una vez que el sistema esté totalmente actualizado, configura el nombre de tu sistema ejecutando el siguiente comando. Reemplaza tu variable de nombre de host según corresponda.

Establecer el nombre de host

hostnamectl set-hostname typo

Comprueba el nombre de host de la máquina y el archivo de hosts ejecutando los siguientes comandos.

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

Por último, reinicia el servidor de Debian para que se apliquen correctamente las actualizaciones del núcleo y los cambios de nombre de host.

systemctl reboot

Instala las herramientas necesarias

En el siguiente paso, ejecuta el siguiente comando para instalar algunas utilidades necesarias que se utilizarán para seguir gestionando tu sistema desde la línea de comandos.

apt install wget bash-completion zip unzip

Además, instala el software imagemagick, requerido por Typo3 para crear, editar, componer o convertir mapas de bits u otros tipos de formato de imágenes subidas al sitio web.

apt install imagemagick

Typo3 es una plataforma CMS basada en la web y escrita principalmente en el lenguaje de programación del lado del servidor PHP. Para ejecutar los scripts de archivos PHP de la aplicación, es necesario instalar y poner en funcionamiento un servidor web, como el servidor HTTP Apache, y una pasarela de procesamiento PHP en el sistema.

Instalar Apache y PHP

Para instalar el servidor web Apache y el intérprete de PHP junto con todos los módulos PHP necesarios para que la aplicación funcione correctamente, emite el siguiente comando en tu consola de servidor.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-zip php7.0-gd php7.0-xml php7.0-gd php7.0-json php7.0-opcache php-imagick  php7.0-curl php7.0-mbstring php7.0-bcmath php7.0-gmp

Una vez instalados Apache y PHP, comprueba si el servidor web está en funcionamiento y a la escucha de las conexiones de red en el puerto 80, emitiendo el siguiente comando con privilegios de root.

netstat –tlpn

En caso de que la utilidad de red netstat no esté instalada por defecto en tu sistema Debian, ejecuta el siguiente comando para instalarla.

apt install net-tools

Al inspeccionar la salida del comando netstat puedes ver que el servidor web apache está escuchando conexiones de red entrantes en el puerto 80. Para la misma tarea también puedes utilizar el comando ss, que se instala automáticamente por defecto en Debian 9.

ss- tulpn

Configurar el cortafuegos

En caso de que tengas un cortafuegos habilitado en tu sistema, como la aplicación de cortafuegos UFW, debes añadir una nueva regla para permitir que el tráfico HTTP pase a través del cortafuegos emitiendo el siguiente comando

ufw allow WWW

o

ufw allow 80/tcp

Si utilizas las reglas raw de iptables para gestionar las reglas del cortafuegos en tu servidor Debian, añade la siguiente regla para permitir el tráfico de entrada del puerto 80 en el cortafuegos para que los visitantes puedan navegar por el sitio web.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

Configurar Apache

A continuación, habilita y aplica los siguientes módulos de Apache necesarios para que la aplicación web funcione correctamente, ejecutando el siguiente comando.

a2enmod rewrite deflate headers
systemctl restart apache2

Por último, comprueba si la página web por defecto del servidor web Apache puede mostrarse en los navegadores de tus clientes visitando la dirección IP de tu máquina Debian o tu nombre de dominio o FQDN del servidor mediante el protocolo HTTP, como se muestra en la siguiente imagen. Si no conoces la dirección IP de tu máquina, ejecuta los comandos ifconfig o ip a para revelar la dirección IP de tu servidor.

http://your_domain.tld

Para instalar y acceder al panel de administración web de Typo3 respaldado y al sitio web frontend a través del protocolo HTTPS que asegurará el tráfico para tus clientes, ejecuta el siguiente comando para habilitar el módulo SSL del servidor web Apache y el archivo de configuración del sitio SSL.

a2enmod ssl
a2ensite default-ssl.conf

A continuación, abre el archivo de configuración del sitio SSL por defecto de Apache con un editor de texto y habilita las reglas de reescritura de URLs añadiendo las siguientes líneas de código después de la directiva DocumentRoot como se muestra en el siguiente ejemplo:

nano /etc/apache2/sites-enabled/default-ssl.conf

Extracto del archivo de configuración del sitio SSL:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Además, realiza el siguiente cambio en la línea VirtualHost para que tenga el aspecto que se muestra en el siguiente extracto:

        <VirtualHost *:443>

Cierra el archivo SSL de Apache y abre el archivo /etc/apache2/sites-enabled/000-default.conf para editarlo y añade las mismas reglas de reescritura de URL que para el archivo de configuración SSL. Inserta las líneas de código después de la declaración DocumentRoot como se muestra en el siguiente ejemplo.

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

Por último, reinicia el demonio Apache para aplicar todas las reglas configuradas hasta ahora y visita tu dominio a través del protocolo HTTP. Como estás utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, debería aparecer una advertencia de error en el navegador.

systemctl restart apache2

https://yourdomain.tld

Acepta la advertencia para utilizar el certificado no fiable y para continuar y ser redirigido a la página web por defecto de Apache, como se muestra en la siguiente imagen.

En caso de que la aplicación del cortafuegos UFW bloquee las conexiones de red entrantes al puerto HTTPS, debes añadir una nueva regla para permitir que el tráfico HTTPS pase a través del cortafuegos mediante el siguiente comando

ufw allow 'WWW Full'

o

ufw allow 443/tcp

Si iptables es la aplicación de cortafuegos instalada por defecto para proteger tu sistema Debian a nivel de red, añade la siguiente regla para permitir el tráfico entrante del puerto 443 en el cortafuegos para que los visitantes puedan navegar por tu nombre de dominio.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

Configurar PHP

En el siguiente paso, tenemos que hacer algunos cambios más en el archivo de configuración por defecto de PHP para asegurarnos de que las siguientes variables de PHP están habilitadas y la configuración de la zona horaria de PHP está correctamente configurada y coincide con la ubicación geográfica de tu sistema. Abre el archivo /etc/php/7.0/apache2/php.ini para editarlo y asegúrate de que las siguientes líneas están configuradas de la siguiente manera. También, inicialmente, haz una copia de seguridad del archivo de configuración de PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Busca, edita y cambia las siguientes variables en el archivo de configuración php.ini:

file_uploads = On
memory_limit = 128 M
upload_max_file_size = 64M
max_execution_time = 240
max_input_vars = 1500
date.timezone = Europe/London

Aumenta la variable upload_max_file_size según convenga para soportar archivos adjuntos de gran tamaño y sustituye la time.zone variable de acuerdo con tu hora física consultando la lista de zonas horarias proporcionada por los documentos de PHP en el siguiente enlace http://php.net/manual/en/timezones.php

Si quieres aumentar la velocidad de carga de las páginas de tu sitio web mediante el plugin OPCache disponible para PHP7, añade los siguientes ajustes de OPCache en la parte inferior del archivo de configuración del intérprete de PHP, como se detalla a continuación:

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Cierra el archivo de configuración php.ini y comprueba si al final del archivo de configuración de PHP se han añadido correctamente las variables mediante el siguiente comando.

tail /etc/php/7.0/apache2/php.ini

Una vez que hayas realizado todos los cambios explicados anteriormente, habilita el módulo OPCache y reinicia el demonio apache para aplicar los nuevos cambios emitiendo los siguientes comandos.

phpenmod opcache
systemctl restart apache2

Por último, crea un archivo de información de PHP ejecutando el siguiente comando y comprueba si la zona horaria de PHP se ha configurado correctamente visitando el archivo de script de información de PHP desde un navegador en la siguiente URL, como se ilustra en la siguiente imagen. Desplázate hasta la configuración de la fecha para comprobar la configuración de la zona horaria de PHP.

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

Instalar MariaDB

La plataforma Typo3 CMS almacena diferentes configuraciones, como usuarios, sesiones, contactos, artículos, páginas y otras configuraciones, en una base de datos relacional. En esta guía, configuraremos Typo3 para utilizar la base de datos MariaDB como backend. Ejecuta el siguiente comando para instalar la base de datos MariaDB y el módulo PHP necesario para acceder a la base de datos mysql.

apt install mariadb-server php7.0-mysql mariadb-client

Una vez que hayas instalado MariaDB, comprueba si el demonio se está ejecutando y escucha conexiones en localhost, puerto 3306, ejecutando el comando netstat.

netstat –tlpn | grep mysql

A continuación, entra en la consola de MySQL y asegura la cuenta raíz de MariaDB ejecutando los siguientes comandos.

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

En el siguiente paso, asegura MariaDB ejecutando el scriptmysql_secure_installation proporcionado por los paquetes de instalación de los repositorios stretch de Debian. Mientras se ejecuta, el script hará una serie de preguntas diseñadas para asegurar la base de datos MariaDB, como: cambiar la contraseña de root de MySQL, eliminar los usuarios anónimos, desactivar los inicios de sesión de root remoto y eliminar la base de datos de prueba. Ejecuta el script emitiendo el siguiente comando y asegúrate de que escribes «sí» a todas las preguntas formuladas para asegurar completamente el demonio MySQL. Utiliza el siguiente extracto de la salida del script como guía.

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

 

In order to log into MariaDB to secure it, we'll need the current

password for the root user.  If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.

 

You already have a root password set, so you can safely answer 'n'.

 

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!

 

 

By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

 

Remove anonymous users? [Y/n] y

 ... Success!

 

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

 

Disallow root login remotely? [Y/n] y

 ... Success!

 

By default, MariaDB comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

 

Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

 

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

 

Reload privilege tables now? [Y/n] y

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Para probar la configuración de seguridad de MariaDB, intenta acceder a la base de datos desde la consola con la cuenta de root y sin contraseña. El acceso a la base de datos debería ser denegado si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente fragmento de comando:

[email protected]:~# mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Si se proporciona la contraseña de root, se debería conceder el proceso de acceso a la consola de MySQL, como se muestra en el siguiente ejemplo de comando:

[email protected]:~# mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
exit
Bye

A continuación, entra en la consola de la base de datos MariaDB, crea una base de datos para Typo3 CMS y un usuario con contraseña que se utilizará para gestionar la base de datos de la aplicación, emitiendo los siguientes comandos. Sustituye el nombre de la base de datos, el usuario y la contraseña según corresponda.

mysql –u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
create database typo;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on typo.* to 'typo_user' identified by 'password1';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;  
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

Para aplicar todos los cambios realizados hasta el momento, reinicia los demonios de MySQL y Apache y verifica si los demonios se están ejecutando emitiendo los siguientes comandos.

systemctl restart mysql apache2
systemctl status mysql apache2

Instalar Typo3

Una vez que se cumplan todos los requisitos del sistema para instalar la plataforma Typo3, visita la página de descarga oficial de Typo3 CMS en https://typo3.org/download/ y coge el último archivo comprimido del paquete zip con la ayuda de la utilidad wget, emitiendo el siguiente comando.

wget --content-disposition https://get.typo3.org/current/zip 

Una vez finalizada la descarga del archivo zip, extrae el archivo comprimido de Typo3 a tu directorio de trabajo actual y haz una lista de los archivos extraídos con los siguientes comandos.

unzip typo3_src-8.7.8.zip
ls -al typo3_src-8.7.8

Además, elimina el archivo index.html instalado por defecto por el servidor web Apache en la ruta webroot y elimina también el archivo info.php creado anteriormente.

rm /var/www/html/index.html
rm /var/www/html/info.php

Los archivos de instalación de Typo3 se encuentran en tu directorio de trabajo actual en el directoriotypo3_src-8.7.8. Copia todo el contenido del directorio extraído de Typo3 a la ruta raíz del documento de tu servidor web ejecutando el siguiente comando.

cp -rf typo3_src-8.7.8/* /var/www/html/

A continuación, crea el archivo FIRST_INSTALL en la ruta webroot de tu dominio y ejecuta los siguientes comandos para conceder al usuario de ejecución de Apache permisos completos de escritura en la ruta raíz del documento del servidor web. Utiliza el comando ls para listar los permisos de los archivos instalados de la aplicación situados en el directorio /var/www/html/.

touch /var/www/html/FIRST_INSTALL
chown -R www-data:www-data /var/www/html/
ls –al /var/www/html/

Typo3 descargado

A continuación, procede con el proceso de instalación de Typo3 CMS abriendo un navegador y navegando por la dirección IP de tu servidor o el nombre de dominio o FQDN del servidor a través del protocolo HTTPS. En la primera pantalla de instalación, el instalador de Typo3 comprobará el entorno de tu sistema para determinar si se cumplen todos los requisitos para la instalación de la aplicación, como se muestra en la siguiente imagen. Si se cumplen todos los requisitos, pulsa el botón El sistema parece estar bien. Continuar! para iniciar el proceso de instalación.

https://yourdomain.tld

Instalador de Typo3 en el navegador

En la siguiente pantalla de instalación, selecciona la conexión TCP/IP de MySQL configurada manualmente y añade la dirección de la base de datos MySQL, el nombre y las credenciales creadas anteriormente para la base de datos de Typo3 CMS. Utiliza la dirección 127.0.0.1 para el host de MySQL y deja el número de puerto por defecto (3306), como se muestra en la siguiente imagen. Cuando termines, pulsa el botón Continuar para pasar al siguiente paso de la instalación.

Configurar la conexión a la base de datos

En el siguiente paso, elige la opción«Utilizar una base de datos vacía existente», selecciona el nombre de la base de datos creada anteriormente para Typo3 y pulsa el botón Continuar para seguir con el proceso de instalación.

Elige la plantilla de la base de datos

Una vez importado el esquema de la base de datos, crea un usuario administrador para Typo3 CMS y escribe una contraseña segura para la cuenta de administrador. Además, añade un nombre para el sitio web de Typo3, como se muestra en la siguiente imagen, y pulsa el botón Continuar para completar el proceso de instalación.

Establecer usuario administrador

Una vez completada la instalación, el instalador te preguntará si quieres un sitio preconfigurado. Elige Sí, descarga la lista de distribuciones y pulsa el botón Abrir el Backend de TYPO3 para ser redirigido al panel de control del sitio web.

Utilizar el sitio preconfigurado o no

También puedes visitar el panel web de administración de Typo3 navegando hacia la dirección IP o el nombre de dominio de tu servidor a través del protocolo HTTPS a la URL /typo3/index.php. Accede al panel de control de Typo3 con las credenciales de la cuenta de administrador configurada durante el proceso de instalación, como se muestra en la siguiente imagen.

https://yourdomain.tld/typo3/index.php

Typo3 admin

Después de iniciar sesión en el panel de administración de Typo3, selecciona e instala un paquete de distribución preconfigurado de la lista que aparece. En esta guía instalaremos y utilizaremos la distribución del paquete de introducción oficial que ofrece Typo3 para crear fácilmente la estructura de la página y los elementos de contenido.

Panel de control de Typo3

Por último, para obligar a los visitantes a navegar por el sitio web del frontend de Typo3 y acceder de forma segura a la interfaz del backend mediante el protocolo HTTPS, que cifra el tráfico entre el servidor y los navegadores de los clientes, vuelve al terminal de tu servidor y edita el archivo .htaccess situado en la ruta de tu sitio web.

En primer lugar, crea el archivo .htaccess basándote en el archivo de ejemplo proporcionado por Typo3, ejecutando el siguiente comando.

cp /var/www/html/_.htaccess /var/www/html/.htaccess

A continuación, abre y edita el archivo .htaccess y, en la parte inferior del archivo, modifica la configuración nativa de PHP con las configuraciones siguientes. Puedes cambiar la configuración de PHP para que se ajuste a los recursos de tu propio servidor.

nano /var/www/html/.htaccess

Extracto del archivo .htaccess:

# Modify PHP settings
php_flag register_globals off
php_flag magic_quotes_gpc Off
php_value upload_max_filesize 500M
php_value post_max_size 500M

Por último, inserta las siguientes reglas al final del archivo para redirigir el tráfico del dominio a HTTPS.

# Redirect to HTTPS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Además, crea un nuevo archivo .htaccess en el directorio typo3 situado en la ruta webroot del dominio para redirigir automáticamente las sesiones del panel de control del administrador a HTTPS.

nano /var/www/html/typo3/.htaccess

Extracto del archivo .htaccess :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Por último, visita la página del frontend del sitio web de Typo3 por defecto navegando hacia la dirección IP de tu servidor o el nombre de dominio a través del protocolo HTTPS, como se muestra en la siguiente captura de pantalla.

https://www.yourdomain.tld

Portada de Typo3

¡Eso es todo! Has instalado y configurado correctamente la plataforma web Typo3 CMS en Debian 9. Sin embargo, como el servidor HTTP Apache utiliza un certificado autofirmado no fiable para cifrar el tráfico entre el servidor y los navegadores de los visitantes, siempre se generará un mensaje de advertencia que se mostrará en sus navegadores. Esta advertencia es mala para los clientes que visitan la página principal de tu sitio web. En este caso deberías comprar un certificado emitido por una Autoridad de Certificación de confianza u obtener un par de certificados gratuitos de Let’s Encrypt CA.

Para otras configuraciones personalizadas relativas a la aplicación web Typo3 CMS, visita la página de documentación en la siguiente dirección: https://docs.typo3.org/

También te podría gustar...