Configuración Webinoly

El comando “Webinoly” nos permite hacer algunos cambios y administrar la configuración global, así como consultar algunos aspectos del servidor web. A continuación explicaremos a detalle el uso de este comando.

Sintaxis:

sudo webinoly <opcion>

Opciones:

  • -backup
  • blockip
  • -cache-valid
  • -clear-cache
  • -custom-headers
  • -datadog
  • -db-import
  • dbpass
  • -default-site
  • -dynvar
  • -email
  • -external-sources-update
  • -info
  • -login-www-data
  • mysql-password
  • -mysql-public-access
  • -query-string-cache
  • -query-string-never-cache
  • -timezone
  • -tools-port
  • -tools-site
  • -server-reset
  • -skip-cache
  • -skip-cookie-cache
  • smtp
  • -uninstall
  • -update
  • -verify
  • -version

REMOVIDO: -conf-value_ (en favor de -dynvar), -config-cache (en favor de -cache-valid), -db-role-default, -external-db-save, -header-cache-control, -header-csp, -header-hsts, -header-permissions-policy, -header-referrer, -header-robots, -header-xcto, -header-xfo, -header-xssp, -raw

Ejemplos:

# Actualizar Webinoly
sudo webinoly -update

# Accesso SFTP
sudo webinoly -login-www-data=on

# Purgar Cache
sudo webinoly -clear-cache

# Configurar respaldo
sudo webinoly -backup=s3 -profile=mysite

# Configurar uso horario del servidor
sudo webinoly -timezone

Actualizaciones del sistema

¡No olvides mantener tu servidor actualizado!


¿Cómo actualizo a la versión mas reciente de Webinoly?

Es muy sencillo, solo debes ejecutar el siguiente comando y se descargará e instalará la versión mas reciente de esta aplicación.

sudo webinoly -update

Es importante notar que este comando solo actualiza la aplicación Webinoly y no los paquetes instalados en el servidor.

Es realmente muy recomendable mantener siempre actualizado Webinoly a la última versión, especialmente cuando se modifica la versión del stack, durante la actualización del stack se cambian muchas cosas y si se realiza más de una de estas actualizaciones a la vez, la mayoría de las veces es seguro, pero aumenta el riesgo de romper algo debido a la complejidad de estas actualizaciones.

Los servidores de alto tráfico deberían contar con un plan de mantenimiento para evitar realizar estas actualizaciones durante las horas más críticas y tal vez debieran considerar hacerlo desconectados del tráfico real, especialmente cuando se actualiza el stack.

* NUNCA haga upgrade a una instancia en la nube do-release-upgrade o dist-upgrade si no es un usuario experimentado. ¡Es muy fácil que algo salga muy mal!


NGINX & FastCGI Cache

Administra la configuración global de NGINX y la FastCGI Cache.


Es importante hacerle notar que la mayoría de las configuraciones mostradas a continuación sobre Nginx y FastCGI, también pueden ser modificadas directamente desde el archivo de Configuración de Webinoly.

Configurar FastCgi Cache

Webinoly configura tres valores de tiempo para retención de Cache.

  • Respuestas con código 200: Solicitudes exitosas.
  • Respuestas con código 301, 302, 303, 307, 308, 404, 410, 451: Redirecciones y páginas no encontradas.
  • Tiempo de inactividad: Remover datos en cache que no han sido accesados en el tiempo especificado.

Para modificar la configuración solo deberás ejecutar el siguiente comando:

sudo webinoly -cache-valid

Los parámetros de tiempo deberán ser ingresados en el siguiente formato:

  • s – segundos
  • m – minutos
  • h – horas
  • d – días
  • w – semanas
  • M – Meses
  • y – años

El comando también permite ingresar los datos de manera previa para automatizar su ejecución de la siguiente manera:

sudo webinoly -cache-valid=[10d,1w,5m]

Siendo el primer argumento la respuesta para códigos 200, el segundo el tiempo de inactividad y el tercero para redirecciones.

Limpiar Cache

Opciones:

  • fastcgi
  • redis
  • memcached
  • opcache
  • all
  • <dominio>
# Ejemplo:
sudo webinoly -clear-cache=fastcgi
sudo webinoly -clear-cache=all

# Sitios con Custom Cache
sudo webinoly -clear-cache=example.com
sudo webinoly -clear-cache=example.com -subfolder=/test

Excluir URL de la Cache

Excluye una URL de ser almacenada en FastCGI Cache.

sudo webinoly -skip-cache=/page

* La Cache Pre-Configurada para WordPress ya incluye de manera predeterminada algunas páginas para ser excluidas. ¡Leer aquí!

Ejemplos:

# Excluir una página
sudo webinoly -skip-cache=/test

# Soporte para Regex (sensitive|insensitive)
sudo webinoly -skip-cache='^(one|two)$' -regex=insensitive

# Listado de páginas excluidas
sudo webinoly -skip-cache -list

# Remover una página de ser excluida
sudo webinoly -skip-cache=/test -delete

* El orden en el que estas reglas son introducidas puede afectar el resultado deseado. Favor de leer la sección de Precedencia de las reglas de Cache

La opción -regex para soporte de expresiones regulares se describe aquí.

La Cache es desactivada cuando una determinada cookie se encuentra.

sudo webinoly -skip-cookie-cache=<cookie>

* La Cache Pre-Configurada para WordPress ya incluye de manera predeterminada algunas páginas para ser excluidas. ¡Leer aquí!

Ejemplos:

# Add a cookie to exclude
sudo webinoly -skip-cookie-cache=wordpress_logged_in

# Regex supported (sensitive|insensitive)
sudo webinoly -skip-cookie-cache='^(one|two)$' -regex=insensitive

# List of cookies excluded
sudo webinoly -skip-cookie-cache -list

# Remove cookie from being excluded
sudo webinoly -skip-cookie-cache=wordpress_logged_in -delete

* El orden en el que estas reglas son introducidas puede afectar el resultado deseado. Favor de leer la sección de Precedencia de las reglas de Cache

La opción -regex para soporte de expresiones regulares se describe aquí.

Cache Query-Strings

Las URL’s que contienen “query-strings” nunca son almacenadas en cache de manera predeterminada. Puedes agregar algunas excepciones:

sudo webinoly -query-string-cache

Además, es posible agregar reglas para especificar cuales “query-strings” (si están presentes) nunca deben ser almacenadas en cache.

sudo webinoly -query-string-never-cache
# Ejemplo:
sudo webinoly -query-string-cache=one
sudo webinoly -query-string-never-cache=two

# example.com/?one=true&three=true  (Cached)
# example.com/?one=true&two=true  (No-Cached)

-----

# Remover un query-string
sudo webinoly -query-string-cache=one -delete
sudo webinoly -query-string-never-cache=two -delete

# Soporte para listas
sudo webinoly -query-string-cache -list
sudo webinoly -query-string-never-cache -list

* El orden en el que estas reglas son introducidas puede afectar el resultado deseado. Favor de leer la sección de Precedencia de las reglas de Cache.

Precedencia de las reglas de Cache

La última regla ejecutada tendrá mayor precedencia:

  • El query-string-cache-default siempre estará al inicio.
  • El query-string-cache y skip-cache siempre se insertar al inicio (después de query-string-cache-default). El resultado final depende del orden en que fueron introducidas.
  • El query-string-never-cache y skip-cookie-cache siempre se insertan hasta abajo. El resultado final depende del orden en que fueron introducidas.

Bloquear acceso por dirección IP

Para restringir el acceso en Nginx a una determinada IP o bloque de direcciones.

sudo webinoly -blockip=123.231.12.31

De igual manera podemos utilizar la opción -purge para removerla de la lista de direcciones bloqueada.

O para obtener una lista de todas las IP’s bloqueadas:

sudo webinoly -blockip -list
# Remover una IP de la lista.
sudo webinoly -blockip -purge
sudo webinoly -blockip=123.231.12.31 -purge

# Multiples IP's
sudo webinoly -blockip=1.1.1.1,2.2.2.2

Sitio web predeterminado

Si accedes a tu servidor desde tu navegador usando la IP del servidor, seguro verás la página de bienvenida de Nginx, que es la respuesta que viene configurada por defecto.

Webinoly permite configurar de manera personalizada el sitio o respuesta por defecto.

sudo webinoly -default-site=<opción>
  • default – Respuesta Nginx por defecto.
  • blackhole – Cualquier solicitud que no corresponda con un dominio existente en el servidor regresará un código 444 como respuesta o lo que es lo mismo, el servidor no responderá a dichas solicitudes.
  • domain – Define un dominio o sitio existente como respuesta a cualquier solicitud.

Se pueden crear soluciones más complejas de acuerdo con sus necesidades, por ejemplo: cree un sitio con una configuración de dominio redireccionado en Webinoly y configúrelo como sitio predeterminado “default-site”, entonces todas estas solicitudes serán redirigidas a un servidor diferente.

No use una IP para acceder a la sección de administración de WordPress (especialmente en nuevas instalaciones), las configuraciones y publicaciones modificadas o creadas pueden tener un comportamiento no deseado.

Configuración de Cabeceras HTTP

Las siguientes Cabeceras HTTP son soportadas de manera nativa y pueden ser modificadas o habilitadas en el Archivo de Configuración de Webinoly.

  • Cache-Control
  • Content-Security-Policy (CSP)
  • HTTP Strict-Transport-Security (HSTS)
  • Permissions-Policy
  • Referrer-Policy
  • X-Content-Type-Options
  • X-Frame-Options
  • X-Robots-Tag
  • X-XSS-Protection (ya no se recomienda, use CSP en su lugar)

Lea nuestra publicación (inglés): CSP Practical Example

# Cabeceras incluidas de manera predeterminada:

Cache-Control: "no-cache"
Referrer-Policy: "no-referrer-when-downgrade"
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000

Como incluir mis propias cabeceras HTTP

Tenemos 3 diferentes contextos en Webinoly para incluir tus headers:

  • HTTP – En cada petición.
  • HTML – Solo páginas (no se incluyen peticiones de archivos estaticos como imagenes, CSS, JS, etc.)
  • HTTPS – En cada petición (solo cuando el protocolo HTTPS es usado).
# Crea un archivo:
# /opt/webinoly/templates/source/custom_header_http_webinoly.data
# /opt/webinoly/templates/source/custom_header_https_webinoly.data
# /opt/webinoly/templates/source/custom_header_html_webinoly.data

Cada línea que inicie con add_header y termine con punto y coma “;” será incluida en el contexto descrito en el nombre del archivo. Ten cuidado de no terminar una línea con espacios u otro caracter.

# Ejemplo
add_header Save-Data "on";
add_header X-DNS-Prefetch-Control "off";

Ahora estás listo para que tus propias cabeceras sean cargadas en la configuración:

sudo webinoly -custom-headers=reload

Puedes modificar los archivos de datos cuando lo desees, solo recuerda hacer “reload” cada vez para que los cambios surtan efecto. Si deseas desactivar las cabeceras previamente cargadas puedes usar la opción “remove”.

# Cabeceras incluidas por contexto:

HTML:
Cache-Control
Referrer-Policy
Permissions-Policy
Content-Security-Policy

HTTP:
X-Frame-Options
X-Content-Type-Options
X-XSS-Protection
X-Robots-Tag

HTTPS:
Strict-Transport-Security

MySQL Utilerias

Herramientas para administración de MySQL.


Recuperar el usuario y contraseña de MySQL

Webinoly guarda una copia de los usuarios y contraseñas generadas de manera automática durante la instalación de MySQL ya que estos datos son necesarios para ejecutar algunos comandos, como la creación de la base de datos para sitios WordPress, entre otros.

sudo webinoly -dbpass

Después de la instalación se guarda un copia “ofuscada” (no entendible a primera vista) de estas contraseñas (root/admin) en el Archivo de Configuración de Webinoly. Es importante que sepas que estas contraseñas pueden ser removidas teniendo en cuenta algunas consideraciones:

  • La contraseña del usuario “root” no podrá ser recuperada.
  • La contraseña del usuario “admin” también se encuentra en un archivo CNF de MySQL siguiendo las recomendaciones oficiales, por lo que podría ser recuperada de manera manual por el usuario.
  • Normalmente cuando se ejecuta sudo webinoly -server-reset la contraseña del usuario “admin” se regenera en el CNF usando el valor guardado en el Archivo de Configuración de Webinoly, por lo que en caso de ser removidas se perderá esta funcionalidad.
  • Aun cuando las contraseñas han sido removidas, siempre se deberá usar el método descrito en la siguiente sección para modificar o cambiar alguna de estas contraseñas, de esta manera se actualizará el CNF con la contraseña nueva de manera automática.

Cambiar el password de MySQL

Es muy importante NUNCA modificar manualmente la clave de acceso de los usuarios “root” y “admin”, son los que Webinoly guarda y usa para funcionar. Si lo haces por tu cuenta Webinoly ya no tendría acceso a estos usuarios, por eso es hemos creado este comando; en caso de que requieras modificar alguna de estas claves, siempre deberás hacerlo usando este comando, de esta manera Webinoly siempre tendrá estos datos actualizados.

sudo webinoly -mysql-password

También podemos usarlo de la forma: sudo webinoly -mysql-password=[user,pass].

Con este comando puedes modificar la clave de cualquier usuario existente, pero solo guarda los datos y es obligatorio para “root” y “admin”.

Acceso a phpMyAdmin y demás herramientas

Para acceder al área de administración puedes hacerlo desde tu navegador con tu IP o dominio y puerto seleccionado de la siguiente manera: http://ser.ver.ip:22222.

Adicionalmente en este sitio encontrarás algunas otras herramientas como PHP (info, ping y status), NGINX Status, etc.

Esta sección está protegida con Autenticación HTTP, lee la documentación del comando HTTPAUTH para crear tus credenciales.

Si no tiene el usuario y contraseña de MySQL para acceder a phpMyAdmin, por favor consulte la sección anterior donde se describe como recuperar estas credenciales.

En cualquier momento puedes modificar el puerto de acceso (0-65535), por default utilizamos el puerto 22222.

sudo webinoly -tools-port

De igual manera puedes automatizar la ejecución del comando de la siguiente manera:

sudo webinoly -tools-port=19816

También es posible definir un dominio existente para único acceso a estas herramientas.

sudo webinoly -tools-site=example.com

Cualquier solicitud de otro dominio será bloqueado el acceso.

Ahora puedes acceder a tus herramientas usando example.com:19816 desde tu navegador. Si deseas restablecer y eliminar un dominio previamente configurado, usa la opción default: sudo webinoly -tools-site=default.

Importar base de datos

Importar una base de datos de MySQL directamente desde la linea de comandos.

sudo webinoly -db-import
# Ejemplos
sudo webinoly -db-import -file=/folder/name.sql

# Soporte para bases de datos externas
sudo webinoly -db-import -file=/folder/name.sql -external-db=[user,pass,host:port]

En caso de que necesites exportar una base de datos solo debes utilizar nuestra herramienta para realizar un respaldo local de la DB del sitio que desees.

Privilegios en la base de datos

Puedes modificar los privilegios asignados de manera predeterminada para los usuarios de bases de datos al crear un sitio con base de datos MySQL, como un sitio WordPress, por ejemplo.

De manera predeterminada usamos “full”, y para sitios WP “limited” es el mínimo necesario. Algunos servicios externos de bases de datos como AWS RDS no aceptan “all” privileges.

Modifica esta opción desde el Archivo de Configuración de Webinoly.

  • basic – SELECT,INSERT,UPDATE,DELETE
  • limited – SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER
  • extra – SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,LOCK TABLES
  • complete – SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,EXECUTE,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT,TRIGGER
  • full – SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,EXECUTE,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT,TRIGGER,REFERENCES,LOCK TABLES
  • grant – SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,EXECUTE,CREATE VIEW,SHOW VIEW,CREATE ROUTINE,ALTER ROUTINE,EVENT,TRIGGER,REFERENCES,LOCK TABLES,GRANT OPTION
  • all – ALL PRIVILEGES

También puedes modificarlo para un sitio en específico durante la creación del sitio: sudo site example.com -wp -db-role=extra

Acceso Remoto a MySQL

De manera predeterminada MySQL (MariaDB) esta configurado para no permitir conexiones en el servidor de MariaDB desde hosts remotos o externos o incluso provenientes del mismo host sobre TCP/IP desde una interface distinta a (127.0.0.1 o localhost).

Para habilitar el acceso de conexiones remotas a MariaDB (on/off):

sudo webinoly -mysql-public-access=on

Si tu sistema tiene algún software de “firewall” (o está detrás de un equipo físico de firewall o NAT) deberás permitir las conexiones al puerto TCP de MariaDB (de manera predeterminada y casi siempre es 3306).

En caso de que lo requieras, puedes crear un usuario con “all privileges” y acceso remoto (%):

sudo webinoly -mysql-public-access=on -create-master-user=[username,password]

Esta función nosotros la usamos internamente, asi que la compartiremos contigo. Si requieres solo privilegios “replication slave” en vez de “all privileges”:

sudo webinoly -mysql-public-access=on -create-master-user=[username,password] -replication-slave

* Usa “random” (sin comillas) como password o clave para generar de manera automática una clave aleatoria.

Ejemplo de un sitio WordPress con servidor de base de datos MySQL remoto:

# Server A (IP: 1.1.1.1)
# Este será el servidor remoto MySQL

# Instalar solo MySQL (MariaDB)
wget -qO weby qrok.es/wy && sudo bash weby -mysql

# Habilitar el acceso remoto
sudo webinoly -mysql-public-access=on -create-master-user=[masteruser,abcdefgh]


# Server B
# Este será el servidor web

# Instalar Nginx y PHP
wget -qO weby qrok.es/wy && sudo bash weby -php

# Crea un sitio WordPress
sudo site example.com -wp=custom

# Introduce los datos de tu servidor remoto
Database Host: 1.1.1.1:3306
External DB Master Username: masteruser
External DB password: abcdefgh

# Y eso es todo!

Administración del Servidor

Configuración y herramientas para la administración del servidor.


Permitir acceso SFTP a usuario www-data

Muy útil para cargar archivos a través de SFTP, este usuario tiene permisos de acceso muy limitados y únicamente puede ser usado para loguearse a través de SFTP y con acceso solo a las carpetas de archivos /var/www de tus sitios web.

sudo webinoly -login-www-data=on

En cualquier momento puedes bloquear el acceso nuevamente.

sudo webinoly -login-www-data=off

Seguramente estas usando claves SSH (key pairs), por lo que el usuario www-data copiará las claves SSH del usuario logueado que se esté usando en ese momento. Usted puede agregar/remover otras claves /var/www/.ssh/authorized_keys para tener un control preciso de los múltiples usuarios que pudieran tener acceso a estos archivos en caso de que así lo requieras.

Establecer zona horaria

Este comando establecerá la zona horaria en el sistema operativo Ubuntu y en PHP.

sudo webinoly -timezone

También puedes pasar directamente los datos de la siguiente manera: sudo webinoly -timezone=America/Mexico_City. Consulta las zonas horarias admitidas.

Configurar SMTP para envío de correos

Postfix es instalado de manera nativa con Webinoly para el envío de correos, por ejemplo todas las notificaciones de tus sitios WordPress, y ahora también pueden configurarlo para enviar los correos usando un proveedor externo SMTP como Amazon SES, Mandrill, Mailgun, SendGrid o cualquier otro proveedor.

sudo webinoly -smtp

Todos los correos electrónicos del servidor y de cualquiera de tus sitios, serán enviados a través de este servicio.

# Para probar el servicio SMTP desde la linea de comandos:
echo "Subject: test" | sendmail user@example.com

# Remover la configuracíon SMTP y regresar a la configuración default de Postfix
sudo webinoly -smtp -purge

# Tip para uso en scripts
sudo webinoly -smtp=[smtp_host,user,password,mainhost.com]

El “mainhost” se refiere al dominio por default que será usado para el envió de correos cuando este dato no sea proporcionado y debe ser un dominio existente en el servidor.

¿Qué es y para qué sirve DMARC, DKIM, and SPF?
SPF, DKIM y DMARC nos ayudan a autenticar la fuente desde donde se envían tus correos electrónicos verificando que los correos han sido enviados realmente desde el dominio que aparece en el remitente. Estos tres métodos de autenticación son importantes para prevenir el spam, ataques de tipo phishing o suplantación de identidad, así como otros riesgos de seguridad en los correos.

Respaldos

Webinoly cuenta con una completa suite de herramientas para respaldos:

  • Exportar/Importar servidor o sitio
  • Respaldar base de datos
  • Respaldos incrementales en S3 (AWS o cualquier otro servicio compatible con S3)
sudo webinoly -backup

* De manera manual puedes configurar cualquier respaldo soportado por Duply y Duplicity: Amazon S3, Backblaze B2, DropBox, FTP, GIO, Google Docs, Google Drive, HSI, Hubic, IMAP, local filesystem, Mega.co, Microsoft Azure, Microsoft Onedrive, par2, Rackspace Cloudfiles, rsync, Skylabel, ssh/scp, SwiftStack, Tahoe-LAFS, WebDAV.

** Servicios Compatibles con S3 más comunes: Backblaze B2, Digital Ocean Spaces, Wasabi, Vultr Object Storage, Linode Object Storage, DreamObjects, etc.

Exportar/Importar servidor o sitio

¡Migrar un sitio o todo el servidor nunca había sido tan fácil!

Exportar la configuración y sitios del servidor:

sudo webinoly -backup=local -export

Un archivo será creado conteniendo todos los datos de tu servidor.

Opciones para importar en un servidor nuevo:

  • full – Configuración y sitios.
  • stack – Solo la configuración.
  • sites – Solo los sitios.
sudo webinoly -backup=local -import=full

Cuando se importa la configuración, se instalarán todos los paquetes y configuraciones de acuerdo con la configuración exportada. Por ejemplo, podría instalar Webinoly usando la opción “-clean” en un servidor nuevo y luego (importar) hacer la instalación y configuración con un archivo exportado.

# Exportar un servidor
sudo webinoly -backup=local -export

# Importar en un servidor nuevo
sudo webinoly -backup=local -import=full -file=/folder/name

La opción “stack” también tiene soporte para importar tu configuración basado en el Archivo de Configuración de Webinoly. Esta es una manera más fácil y práctica para replicar tu ambiente de trabajo con todo tu equipo de desarrollo. Solo traiga o envíe este archivo único /opt/webinoly/webinoly.conf (incluso puede renombrar el archivo si así lo desea) y todo su equipo puede tener el mismo entorno de desarrollo estandarizado, esta es la manera más fácil de replicar su configuración personalizada en todo su equipo de trabajo.

Para exportar/importar un sitio en especifico:

# Exportar un sitio
sudo webinoly -backup=local -export=example.com

# Importar un sitio
sudo webinoly -backup=local -import -file=/folder/name

# Importar y sobrescribir un sitio
 existente
sudo webinoly -backup=local -import -file=/folder/name -overwrite=on

Multiples sitios y WP en subfolder también son soportados:

# Exportar multiples sitios
sudo webinoly -backup=local -export=[example.com,example.org,example.net]

# WordPress instalado en subfolder
sudo webinoly -backup=local -export=example.com -subfolder=/test

Debido a limitaciones de Let’s Encrypt (certbot), no es posible exportar/importar un certificado SSL de un sitio en particular. Sin embargo, cuando se exporta/importa un servidor completo si es posible mover todos los certificados.

En los respaldos de sitios WordPress siempre se incluye la base de datos de manera automática. Cuando se exporta/importa puedes usar el parámetro -skip-db para no incluir la base de datos. Además, es posible definir un nombre de archivo y ubicación para el archivo generado en la exportación: -filename=test.bkp -destination=/folder.

Las bases de datos externas no se incluirán cuando sus sitios sean exportados. Puede exportar/importar sus sitios y la configuración debería preservarse, por lo que la conexión con la base de datos externa debería establecerse de manera automática. En caso de que necesite una copia de seguridad de su base de datos externa, puede crear fácilmente una copia de seguridad de la base de datos como se detalla en la siguiente sección a continuación.

Respaldar base de datos

En cualquier momento puedes realizar un respaldo de cualquier base de datos o sitio WordPress en tu servidor y guardarlo en el disco duro o almacenamiento local.

sudo webinoly -backup=local
# Ejemplo
sudo webinoly -backup=local -wp=example.com

# Multiples sitios WP
sudo webinoly -backup=local -wp=[example.com,example.org,example.net]

# WordPress en subfolder
sudo webinoly -backup=local -wp=example.com -subfolder=/test

# Elije una carpeta para guardar tu respaldo
sudo webinoly -backup=local -wp=example.com -destination=/folder

# Limita el número de respaldos locales a mantener (max) y lo envía a S3
sudo webinoly -backup=local -wp=example.com -destination=/folder -max=5 -bucket=bucketname/folder

* La opción “max” borra cualquier archivo en el directorio destino.

En caso de que tu sitio WP esté conectado a una base de datos externa se solicitará el usuario y password. Para omitir estas preguntas puedes usar la opción -external-db=[user,pass].

# Ejemplo para respaldo con el nombre de la DB.
sudo webinoly -backup=local -dbname=db_name

# Multiples bases de datos
sudo webinoly -backup=local -dbname=[db_name1,db_name2,db_name3]

# Todas las bases de datos
sudo webinoly -backup=local -dbname=all

# Base de datos externa
sudo webinoly -backup=local -dbname=db_name -external-db=[user,pass,url:port]

Para guardar el respaldo con un nombre de archivo especifico puedes usar el parámetro -filename=db.sql.

Respaldos incrementales en AWS S3

Respaldos incrementales de directorios en S3.

Crea tantos perfiles como sean necesarios.

sudo webinoly -backup=s3
  • Usamos el nuevo backend Boto3 para conectarnos con S3.
  • No se admite la creación de buckets.
  • Compatibilidad solo con los buckets que usan el nuevo estilo de dominio.
  • No se admiten las restauraciones de la clase de almacenamiento de glacier.

Antes de poder realizar un respaldo, necesitas contar con las credenciales IAM necesarias con permisos Full-Access al servicio S3.

sudo webinoly -aws-s3-credentials
# Omitir preguntas
sudo webinoly -aws-s3-credentials=[aws_access_key_id,aws_secret_access_key]

# Crear nuevo perfil para respaldos en S3
sudo webinoly -backup=s3 -profile=name -bucket=bucketname/folder -source=/folder -max-age=2M

# Para instancias EC2 de AWS ligadas a un IAM Role
# De esta manera no es necesario guardar credenciales en el servidor.
sudo webinoly -aws-s3-credentials=awsiamrole

En caso de usar un servicio compatible con S3 (no AWS):

# Soporte para servicios compatibles con S3, como Backblaze o cualquier otro.
sudo webinoly -aws-s3-credentials=[key_id,app_key]

# Crear nuevo perfil para respaldos
sudo webinoly -backup=s3 -profile=name -bucket=bucketname/folder -source=/folder -s3-compatible-endpoint=https://s3.compatible-endpointURL.example.com

El parámetro -max-age es opcional y se refiere al tiempo que serán retenidos los respaldos antes de ser eliminados, el valor default es 1M y el formato (s, m, h, D, W, M, Y).

Para realizar o ejecutar un respaldo:

sudo webinoly -backup=s3 -run

Eliminar un perfil:

sudo webinoly -backup=s3 -delete

Listado de perfiles:

sudo webinoly -backup=s3 -list

Mostrar información de un perfil:

sudo webinoly -backup=s3 -info

Restaurar o recuperar el respaldo más reciente:

sudo webinoly -backup=s3 -restore

Para restaurar tus datos en un servidor diferente, solo deber debes crear el mismo perfil con los mismos datos y el mismo bucket S3.

Webinoly nunca va a sobrescribir tus archivos cuando restauras desde un respaldo, esta es una decisión para proteger tus datos de una potencial perdida. Por lo tanto la carpeta de destino no debe existir.

# Recuperar un archivo en especifico
sudo webinoly -backup=s3 -restore=/folder/file.exe -destination=/folder/file.exe

# Recuperar una carpeta en especifico
sudo webinoly -backup=s3 -restore=/folder -destination=/folder

# Para recuperar un respaldo de una fecha en particular
sudo webinoly -backup=s3 -restore -destination=/folder -date=2020/4/27

# Formatos de fecha soportados:
2002-01-25T07:00:00+02:00 (full date time)
2002/3/5 (YYYY/MM/DD)
12D (12 days ago)
1h78m (1 hour 78 minutes ago)

Siempre puedes usar -profile=name para evitar preguntas.

Usando la opción -add-db-pre permite configurar un respaldo automático de una base de datos existente de un sitio WP inmediatamente antes de ejecutar el perfil S3 seleccionado.

sudo webinoly -backup=s3 -add-db-pre=example.com
# Ejemplo
# Respaldo de la DB cada vez que el perfil S3 sea ejecutado.
# Limita a 5 el número de archivos a mantener en el directorio local.
# Además, envía el respaldo de la DB a un bucket S3 diferente.
# La DB está ahora respaldada en 3 diferentes lugares: directorio local (default), bucket del perfil S3 y en el S3 bucket para la DB.

sudo webinoly -backup=s3 -add-db-pre=example.com -max=5 -bucket=bucketname/folder

* Recuerda que siempre puedes usar los parámetros -filename=test.bkp -destination=/folder a tu conveniencia.

** La herramienta Duply con la que se automatizan los respaldos en Webinoly soporta la ejecución de scripts pre/post, consulta su documentación.

Si tu sitio está conectado a una base de datos externa, la opción -add-db-pre solo podrá ser usada si las credenciales de tu DB están guardadas con la opción -external-db-save.

# Lista de PRE respaldos
sudo webinoly -backup=s3 -add-db-pre -list

# Remover todos los PRE respaldos
sudo webinoly -backup=s3 -add-db-pre -purge

Enviar un archivo a S3

Enviar y almacenar un archivo en AWS S3.

sudo webinoly -backup=s3 -send-to-s3=/file -bucket=bucketname/folder

Soporte para servicios compatibles con S3:

sudo webinoly -backup=s3 -send-to-s3=/file -bucket=bucketname/folder -s3-compatible-endpoint=https://s3.compatible-endpointURL.example.com

Integración con Datadog

Datadog es un servicio externo para monitoreo de servidores y aplicaciones y análisis de datos.

sudo webinoly -datadog

Solo necesitas una API key y Webinoly hará de manera automática la instalación y configuración del agente de Datadog en tu servidor, incluyendo las integraciones con Nginx, PHP-FPM, MySQL y Redis, además de los logs de cada servicio y cada sitio hospedado en tu servidor.

# Ejemplos:
# Instalación completa
sudo webinoly -datadog

# Instalar únicamente el agente, sin integraciones, ni logs.
sudo webinoly -datadog=123456789 -integrations=off -logs=off

# Configurar una integración (nginx, fpm, mysql, redis)
sudo webinoly -datadog -integrations=nginx

# Remover una integración
sudo webinoly -datadog -integrations=nginx -purge

# Configurar los logs de una integración (on/off)
sudo webinoly -datadog -integrations=nginx -logs=on

Recuerda que para ver los datos de las integraciones de tu servidor, debes instalar de manera manual cada una de ellas en tu cuenta de Datadog en el menú “Integrations”. Además, para los “Logs” es necesario tener un plan activo con “Log Management” incluido en tu cuenta de Datadog.

Para remover completamente Datadog de tu servidor:

sudo webinoly -datadog -purge

Actualizar, modificar o restablecer la configuración del servidor

Esta es una función avanzada y solo deberás realizar este tipo de modificaciones si conoces el impacto y resultado que pudieran ocasionar en el comportamiento de tu servidor, de otra manera te recomendamos mantener la configuración establecido por default.

PORTABILIDAD : Todos tus requerimientos y configuraciones del servidor en un solo archivo que puedes entregar a todo tu equipo de desarrollo. De esta manera todo tu equipo podrá replicar y trabajar con el mismo ambiente de desarrollo estandarizado. Aquí puedes leer más sobre como exportar/importar tus configuraciones.

El archivo de configuración de Webinoly se localiza aquí: /opt/webinoly/webinoly.conf

Archivo de Configuración

  • Operating System
    • Timezone (date.timezone)
    • Kernel Optimization
    • Percentage of RAM assigned to /run folder
    • Size of Swap file
    • IAM Role (AWS Credentials)
  • Nginx
    • Nginx Branch (stable/mainline)
    • Maximum Upload file size (client_max_body_size, upload_max_filesize, post_max_size)
    • Email Address
    • SFTP Access for www-data user
    • Nginx Access Logs
    • Nginx Log Format
    • Nginx Error Log Level
    • Nginx Default Response
    • Admin Tools Access
    • Admin Tools Access Port
    • HTTP Authentication Whitelist IP
    • Block IP Access
    • Block/Deny files and extensions
    • FastCGI Cache times
    • WordPress FastCGI Cache Defaults
    • WordPress Login Basic Authenticantion
    • WordPress XMLRPC
    • HTTP Headers
      • Cache Control
      • Content Security Policy
      • HTTP Strict Transport Security (HSTS)
      • Permissions Policy
      • Referrer Policy
      • X-Content-Type-Options
      • X-Frame-Options
      • X-Robots-Tag
      • X-XSS-Protection
  • PHP
    • PHP Version
    • Process Manager (pm)
    • Number of child processes to be created (pm.max_children)
    • Maximum amount of memory that a script is allowed to allocate (memory_limit, opcache.memory_consumption)
    • Maximum time in seconds a script is allowed to run before it is terminated (max_execution_time, request_terminate_timeout, fastcgi_read_timeout)
    • Maximum number of files allowed to be uploaded simultaneously (max_file_uploads)
    • PHP How many input variables may be accepted (max_input_vars)
    • PHP OpCache Validate Timestamps (opcache.validate_timestamps)
    • PHP OpCache Revalidate Frequency (opcache.revalidate_freq)
    • Path_Info
    • Redis maximum amount of memory before eviction policies (maxmemory)
  • MySQL
    • Database Engine
    • MySQL/MariaDB Version
    • External DB Credentials to use instead of localhost
    • Default Database User Privileges
    • General Log (general_log)
    • Binary Log (log_bin, log_bin_index)
    • Slow Query Log (slow_query_log)
    • Long Query Time (long_query_time)
    • Public/External Access

Después de cualquier modificación en el archivo de configuración de Webinoly, deberás hacer un -server-reset para cargar los nuevos valores, este comando puede actualizar la configuración de un paquete en especifico (os, nginx, php, mysql, all) de la siguiente manera: sudo webinoly -server-reset=php. Si los paquetes (stack) no han sido instalados aún, los valores se cargarán cuando realices la instalación, si ya están instalados se actualizará la configuración actual y cualquier cambio realizado de manera manual por el usuario se perderá.

La opción -server-reset también puede ser usada en situaciones donde se desea restaurar la configuración predeterminada o para remover cambios no deseados hechos por algún usuario de manera manual.

  • Cuando actualizamos las especificaciones de hardware del servidor, añadimos más RAM, debes hacer un server-reset para actualizar la configuración con los nuevos valores.
  • Permisos/propietario de algunas carpetas y archivos de tus sitios serán restablecidos. Esta operación se ejecuta con “nginx”, pero también hemos incluido una opción para usarla de manera independiente: sudo webinoly -server-reset=permissions.
  • El tamaño del archivo SWAP se calcula de acuerdo a la cantidad de memoria RAM disponible, si necesitas forzar que Webinoly recalcule este valor, debes usar el parámetro -recalculate=on. Esta opción debe usarse con precaución, reinicie su servidor para limpiar la memoria swap actualmente en uso y asegúrese de no hacerlo con tráfico en vivo para evitar errores al desmontar el archivo swap.

Puedes usar el comando: sudo webinoly -dynvar=<variable> -value=<data> para modificar algunas variables en el Archivo de Configuración. Aplican algunas restricciones, como el uso de espacios y comillas no está permitido.

Verificar integridad del sistema

En cualquier momento puedes verificar la integridad de los archivos relacionados con Webinoly y de tu servidor web.

sudo webinoly -verify

De esta manera se ejecutará un escaneo en busca de todos los archivos principales y verificará algunos aspectos básicos de tu configuración.

Información del sistema

Para ver toda la información referente a la instalación, configuración y optimización realizada por Webinoly en tu servidor.

sudo webinoly -info

Normalmente lo utilizamos para depurar y detectar algún error en caso de ser necesario.

También puedes consultar la versión de Webinoly: sudo webinoly -version (-v, -V).

  • Webinoly Versión – Esta es la versión oficial, con cada mejora a los comandos de Webinoly se libera una nueva versión.
  • Stack Versión – Esta es la versión de la configuración de tu servidor web, regularmente mejoramos los comandos de Webinoly, pero en muy pocas ocasiones modificamos o actualizamos la configuración que usamos para Nginx, PHP o el servidor en general. Aunque no es recomendado, si realizaste alguna modificación de manera manual a la configuración del servidor, es muy probable que se pierda o sobrescriba en esta actualización.

Desinstalar Webinoly

Aunque lamentamos que tomes esta decisión, el siguiente comando eliminará completamente Webinoly y todos sus archivos del servidor.

sudo webinoly -uninstall

Consideraciones:

  • Esta acción no eliminará tus sitios web, ni sus archivos y datos.
  • La configuración de tu servidor, así como los paquetes instalados no se verán afectados ni desinstalados.
  • Lo comandos de Webinoly para crear y administrar tu servidor y sitios web serán removidos y ya no estarán disponibles para su uso.

Si deseas reinstalar Webinoly tu configuración anterior será recuperada, en caso de que no desees generar el archivo de recuperación durante el proceso de desinstalación, puedes usar el parámetro -no-recovery.

Para remover Webinoly de manera completa, consulta nuestra guía en la sección de Preguntas Frecuentes.

Si tienes alguna sugerencia, idea o comentario, por favor visita y únete a nuestra Comunidad.