Cómo implementar múltiples sitios de Wordpress usando Virtualmin y Ansible en Ubuntu 16.04

Un uso común de un servidor virtual Vultr es alojar sitios web de Wordpress. Esta guía le muestra cómo automatizar la configuración de un servidor virtual desde cero (usando Ansible) e implementar múltiples sitios web independientes de Wordpress (usando Webmin / Virtualmin). Virtualmin / Webmin es una interfaz gráfica de usuario que le permite administrar la implementación de múltiples cuentas de servidor virtual en la misma máquina (completa con la pila LAMP / LEMP). Virtualmin es muy similar a cPanel y Plesk, y en este tutorial usaremos la edición gratuita de GPL. Después de la configuración inicial del servidor Vultr y la instalación de Virtualmin, puede configurar rápidamente varios servidores virtuales desde la interfaz de Virtualmin e instalar directamente Wordpress en ese servidor virtual completo con su propio nombre de dominio.

En este tutorial, en lugar de ingresar manualmente una larga lista de comandos, usaremos Ansible. Ansible es una herramienta de automatización basada en Python que le permite automatizar de manera confiable y repetida las tareas del servidor. Esto significa que una vez que haya seguido este tutorial, podrá implementar otro servidor de la misma manera con solo un par de comandos.

Prerrequisitos

  • Al menos un nombre de dominio completo y acceso a los registros DNS
  • Una cuenta Vultr

Paso 1: instalación de Ansible en su máquina local

Instale Ansible en su máquina local u otro servidor.

mkdir ansible
cd ansible
virtualenv env
source env/bin/activate
pip install ansible

Paso 2: generar claves SSH e implementar el servidor

Ansible funciona iniciando sesión en su servidor a través de SSH. El acceso SSH es más seguro si usamos claves en lugar de una contraseña. Primero generemos un par de claves pública y privada.

mkdir ssh_keys
ssh-keygen -t rsa -b 2048 -f ./ssh_keys

En el ssh_keysdirectorio ahora habrá dos archivos, ssh_keysy ssh_keys.pub. ssh_keyses su archivo de clave privada y debe mantenerse a salvo. Ahora puede abrir el ssh_keys.pub, que contiene la clave pública.

Inicie sesión en el panel web de Vultr y haga clic Deploy New Server.

Seleccione una región, Tipo de servidor (Ubuntu 16.04), Tamaño del servidor, y luego en la parte 6 ( SSH keys), haga clic Add New. En la página siguiente, pegue su clave pública, asígnele un nombre y haga clic Add SSH key. Finalmente, asegúrese de que la clave esté seleccionada y haga clic Deploy now.
Una vez que el servidor haya terminado de desplegarse, se le mostrará su dirección IP. Deberá iniciar sesión en el servidor DNS de su nombre de dominio y señalarlo a esta dirección.

Paso 3: crea una configuración Ansible básica

Se llaman los archivos de automatización de Ansible roles. Primero configuraremos la estructura del directorio (dentro del ansibledirectorio que acaba de crear en el paso 1) y los archivos básicos.

mkdir -p group_vars roles/common/tasks/ roles/common/handlers
touch hosts group_vars/all deploy.yml roles/common/handlers/main.yml

Edite el hostsarchivo para que contenga lo siguiente, sustituyendo ip addressel servidor que acaba de crear. Ansible usa python 2, que Ubuntu 16.04 no tiene instalado por defecto. En el hostsarchivo le decimos a Ansible que use Python 3.

[common]  
192.0.2.1 ansible_python_interpreter=/usr/bin/python3

Edite el deploy.ymlarchivo para contener lo siguiente. Vamos a utilizar al rootusuario.

- name: apply common configuration to server
  hosts: all
  user: root
  roles:
    - common

Edite el /group_vars/allarchivo para contener lo siguiente. Estas variables le indican a Ansible la ubicación de sus claves SSH, los parámetros del archivo de intercambio, su nombre de dominio completo y la contraseña de root. Recuerde no incluir el archivo en el control de origen ya que contiene su contraseña en texto sin cifrar.

ssh_dir: ./ssh_keys
swap_file_path: /swapfile
swap_file_size: 1G
swappiness: 1
hostname: example.com
new_password: YOUR_PASSWORD_HERE

Edite el common/handlers/main.ymlarchivo para contener lo siguiente.

- name: restart sshd
  service: name=ssh state=restarted

Paso 4: crear tareas Ansible para la configuración básica del servidor

La automatización de Ansible es más fácil de entender si la dividimos en tareas. Creemos archivos para cada una de nuestras tareas en el proceso.

cd roles/common/tasks
touch hosts main.yml setup.yml users.yml ufw.yml swap.yml virtualmin.yml

main.yml debe apuntar a cada archivo que contenga los comandos Ansible, así que edítelo para que contenga lo siguiente.

- include: setup.yml
- include: users.yml
- include: ufw.yml
- include: swap.yml
- include: virtualmin.yml

El primer paso para configurar un nuevo servidor es actualizar el caché de repositorio y establecer la zona horaria. Edite el common/handlers/setup.ymlarchivo para contener lo siguiente.

- apt: update_cache=yes
  sudo: yes

- name: set timezone to Europe/London
  timezone:
    name: Europe/London

Ahora, le daremos al usuario root una contraseña (que necesitaremos para acceder a la interfaz web virtualmin), pero deshabilitaremos los inicios de sesión de contraseña a través de SSH (ya que estamos utilizando el método de autenticación de claves más seguro). Editar users.ymlpara contener lo siguiente.

- name: Change passwd
  user: name=root password={{ new_password | password_hash('sha512') }} update_password=always

- name: Disable SSH password login
  lineinfile: dest=/etc/ssh/sshd_config regexp="^#?PasswordAuthentication" line="PasswordAuthentication no"
  notify: restart sshd

Por seguridad, necesitamos un firewall. Utilizaremos el firewall sin complicaciones para permitir el acceso SSH en el puerto 22, el acceso web en el puerto 80y el acceso web seguro en el puerto 443. Edite el ufw.ymlarchivo para contener lo siguiente.

- name: Set default firewall policy to deny all
  become: True
  ufw: state=enabled direction=incoming policy=deny
  tags: firewall

- name: enable SSH in firewall
  ufw: rule=allow port=22
  sudo: yes

- name: enable HTTP connections for web server
  ufw: rule=allow port=80
  sudo: yes

- name: enable HTTPS connections for web server
  ufw: rule=allow port=443
  sudo: yes

- name: enable firewall
  ufw: state=enabled
  sudo: yes

Opcionalmente, puede incluir un archivo de intercambio. Esto es esencial si su servidor tiene menos de 2 GB de RAM para evitar fallas de memoria. Editar swap.ymlpara contener lo siguiente.

- name: Set swap_file variable
  set_fact:
    swap_file: "{{swap_file_path}}"
  tags:
    - swap.set.file.path

- name: Check if swap file exists
  stat:
    path: "{{swap_file}}"
  register: swap_file_check
  tags:
    - swap.file.check

- name: Create swap file
  command: fallocate -l {{swap_file_size}} {{swap_file}}
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.create

- name: Change swap file permissions
  file: path="{{swap_file}}"
        owner=root
        group=root
        mode=0600
  tags:
    - swap.file.permissions

- name: Format swap file
  sudo: yes
  command: "mkswap {{swap_file}}"
  when: not swap_file_check.stat.exists
  tags:
    - swap.file.mkswap

- name: Write swap entry in fstab
  mount: name=none
         src={{swap_file}}
         fstype=swap
         opts=sw
         passno=0
         dump=0
         state=present
  tags:
    - swap.fstab

- name: Turn on swap
  sudo: yes
  command: swapon -a
  when: not swap_file_check.stat.exists
  tags:
    - swap.turn.on

- name: Set swappiness
  sudo: yes
  sysctl:
    name: vm.swappiness
    value: "{{swappiness}}"
  tags:
    - swap.set.swappiness

Paso 5: agrega la tarea Ansible para la configuración de virtualmin

Virtualmin tiene su propio archivo de instalación que Ansible puede descargar y ejecutar. Aquí estamos usando la instalación mínima ( LINK). Los elementos adicionales son para configurar la contraseña del servidor MySQL que no se establece cuando lo instala Virtualmin. Necesitamos detener temporalmente MySQL y agregar el directorio de autenticación antes de cambiar la contraseña. Editar virtualmin.ymlpara contener lo siguiente.

- name: download virtualmin install script
  get_url: >
    url=http://software.virtualmin.com/gpl/scripts/install.sh
    dest=/root/install.sh
    mode=0755

- name: virtualmin install (takes around 10 mins) you can see progress using $ sudo tail -f /root/virtualmin-install.log
  tags: non-idem
  shell: ~/install.sh --force --hostname {{ hostname }} --minimal --yes
  args:
    chdir: /root

- name: temp stop mysql
  service:
    name: mysql
    state: stopped

- name: change owner (and group) of mysqld dir
  file:
    path: "/var/run/mysqld"
    state: directory
    owner: mysql
    group: mysql

- name: virtualmin set mysql password
  shell: virtualmin set-mysql-pass --user root --pass {{ new_password }}

- name: restart mysql
  service:
    name: mysql
    state: started

El rol Ansible ahora está terminado y estamos listos para implementar.

Paso 6 - Realice la instalación con Ansible

Desde la carpeta ansible, ahora podemos simplemente ejecutar el siguiente comando, y Ansible llevará a cabo todas las tareas que hemos creado automáticamente. La primera vez que se conecte, recibirá una advertencia de clave SSH, simplemente escriba " yes" en el indicador.

ansible-playbook deploy.yml --private-key=ssh_keys/ssh_keys -i hosts

Si deseamos utilizar otro servidor, simplemente podemos cambiar la dirección IP en el archivo de hosts y ejecutar ese comando nuevamente para completar exactamente la misma configuración.

Paso 7: asistente de instalación posterior de Virtualmin

La instalación se ha completado y ahora podemos ir a https://192.0.2.1:10000(use la dirección IP de su servidor). Su navegador emitirá una advertencia de seguridad porque el certificado está autofirmado, así que haga clic advancedy agregue una excepción. Se le presentará una página de inicio de sesión. El nombre de usuario es root, y la contraseña es la que ingresó en el group_vars/allarchivo en el paso 3. La primera vez que ingrese a Virtualmin se le presentará el asistente posterior a la instalación. Puede revisar estas configuraciones manualmente o hacer clic cancelpara aceptar los valores predeterminados.

Paso 8: crea un servidor e instala WordPress

Para poner en funcionamiento su primer servidor de Wordpress, haga clic en el panel de Virtualmin Create Virtual Server. Deberá ingresar un nombre de dominio, una descripción y una contraseña de administrador. El nombre de dominio debe ser diferente del nombre de dominio completo de Virtualmin, y deberá apuntar el registro DNS a la dirección IP de su servidor.

Haga clic Create Server. Una vez que Virtualmin haya terminado de crear su servidor, haga clic Install Scriptsen el menú de la izquierda. Seleccione Wordpress, haga clic Show install optionsy en la siguiente página elija la ubicación de la instalación de Wordpress. Solo elige At top levely haz clic Install Now.

Eso es todo lo que necesita hacer: puede completar la instalación de Wordpress visitando su http://example.net/wp-admin/install.php(¿dónde example.netestá el nombre de dominio de este servidor virtual?). Si sus registros DNS aún no se han propagado, puede Services > Preview Websiteacceder desde el menú de Virtualmin.

Puede repetir este paso varias veces para crear varios sitios de Wordpress en el mismo servidor Vultr.



Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

Cómo instalar MODX Revolution en un CentOS 7 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Cómo implementar Ghost v0.11 LTS en Ubuntu 16.04

Cómo implementar Ghost v0.11 LTS en Ubuntu 16.04

¿Usando un sistema diferente? Ghost es una plataforma de blogs de código abierto que ha estado ganando popularidad entre los desarrolladores y usuarios comunes desde su 201

Instalación de Fork CMS en CentOS 7

Instalación de Fork CMS en CentOS 7

¿Usando un sistema diferente? Fork es un CMS de código abierto escrito en PHP. El código fuente de Forks está alojado en GitHub. Esta guía le mostrará cómo instalar Fork CM

Cómo instalar Typesetter CMS en CentOS 7

Cómo instalar Typesetter CMS en CentOS 7

Typesetter es un CMS de código abierto escrito en PHP enfocado en la facilidad de uso con la edición True WYSIWYG y el almacenamiento de archivos planos. En este artículo, estaremos instalando

Cómo instalar MODX Revolution en un Fedora 26 LAMP VPS

Cómo instalar MODX Revolution en un Fedora 26 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Configurar WordPress con WooCommerce en CentOS 6

Configurar WordPress con WooCommerce en CentOS 6

Las instancias de Vultr son una excelente manera de ejecutar su blog de WordPress, pero una extensión más notable de WordPress es WooCommerce, un complemento de comercio electrónico que extiende

Running WordPress on OpenBSD 6.5 with OpenBSDs HTTPD

Running WordPress on OpenBSD 6.5 with OpenBSDs HTTPD

Introduction The closer you keep your OpenBSD install to the default and without as many added packages, the more secure it will be. While the more commo

Instalar WordPress en OpenBSD 6.2

Instalar WordPress en OpenBSD 6.2

Introducción WordPress es el sistema de gestión de contenido dominante en Internet. Potencia todo, desde blogs hasta sitios web complejos con contenido dinámico.

Instalar y configurar un blog Ghost v1.0.0 en Ubuntu 16.04

Instalar y configurar un blog Ghost v1.0.0 en Ubuntu 16.04

Ghost es una plataforma de publicación moderna y de código abierto construida en Node.js con un cliente de administración Ember.js, una API JSON y una API de tema impulsada por Handlebars.js. Ghos

Cómo implementar Ghost v0.11 LTS en CentOS 7.3

Cómo implementar Ghost v0.11 LTS en CentOS 7.3

¿Usando un sistema diferente? Ghost es una plataforma de blogs de código abierto que ha estado ganando popularidad entre los desarrolladores y usuarios comunes desde su 201

Cómo implementar Ghost v0.11 LTS en Debian 8

Cómo implementar Ghost v0.11 LTS en Debian 8

¿Usando un sistema diferente? Ghost es una plataforma de blogs de código abierto que ha estado ganando popularidad entre los desarrolladores y usuarios comunes desde su 201

How to Install Dotclear on Debian 9 (Stretch)

How to Install Dotclear on Debian 9 (Stretch)

Using a Different System? Dotclear is a very simple blogging engine. It is open-source and easy to use. This tutorial will go through the installation on

Configuración de la plataforma de publicación Ghost Professional en OpenBSD 6

Configuración de la plataforma de publicación Ghost Professional en OpenBSD 6

Ghost es el último y más grande advenedizo para rivalizar con WordPress. El desarrollo de temas es rápido y fácil de aprender porque los desarrolladores de Ghost decidieron usar ambos

Cómo instalar MODX Revolution en un Ubuntu 16.04 LAMP VPS

Cómo instalar MODX Revolution en un Ubuntu 16.04 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Cómo instalar MODX Revolution en un FreeBSD 11 FAMP VPS

Cómo instalar MODX Revolution en un FreeBSD 11 FAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable y de código abierto escrito en PHP. Es yo

Cómo instalar MODX Revolution en un Debian 9 LAMP VPS

Cómo instalar MODX Revolution en un Debian 9 LAMP VPS

¿Usando un sistema diferente? MODX Revolution es un sistema de gestión de contenido (CMS) de nivel empresarial rápido, flexible, escalable, gratuito y de código abierto escrito i

Cómo instalar Neos CMS en CentOS 7

Cómo instalar Neos CMS en CentOS 7

Neos es un innovador sistema de gestión de contenido de código abierto que es excelente para crear y editar contenido en línea. Con autores y editores en mente, Neo

Cómo implementar Ghost v0.11 LTS en Fedora 25

Cómo implementar Ghost v0.11 LTS en Fedora 25

¿Usando un sistema diferente? Ghost es una plataforma de blogs de código abierto que ha estado ganando popularidad entre los desarrolladores y usuarios comunes desde su 201

Instalación de Fork CMS en Ubuntu 16.04 LTS

Instalación de Fork CMS en Ubuntu 16.04 LTS

¿Usando un sistema diferente? Fork es un CMS de código abierto escrito en PHP. El código fuente de Forks está alojado en GitHub. Esta guía le mostrará cómo instalar Fork CM

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

¿Puede la IA luchar con un número cada vez mayor de ataques de ransomware?

Los ataques de ransomware van en aumento, pero ¿puede la IA ayudar a lidiar con el último virus informático? ¿Es la IA la respuesta? Lea aquí, sepa que la IA es una bendición o una perdición

ReactOS: ¿Es este el futuro de Windows?

ReactOS: ¿Es este el futuro de Windows?

ReactOS, un sistema operativo de código abierto y gratuito, está aquí con la última versión. ¿Puede satisfacer las necesidades de los usuarios de Windows de hoy en día y acabar con Microsoft? Averigüemos más sobre este estilo antiguo, pero una experiencia de sistema operativo más nueva.

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Manténgase conectado a través de la aplicación de escritorio WhatsApp 24 * 7

Whatsapp finalmente lanzó la aplicación de escritorio para usuarios de Mac y Windows. Ahora puede acceder a Whatsapp desde Windows o Mac fácilmente. Disponible para Windows 8+ y Mac OS 10.9+

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

¿Cómo puede la IA llevar la automatización de procesos al siguiente nivel?

Lea esto para saber cómo la Inteligencia Artificial se está volviendo popular entre las empresas de pequeña escala y cómo está aumentando las probabilidades de hacerlas crecer y dar ventaja a sus competidores.

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

La actualización complementaria de macOS Catalina 10.15.4 está causando más problemas que resolver

Recientemente, Apple lanzó macOS Catalina 10.15.4, una actualización complementaria para solucionar problemas, pero parece que la actualización está causando más problemas que conducen al bloqueo de las máquinas Mac. Lee este artículo para obtener más información

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

13 Herramientas comerciales de extracción de datos de Big Data

¿Qué es un sistema de archivos de diario y cómo funciona?

¿Qué es un sistema de archivos de diario y cómo funciona?

Nuestra computadora almacena todos los datos de una manera organizada conocida como sistema de archivos de diario. Es un método eficiente que permite a la computadora buscar y mostrar archivos tan pronto como presiona buscar.

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

Singularidad tecnológica: ¿un futuro lejano de la civilización humana?

A medida que la ciencia evoluciona a un ritmo rápido, asumiendo muchos de nuestros esfuerzos, también aumentan los riesgos de someternos a una singularidad inexplicable. Lea, lo que la singularidad podría significar para nosotros.

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

Una mirada a 26 técnicas analíticas de Big Data: Parte 1

El impacto de la inteligencia artificial en la atención médica 2021

El impacto de la inteligencia artificial en la atención médica 2021

La IA en la salud ha dado grandes pasos desde las últimas décadas. Por tanto, el futuro de la IA en el sector sanitario sigue creciendo día a día.