Plesk Obsidian 18 en Ubuntu 20

Última revisión: 12 de febrero de 2021

Este tutorial ha sido creado en un VPS de Clouding.io. Puedes crear tu propio VPS desde 3€/mes.

Además, tienes la posibilidad de crear tu VPS con la imagen de WordPress en un clic.

COLABORACIÓN

Este tutorial ha sido creado en gracias a una licencia de Plesk.

Consigue tus licencias Plesk desde su sitio web o en tu proveedor de alojamiento.

COLABORACIÓN

Versiones a instalar

Sistema Operativo: Ubuntu 20
Panel de Control: Plesk Obsidian 18

En Clouding tienes una opción de seleccionar Plesk como panel, por lo que la instalación ya estará hecha y podrás saltarte los primeros pasos. Al crear el VPS te darán los accesos al panel.

Configurando el Sistema Operativo

Una vez esté instalado el sistema operativo, lo primero que configuraremos será la hora del servidor. En este caso configuraremos la zona horaria Universal.

timedatectl set-timezone 'UTC'
timedatectl set-ntp on

Lo siguiente que haremos es comprobar la versión del sistema operativo y, posteriormente, hacer una actualización completa del mismo.

lsb_release -a
apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove

Instalando Plesk

Una vez esta todo actualizado, comenzaremos la instalación de Plesk.

sh <(curl https://autoinstall.plesk.com/one-click-installer || wget -O - https://autoinstall.plesk.com/one-click-installer)

Seguiremos las preguntas y configuraciones básicas que nos haga. Al finalizar la instalación nos proporcionará una dirección URL a la que se puede acceder a su panel, donde seguiremos la configuración.

Configuración inicial

Al acceder a la dirección URL que nos proporciona, rellenamos el nombre, correo, contraseña y añadimos la licencia si corresponde. Existe una opción de pruebas por si aún no te has decidido o simplemente quieres probar.

Recuerda que para tener acceso completo al panel de control avanzado has de cambiar la Vista Power User a Vista de proveedor de servicios. Se puede hacer desde la sección Cambiar vista que hay en la esquina inferior izquierda de la pantalla. Otra posibilidad para tener más control del panel, es pasar al modo Vista de proveedor de servicios desde la sección Herramientas y configuración → Administración del interfaz.

Si el panel no está por defecto en español, podemos activarlo en este u otros idiomas yendo a la sección Tools & Settings → Interface Management → Languages y activaremos el español con Make Default.

Para tener el panel en español de forma inmediata, iremos al menú en la sección de Profile y allí guardaremos la sesión (nos debe aparecer el idioma español por defecto en la parte de selección).

Extensiones de Plesk

Previo a la configuración, te recomiendo que revises alguna de las extensiones más interesantes para Plesk que puede ser útil a la hora de utilizar WordPress o la gestión del sevidor. No son obligatorias, pero algunas como Let’s Encrypt, SSL It! o WordPress Toolkit facilitarán mucho las tareas de configuración y mantenimiento.

Configuración avanzada

Todas las opciones de configuración general están en la zona del menú Herramientas y configuración. Aquí hay una serie de secciones que vamos a revisar para dejar listas para nuestros WordPress y para la seguridad y mantenimiento óptimo.

Configuración general

Configuración del servidor web Apache

En la sección de Configuración del servidor web Apache seleccionaremos como Modo MPM el de Event.

Los Módulos Apache que dejaremos activos es la siguiente:

  • access_compat
  • auth_basic
  • authn_core
  • authz_core
  • autoindex
  • brotli
  • buffer
  • cache
  • cache_disk
  • cache_socache
  • cgid
  • deflate
  • dir
  • expires
  • fcgid
  • file_cache
  • filter
  • headers
  • http2
  • include
  • negotiation
  • proxy
  • proxy_fcgi
  • proxy_http
  • proxy_http2
  • proxy_wstunnel
  • reqtimeout
  • rewrite
  • setenvif
  • socache_redis
  • socache_shmcb
  • suexec
  • userdir

Configuración de PHP

Deberíamos tener al menos las versiones soportadas por PHP de forma oficial y estable. En caso de que no estén todas, podemos ir al enlace superior de Plesk Installer donde podremos añadir o eliminar versiones de PHP.

Por defecto dejaremos en uso las opciones de PHP-FPM para usar con Apache.

Extensiones de PHP 7.3

  • bcmath
  • curl
  • dba
  • dom
  • fileinfo
  • gd
  • imagick
  • imap
  • intl
  • json
  • mbstring
  • mysqli
  • mysqlnd
  • opcache
  • pdo
  • pdo_mysql
  • phar
  • posix
  • pspell
  • redis
  • soap
  • sodium
  • sysvmsg
  • sysvsem
  • sysvshm
  • tidy
  • xmlreader
  • xmlrpc
  • xmlwriter
  • xsl
  • zip

Extensiones de PHP 7.4

  • bcmath
  • curl
  • dba
  • dom
  • fileinfo
  • gd
  • imagick
  • imap
  • intl
  • json
  • mbstring
  • mysqli
  • mysqlnd
  • opcache
  • pdo
  • pdo_mysql
  • phar
  • posix
  • pspell
  • redis
  • soap
  • sodium
  • sysvmsg
  • sysvsem
  • sysvshm
  • tidy
  • xmlreader
  • xmlrpc
  • xmlwriter
  • xsl
  • zip

Extensiones de PHP 8.0

  • bcmath
  • curl
  • dba
  • dom
  • fileinfo
  • gd
  • imap
  • intl
  • mbstring
  • mysqli
  • mysqlnd
  • opcache
  • pdo
  • pdo_mysql
  • phar
  • posix
  • pspell
  • redis
  • snmp
  • soap
  • sodium
  • sysvmsg
  • sysvsem
  • sysvshm
  • tidy
  • xmlreader
  • xmlwriter
  • xsl
  • zip

Aplicaciones y bases de datos

Preferencias de hosting de bases de datos

Activaremos algunas de las opciones para aumentar la seguridad y complejidad en la base de datos.

  • Añadir el prefijo y un guión bajo al principio de los nombres de las bases de datos: Nombre de usuario
  • Añadir el nombre de usuario y un guión bajo al principio de los nombres de usuario de las bases de datos: activado
  • Configuración predeterminada para el acceso remoto de los usuarios de la base de datos: Sólo permitir conexiones locales

En principio configuraremos els ervidor para que no se pueda acceder a la base de datos desde el exterior. Existen muchos sistemas de análisis de seguridad que revisan los puertos de MySQL en busca de contraseñas inseguras o de accesos sin contraseña.

Plesk

Configuración del modo restringido

En la pestaña de Configuración de PHP haremos algunos cambios.

memory_limit: 256M
max_execution_time: 300
max_input_time: 60
post_max_size: 128M
upload_max_filesize: 128M
opcache.enable: On

Seguridad

Si queremos tener unos niveles de seguridad un poco más altos de lo normal podemos hacer algunos cambios de configuración.

Directiva de seguridad

  • Directiva de uso de FTPS: Permitir únicamente conexiones FTPS seguras

Prohibición de direcciones IP (Fail2Ban)

  • Activar detección de intrusiones: activado

Firewall para aplicaciones web (ModSecurity)

En la sección de «Configuración» cambiaremos al conjunto de reglas por el de OWASP que da soporte a WordPress.

Versiones de TLS y gestión de ciphers

Versiones de TLS y ciphers de Mozilla: activado, de tipo Intermedia (recomendada)

ImunifyAV

En caso de disponer de la opción de ImunifyAV activaremos este sistema de antivirus y protección del servidor.

Haremos una configuración (en los Settings) que nos ayude a mejorar el rastreo.

  • «Quick Scan» mode: activado
  • Skip images and other media files: activado
  • Optimize scanning by speed: activado
  • Max working threads: 1
  • Scheduled rescanning: monthly
  • Start automatic scanning at: 04:00
  • Max allocated memory for a single working thread (Mb): 768
  • Number of days to keep infected files in backup: 7
  • Trim malicious file instead of deleting it: desactivado
  • Update antivirus databases automatically: activado
  • Allow users to use files ignore list: activado
  • Enable antivirus warning banners: activado
  • Enable ImunifyAV menu shortcut: activado
  • Scanning timeout: Unlimited
  • Log level: Normal

Instalación de Redis

Para trabajar con unas mejoras en el rendimiento de la caché de objetos, vamos a dejar listo Redis como sistema de almacenamiento. Esta instalación y configuración la haremos mediante SSH, ya que por defecto no viene con Plesk,

apt -y update && apt -y upgrade && apt -y dist-upgrade && apt -y autoremove
apt -y install redis-server

Posteriormente, y de la misma forma que el resto de elementos, lo vamos a configurar para que se inicie automáticamente si se reinicia el servidor.

systemctl stop redis-server.service
systemctl enable redis-server.service
systemctl start redis-server.service
systemctl status redis-server.service

Instalación de WP-CLI

Uno de los elementos básicos en cualquier servidor que vaya a tener WordPress es WP-CLI. Es por esto que haremos la instalación.

Una situación que nos encontramos habitualmente es que no existe ningún PHP por defecto en el servidor, por lo que WP-CLI no se podría ejecutar. Podemos verificar que no existe buscando su versión:

php -v

Si devuelve un error, deberemos buscar cuál queremos ejecutar por defecto. Para ello podemos ver la lista de todos los PHP disponibles:

plesk bin php_handler --list

Una de las columnas es la de PHP-CLI que será la ruta que utilicemos para usar la versión que queramos. En este caso usaremos PHP 7.4. Primero validaremos que funciona:

/opt/plesk/php/7.4/bin/php -v

Como queremos que esto sea permanente, necesitaremos el WP-Toolkit de CLI.

plesk bin extension --install wp-toolkit

y ahora sí, configuraremos WP-CLI, en este caso para PHP 7.4.

curl -q -O "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" && mv wp-cli.phar /usr/sbin/ && chmod +x /usr/sbin/wp-cli.phar && if [[ -f /bin/php-cli ]]; then alias wp='/bin/php-cli /usr/sbin/wp-cli.phar --allow-root'; else alias wp='/opt/plesk/php/7.4/bin/php /usr/sbin/wp-cli.phar --allow-root'; fi
wp --info

Si todo ha ido correctamente, veremos la información del WP-CLI tras el último comando.

Creando un sitio (dominio)

Vamos a la sección de Dominios y Añadir Dominio.

Añadiremos el dominio, asignaremos la dirección IP, un usuario y contraseña segura, y activaremos la opción de Proteger el dominio con Let’s Encrypt.

Una vez creado el dominio podremos acceder a la ficha del mismo.

Certificados SSL/TLS

Lo primero que haremos es mejorar la configuración de los certificados y seguridad.

Entraremos en la sección y activaremos el HSTS (a 6 meses) y el Conservar los sitios web protegidos, además de la Asociación de OCSP.

Configuración de PHP

Haremos algunos cambios en la configuración de PHP específica para WordPress.

  • memory_limit: 256M
  • max_execution_time: 300
  • max_input_time: 60
  • post_max_size: 128M
  • upload_max_filesize: 128M
  • opcache.enable: on
  • disable_functions: (dejar vacío)

Para la Configuración de PHP-FPM podemos dejarla de forma automática o configurarla con los datos de la sección Configuración dinámica de PHP-FPM de la sección de Rendimiento WordPress.

Acceso a hosting web

Aunque no es necesario para todos los dominios, puede ser interesante que dejemos activado el bash para la ejecución de WP-CLI. Para ello, en la sección Acceder al servidor vía SSH activaremos la opción /bin/bash.

Cuentas de correo

En la Configuración de correo usaremos la sigueinte configuración:

  • Certificado SSL/TLS para webmail: Let’s Encrypt
  • Certificado SSL/TLS para el correo: Let’s Encrypt
  • Usar el sistema de protección antispam DKIM para la firma de mensajes de email salientes

Antes de crear nuestro WordPress crearemos la cuenta de correo base de toda instalación, que es wordpress@example.com.

  • Crear dirección de email General
    Dirección de email: wordpress@example.com
    Puede usarse para acceder a Plesk: deactivado
    Buzón de correo: desactivado
  • Crear dirección de email Reenvío
    Activar reenvío de correo tu_cuenta_actual@example.com
  • Configuración de Apache y nginx Archivos de índice: index.php index.html index.htm
    Servir archivos estáticos directamente mediante nginx: activar la lista por defecto

Instalar WordPress

Al entrar en la ficha de un dominio veremos en la parte superior la sección de WordPress, o también centralizado en el menú de opciones bajo la pestaña WordPress.

En este caso podemos centralizar todo desde la sección de WordPress. Si tenemos ya un servidor montado, lo mejor será hacer un primer Análisis. Con esto, buscará en todo el servidor los posibles WordPress que haya instalados.

Por otro lado, mediante el enlace de Instalar podremos crear un WordPress con un clic. Seleccionaremos las distintas opciones, pudiendo elegir el usuario administrador y la configuración de la base de datos para que lo haga de forma automática.

Si queremos despreocuparnos, podemos elegir que actualice tanto WordPress, como Plugins y Themes, de forma automática. Posteriormente, podemos elegir el sistema de Smart Update.

Una vez acabada la instalación, veremos en el listado el nuevo sitio.

La primera configuración a revisar es la de Corregir seguridad. Al acceder veremos un botón con el que podemos hacer una primera Comprobación de Seguridad. Esto revisará toda la lista y pondrá al día y nos dirá qué está activo y qué no.

¿Qué deberíamos activar? Va a depender mucho de las funcionaliades del sitio que se vaya a tener, aunque en general se pueden activar todos los que queden pendientes.

IMPORTANTE: Si la opción Modificar el nombre de usuario predeterminado del administrador ya es correcta, es mejor no activarla ya que podría cambiarnos el usuario de administrador. SI vas a ejecutarlo, por favor, asegúrate de tener un usuario Administrador alternativo, aunque sea temporalmente.

En la lista de herramientas marcaremos por defecto la opción de Desactivar wp-cron.php. Este sistema elimina el sistema de crones generado por los usuarios y lo convierte a una tarea programada para que no se sature en caso de tener un sitio de alto tráfico.

Configuración de Apache y nginx

Dentro de la ficha del dominio entraremos en la parte de Configuración de Apache y nginx, donde por defecto tendemos activado Apache.

Para el caso de WordPress podemos hacer algunas optimizaciones.

Configuración común de Apache

  • Archivos de índice: index.php index.html index.htm
  • Expira: 28 días + responder con encabezados Expira únicamente para archivos estáticos

Directivas adicionales de Apache

En la parte de directivas de HTTPS, añadiremos las siguientes líneas…

Header always set Strict-Transport-Security "max-age=10886400; includeSubDomains"
Header always append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff

Configuración nginx

Para mejorar la caché, usaremos la Copia en caché (nginx). Esto activará una capa por encima del servidor web que hace de proxy y de caché, lo que mejorará mucho la descarga de ficheros estáticos. Si entramos en la configuración deberemos optimizarla.

  • Modo proxy: activado
  • Procesamiento inteligente de archivos estáticos : activado
  • Servir archivos estáticos directamente mediante nginx : activado
  • Incluiremos las siguientes extensiones por defecto: ac3 avi bmp bz2 css cue dat doc docx dts eot exe flv gif gz htm html ico img iso jpeg jpg js mkv mp3 mp4 mpeg mpg ogg pdf png ppt pptx qt rar rm svg swf tar tgz ttf txt wav woff woff2 xls xlsx zip webp
  • Activar copia en caché nginx : activado
  • Tamaño de la caché: 1 GB
  • Tiempo de espera de caché: 1 hora
  • Clave de caché: $scheme$request_method$host$request_uri
  • Peticiones de la caché con cookies:
    • _ga
    • _gid
  • Desactivar copia en caché para ubicaciones
    • /wp-admin/
  • Omitir caché cuando:
    • activado Se reciban encabezados HTTP no-cache en la petición
    • activado Se reciban encabezados de autorización HTTP en la petición
    • activadoSe reciba el parámetro GET nocache en la petición
  • Devolver registros de estado copiados en caché:
    • activado La subida devuelve un error de servidor 5xx
    • desactivado La subida devuelve un error de cliente 4xx
    • activado La caché está actualizándose

La activación de la copia en caché puede generar algunos problemas con el almacenamiento. Posteriormente deberemos instalar un plugin que sea capaz de ayudar con esta gestión.

Configurar WordPress

En esta configuración no se va a detallar las configuraciones generales de WordPress, sino que se va a especificar las mejoras útiles para sacarle todo el partido a la configuración previa.

Caché con Redis

El primero de los plugins que instalaremos es el de Redis.

Una vez lo tengamos Instalado y Activado, iremos a su configuración y lo activaremos, dando como resultado un aviso de que está activo y funcionando.

Caché de OPcache

Para la gestión del PHP OPcache usaremos otro plugin.

En este caso primero deberemos activar la funcionalidad del plugin.

A partir de ese momento podremos ver también las estadísticas de uso de PHP OPcache.

Adaptando WordPress Toolkit

Sin duda WordPress Toolkit para Plesk es una gran herramienta que facilita la instalación y gestión de los WordPress.

Una primera configuración que deberías aplicar es la de por defecto dentro de la sección Configuración, donde, sobre todo, revisaremos los permisos adicionales:

  • [desactivado] Permitir la copia de wp-config.php cuando se use la prestación de copia de datos
  • [activado] Siempre crear instantáneas completas de los sitios web
  • [activado] Usar rsync para operaciones de copia de archivos
  • [activado] Permitir a los clientes usar conjuntos cuando instalen WordPress
  • [activado] Desactivar indexación de buscadores para los sitios web clonados
  • [activado] Desactivar wp-cron.php en todas las nuevas instalaciones de WordPress

Por otro lado, si habitualmente instalas una serie de plugins y temas por defecto en tus nuevos sitios, la sección de Conjuntos va a ser clave.

Además, puedes personalizar los plugins y temas, decidiendo también si quieres que se actives o no por defecto en el sitio.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.

Servicios de Administración de Sistemas WordPress

¿Tienes un sitio web con WordPress de alto tráfico? ¿Eres una Agencia con servidores con cPanel, Plesk u otro panel en los que mantienes WordPress para tus clientes?

Si es así y te interesa un servicio profesional de mantenimiento de infraestructura WordPress y de mejora del rendimiento de tus sitios web o los de tus clientes, contacta conmigo.