Última revisión: 2 de octubre de 2021
Si tenemos WP-CLI que nos permite gestionar por completo todo lo que hay alrededor de WordPress, una vez instalado, tenemos WordOps como herramienta para la gestión de la creación y mantenimiento de sitios WordPress en un sistema no gestionado.
En este caso, si tienes un servidor con Ubuntu o Debian, pero cada vez que has de crear un WordPress se te hace cuesta arriba, con este sistema puedes montar todo el sistema de forma sencilla, además de crear, actualizar y mantener todo con una serie de comandos como si de WP-CLI se tratase.
WordOps provide the ability to deploy a blazing fast and secured WordPress with Nginx by using simple and easy to remember commands. Forked from EasyEngine v3, it’s already much more than an up-to-date version of EEv3 with several new features including Let’s Encrypt wildcard SSL certificates with DNS API validation support, Linux kernel optimizations or a new custom Nginx package with TLS v1.3 and Cloudflare HTTP/2 HPACK support.
WordOps
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
- Requisitos
- Instalación
- Panel de WordOps
- Creación de un sitio WordPress
- Gestionando el sitio
- Más opciones
- Acceso FTP
- Sobre este documento
Requisitos
Sistema Operativo recomendado
- Ubuntu 20
- Ubuntu 18
Sistema Operativo compatible
- Ubuntu 16
- Debian 10
- Debian 9
El ejemplo de este tutorial es con Ubuntu 20.
Instalación
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
snap install canonical-livepatch
Ahora que tenemos todo actualizado, instalaremos WordOps.
cd
wget -qO wo wops.cc && sudo bash wo
Esta ejecución nos devolverá el resultado de la instalación. En general no es muy rápida, así que ten paciencia.
Welcome to WordOps install/update script v3.13.2
Installing wo dependencies [OK]
Installing WordOps [OK]
Running post-install steps [OK]
WordOps (wo) require an username & and an email address to configure Git (used to save server configurations)
Your informations will ONLY be stored locally
Enter your name:
Enter your email:
Synchronizing wo database, please wait…
WordOps (wo) installed successfully
To enable bash-completion, just use the command:
bash -l
To install WordOps recommended stacks, you can use the command:
wo stack install
To create a first WordPress site, you can use the command:
wo site create site.tld --wp
Una vez finalizada la instalación, validaremos que funciona haciendo una actualización del software.
wo update
Podemos activar el auto completado automático, de forma que usando la tecla de tabulación se puedan completar las funciones, o mostrarnos la lista de opciones disponible.
source /etc/bash_completion.d/wo_auto.rc
Antes de crear ningún sitio, haremos una primera carga de todos los componentes básicos que vamos a utilizar, el stack inicial. Para ello ejecutaremos la instalación base.
wo stack install
Que instala una lista de servicios para tenerlos preparados.
WP-CLI is already installed
Start : wo-kernel [OK]
Adding repository for MySQL, please wait…
Adding repository for NGINX, please wait…
Adding repository for PHP, please wait…
Updating apt-cache [OK]
Installing APT packages [OK]
Applying Nginx configuration templates
Testing Nginx configuration [OK]
Restarting Nginx [OK]
Testing Nginx configuration [OK]
Restarting Nginx [OK]
Configuring php7.3-fpm
Restarting php7.3-fpm [OK]
Tuning MySQL configuration [OK]
Restarting mysql [OK]
Restarting fail2ban [OK]
Configuring Fail2Ban
Configuring Sendmail [OK]
Downloading PHPMyAdmin [Done]
Downloading phpRedisAdmin [Done]
Downloading Composer [Done]
Downloading Adminer [Done]
Downloading Adminer theme [Done]
Downloading MySQLTuner [Done]
Downloading Netdata [Done]
Downloading WordOps Dashboard [Done]
Downloading eXtplorer [Done]
Downloading cheat.sh [Done]
Downloading bash_completion [Done]
Downloading clean.php [Done]
Downloading opcache.php [Done]
Downloading Opgui [Done]
Downloading OCP.php [Done]
Downloading Webgrind [Done]
Downloading pt-query-advisor [Done]
Downloading Anemometer [Done]
Installing composer [OK]
Installing Netdata [OK]
Restarting netdata [OK]
Configuring packages [OK]
HTTP Auth User Name:
HTTP Auth Password :
WordOps backend is available on https://IP_ADDRESS:22222/
Successfully installed packages
Existen algunas opciones que podemos usar si las vemos necesarias, como por ejemplo cambiar de MySQL a MariaDB.
wo stack migrate --mariadb
O instalar PHP 7.4
wo stack install --php74
Todos los comandos del stack están disponibles en su documentación.
Podemos ver las versiones y todo lo instalado haciendo una llamada a su sistema de información.
wo info
Que nos devolverá la información de versiones de los distintos servicios.
NGINX (1.18.0):
user www-data
worker_processes auto
worker_connections 50000
keepalive_timeout 8
fastcgi_read_timeout 300
client_max_body_size 100m
allow 127.0.0.1 ::1
PHP 7.2 is not installed
PHP (7.3.24-3):
user
expose_php Off
memory_limit 128M
post_max_size 100M
upload_max_filesize 100M
max_execution_time 300
Information about www.conf
ping.path /ping
pm.status_path /status
process_manager ondemand
pm.max_requests 1500
pm.max_children 50
pm.start_servers 10
pm.min_spare_servers 5
pm.max_spare_servers 15
request_terminate_timeout 300
xdebug.profiler_enable_trigger off
listen php73-fpm.sock
Information about debug.conf
ping.path /ping
pm.status_path /status
process_manager ondemand
pm.max_requests 1500
pm.max_children 50
pm.start_servers 10
pm.min_spare_servers 5
pm.max_spare_servers 15
request_terminate_timeout 300
xdebug.profiler_enable_trigger on
listen 127.0.0.1:9173
MySQL (10.5.8-MariaDB) on localhost:
port 3306
wait_timeout 60
interactive_timeout 28800
max_used_connections 2
datadir /var/lib/mysql/
socket /var/run/mysqld/mysqld.sock
my.cnf [PATH] /etc/mysql/conf.d/my.cnf
Panel de WordOps
Al final de la instalación del stack nos aparecerá el usuario y contraseña para acceder al panel de información de WordOps. Se accede por el puerto 22222, por lo que deberemos tenerlo accesible si tenemos algún tipo de firewall.
https://IP_ADDRESS:22222/
Si queremos tener un panel o sitio por el que entrar con nuestro dominio, podemos crear el certificado con Let’s Encrypt. Para ello deberemos crear un sitio (sin contenido).
wo site create example.com -le
A partir de este momento podremos acceder mediante el propio dominio.
https://example.com:22222/
En caso de no recordar la contraseña, no haberla apuntado durante la instalación o querer cambiar los datos, podemos solicitar un cambio en la seguridad.
wo secure --auth
En cualquier caso, podemos cambiar la configuración de acceso al Backend según su documentación.
Creación de un sitio WordPress
Creación simple
Ahora que tenemos todo el sistema puesto al día, vamos a crear nuestro primer sitio web. En este caso vamos a crear un sitio con el dominio (que automáticamente funcionaría con el www) y con un certificado TLS de Let’s Encrypt para que funcione de forma segura.
wo site create example.com --wp --letsencrypt --hsts
Nos devolverá la información de todos los pasos que ha seguido para la creación del sitio.
Running pre-update checks [OK]
Setting up NGINX configuration [Done]
Setting up webroot [Done]
Downloading WordPress [Done]
Setting up database [Done]
Configuring WordPress [OK]
Installing WordPress [OK]
Installing plugin nginx-helper [OK]
Testing Nginx configuration [OK]
Reloading Nginx [OK]
WordPress admin user :
WordPress admin password :
Successfully created site http://example.com
Certificate type : domain
Validation mode : Webroot challenge
Issuing SSL cert with acme.sh [OK]
Deploying SSL cert [OK]
Securing WordOps backend with current cert
Adding HTTPS redirection [OK]
Updating site url with https [OK]
Testing Nginx configuration [OK]
Reloading Nginx [OK]
Congratulations! Successfully Configured SSL on https://example.com
Aquí nos devolverá los datos de acceso (usuario y contraseña) para acceder a nuestro WordPress.
Los datos del sitio estarán en las carpetas que el sistema crea por defecto para cada sitio.
Site files /var/www/example.com/htdocs
wp-config.php /var/www/example.com/wp-config.php
Additional Nginx conf /var/www/example.com/conf/nginx/
Site access/error logs /var/www/example.com/logs
Aunque siempre tenemos la opción de recuperar la informaciónd e ese sitio haciendo una petición.
wo site info example.com
Que nos dará información del tipo de instalación aplicada, versión de PHP, rutas de acceso, situación del certificado TLS y usuarios y contraseñas de la base de datos.
Information about example.com (domain):
Nginx configuration wp basic (enabled)
PHP Version 7.3
SSL enabled
SSL PROVIDER Lets Encrypt
SSL EXPIRY DATE 89
access_log /var/www/example.com/logs/access.log
error_log /var/www/example.com/logs/error.log
Webroot /var/www/example.com
DB_NAME example
DB_USER example
DB_PASS example
Creación avanzada
Aunque podemos crear el sitio tal y como nos propone el sistema, podemos adaptar la configuración un poco para decirle qué parametros queremos.
En este caso le vamos a decir que instale un WordPress --wp
, que lo haga con PHP 7.4 --php74
y le añada el certificado TLS con Let’s Encrypt --letsencrypt
, que le instale la configuración de caché con Redis --wpredis
y el plugin de Super Cache --wpsc
. Además, le daremos el usuario --user=admin
, correo --email=wordpress@example.com
y contraseña --pass=password
que queramos para la instalación.
wo site create example.com --wp --php74 --letsencrypt --hsts --wpredis --wpsc --user=admin --email=wordpress@example.com --pass=password
Nos devolverá la información de todos los pasos que ha seguido para la creación del sitio.
Adding repository for Redis, please wait…
Updating apt-cache [OK]
Installing APT packages [OK]
Tuning Redis configuration [OK]
Restarting redis-server [OK]
Running pre-update checks [OK]
Setting up NGINX configuration [Done]
Setting up webroot [Done]
Downloading WordPress [Done]
Setting up database [Done]
Configuring WordPress [OK]
Installing WordPress [OK]
Installing plugin nginx-helper [OK]
Setting plugin nginx-helper [OK]
Installing plugin redis-cache [OK]
Testing Nginx configuration [OK]
Reloading Nginx [OK]
WordPress admin user :
WordPress admin password :
Configure redis-cache: http://example.com/wp-admin/options-general.php?page=redis-cache
Object Cache: Enable
Successfully created site http://example.com
Certificate type : subdomain
Validation mode : Webroot challenge
Issuing SSL cert with acme.sh [OK]
Deploying SSL cert [OK]
Adding HTTPS redirection [OK]
Updating site url with https [OK]
Testing Nginx configuration [OK]
Reloading Nginx [OK]
Congratulations! Successfully Configured SSL on https://example.com
Creación, sin WordPress
Es posible que en algún caso necesitemos montar absolutamente todo, excepto el propio WordPress en sí, porque lo vamos a migrar de algún otro sitio.
En este caso, podemos hacer una llamada para que cree todo el sistema y el VirtualHost, pero que no haga la instalación.
wo site create example.com --wp --vhostonly --letsencrypt
Gestionando el sitio
Existen multitud de opciones a la hora de actualizar la configuración de un sitio.
Por ejemplo podemos cambiar la versión de PHP (en este caso subirla de PHP 7.3 a PHP 7.4).
wo site update example.com --php74
Lista completa de sitios
wo site list
Activar o desactivar un sitio
wo site disable example.com
wo site enable example.com
Eliminar un sitio
wo site delete
Acceder a los ficheros de un sitio
wo site cd example.com
Más opciones
Una vez creados los sitios, hay mil opciones que podemos necesitar o tener en cuenta. Algunas de las más habituales son las siguientes.
Creación de un WordPress MultiSite
En este caso tenemos dos opciones… si queremos configurarlo mediante subdominios…
wo site create example.com --wp --wpsubdom
…o con carpetas.
wo site create example.com --wp --wpsubdir
Mantenimiento del servidor
wo maintenance
Más información en la documentación.
Vaciar la caché
wo clean --all
Más información en la documentación.
Acceso FTP
Aunque todavía no hay uan forma sencilla de configurar cuentas de FTP, WordOps permite la instalación sencilla de ProFTPd y un par de comandos para la configuración de accesos.
Primero activaremos el servicio de FTP.
wo stack install --proftpd
Posteriormente crearemos el usuario para que tenga acceso a su carpeta de ficheros.
adduser --home /var/www/example.com/htdocs/ --shell /bin/false --ingroup www-data example
Y finalmente daremos permisos al usuario para que pueda modificar los ficheros.
chmod -R g+rw /var/www/example.com/htdocs
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.