Última revisión: 2 de octubre de 2021
- Versiones a instalar
- Configurando el Sistema Operativo
- Instalando Plesk
- Configuración inicial
- Extensiones de Plesk
- Configuración avanzada
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.
- Plesk Migrator
- RBL Check
- Repair Kit
- SEO Toolkit
- SSL It!
- Webserver Configurations Troubleshooter
- WordPress Toolkit
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ónactivado
Se reciban encabezados de autorización HTTP en la peticiónactivado
Se 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 5xxdesactivado
La subida devuelve un error de cliente 4xxactivado
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.