Como implantar vários sites Wordpress usando o Virtualmin e o Ansible no Ubuntu 16.04

Um uso comum de um servidor virtual Vultr é hospedar sites do Wordpress. Este guia mostra como automatizar a configuração de um servidor virtual do zero (usando o Ansible) e implantar vários sites independentes do Wordpress (usando o Webmin / Virtualmin). O Virtualmin / Webmin é uma interface gráfica do usuário que permite gerenciar a implantação de várias contas de servidor virtual na mesma máquina (concluída com a pilha LAMP / LEMP). O Virtualmin é muito semelhante ao cPanel e Plesk, e neste tutorial usaremos a edição gratuita da GPL. Após a configuração inicial do servidor Vultr e a instalação do Virtualmin, você pode configurar rapidamente vários servidores virtuais na interface do Virtualmin e instalar diretamente o Wordpress nesse servidor virtual, com seu próprio nome de domínio.

Neste tutorial, em vez de inserir manualmente uma longa lista de comandos, usaremos o Ansible. O Ansible é uma ferramenta de automação baseada em python que permite automatizar de forma confiável e repetida as tarefas do servidor. Isso significa que, depois de seguir este tutorial, você poderá implantar outro servidor da mesma maneira com apenas alguns comandos.

Pré-requisitos

  • Pelo menos um nome de domínio totalmente qualificado e acesso aos registros DNS
  • Uma conta Vultr

Etapa 1 - Instalando o Ansible na sua máquina local

Instale o Ansible na sua máquina local ou em outro servidor.

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

Etapa 2 - Gere chaves SSH e implante o servidor

O Ansible funciona efetuando login no seu servidor via SSH. O acesso SSH é mais seguro se usarmos chaves em vez de uma senha. Vamos primeiro gerar um par de chaves pública e privada.

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

No ssh_keysdiretório, agora haverá dois arquivos ssh_keyse ssh_keys.pub. ssh_keysé o seu arquivo de chave privada e deve ser mantido em segurança. Agora você pode abrir o ssh_keys.pub, que contém a chave pública.

Faça login no painel da web do Vultr e clique em Deploy New Server.

Selecione uma região, Tipo de servidor (Ubuntu 16.04), Tamanho do servidor e, em seguida, na parte 6 ( SSH keys), clique em Add New. Na próxima página, cole sua chave pública, dê um nome e clique em Add SSH key. Por fim, verifique se a chave está selecionada e clique em Deploy now.
Depois que o servidor terminar de implantar, você verá seu endereço IP. Você precisará fazer login no servidor DNS do seu nome de domínio e apontá-lo para este endereço.

Etapa 3 - Crie uma configuração Ansible básica

Os arquivos de automação da Ansible são chamados roles. Primeiro, configuraremos a estrutura de diretórios (dentro do ansiblediretório que você acabou de criar na etapa 1) e os arquivos 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 o hostsarquivo para conter o seguinte, substituindo ip addresso servidor que você acabou de criar. O Ansible usa python 2, que o Ubuntu 16.04 não tem instalado por padrão. No hostsarquivo, dizemos ao Ansible para usar o python 3.

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

Edite o deploy.ymlarquivo para conter o seguinte. Nós vamos usar o rootusuário.

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

Edite o /group_vars/allarquivo para conter o seguinte. Essas variáveis ​​informam ao Ansible a localização de suas chaves SSH, parâmetros de arquivo de troca, seu Nome de Domínio Totalmente Qualificado e a senha root. Lembre-se de não incluir o arquivo no controle de origem, pois ele contém sua senha em texto não criptografado.

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

Edite o common/handlers/main.ymlarquivo para conter o seguinte.

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

Etapa 4 - Criar tarefas possíveis para a configuração básica do servidor

A automação responsável é mais fácil de entender se a dividirmos em tarefas. Vamos criar arquivos para cada uma das nossas tarefas no processo.

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

main.yml deve apontar para cada arquivo que contém os comandos Ansible; portanto, edite-o para conter o seguinte.

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

A primeira etapa na configuração de um novo servidor é atualizar o cache de repositório e definir o fuso horário. Edite o common/handlers/setup.ymlarquivo para conter o seguinte.

- apt: update_cache=yes
  sudo: yes

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

Agora, forneceremos ao usuário root uma senha (que precisaremos acessar a interface da web virtualmin), mas desativaremos os logins de senha pelo SSH (já que estamos usando o método de autenticação de chaves mais seguras). Edite users.ymlpara conter o seguinte.

- 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 segurança, precisamos de um firewall. Usaremos o Firewall não complicado para permitir o acesso SSH na porta 22, acesso à Web na porta 80e acesso seguro à Web na porta 443. Edite o ufw.ymlarquivo para conter o seguinte.

- 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, você pode incluir um arquivo de troca. Isso é essencial se o servidor tiver menos de 2 GB de RAM para evitar falhas de memória. Edite swap.ymlpara conter o seguinte.

- 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

Etapa 5 - Adicionar tarefa Ansible para a configuração do virtualmin

O Virtualmin possui seu próprio arquivo de instalação, que pode ser baixado e executado pelo Ansible. Aqui estamos usando a instalação mínima ( LINK). Os itens adicionais são para configurar a senha do servidor MySQL que não é definida quando instalada pelo Virtualmin. Precisamos parar temporariamente o MySQL e adicionar o diretório de autenticação antes de alterar a senha. Edite virtualmin.ymlpara conter o seguinte.

- 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

A função Ansible está concluída e estamos prontos para implantar.

Etapa 6 - Execute a instalação com Ansible

A partir da pasta ansible, agora podemos simplesmente executar o seguinte comando, e o Ansible executará todas as tarefas que criamos automaticamente. Na primeira vez em que você se conectar, você receberá um aviso de chave SSH, digite " yes" no prompt.

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

Se desejarmos usar outro servidor, podemos simplesmente alterar o endereço IP no arquivo hosts e executar esse comando novamente para concluir exatamente a mesma configuração.

Etapa 7 - Assistente de pós-instalação do Virtualmin

A instalação está concluída e agora podemos ir para https://192.0.2.1:10000(use o endereço IP do seu servidor). Seu navegador emitirá um aviso de segurança porque o certificado é autoassinado. Clique advancede adicione uma exceção. Você verá uma página de login. O nome de usuário é roote a senha é a que você digitou no group_vars/allarquivo na etapa 3. Na primeira vez em que entrar no Virtualmin, você será apresentado ao assistente de pós-instalação. Você pode passar por essas configurações manualmente ou clicar cancelpara aceitar os padrões.

Etapa 8 - Crie um servidor e instale o WordPress

Para colocar seu primeiro servidor Wordpress em funcionamento, no painel do Virtualmin, clique em Create Virtual Server. Você precisará inserir um nome de domínio, descrição e senha de administrador. O nome do domínio deve ser diferente do nome de domínio totalmente qualificado do Virtualmin, e você precisará apontar o registro DNS para o endereço IP do seu servidor.

Clique em Create Server. Quando o Virtualmin terminar de criar seu servidor, clique Install Scriptsno menu à esquerda. Selecione Wordpress, clique Show install optionse, na página seguinte, escolha o local da instalação do Wordpress. Basta escolher At top levele clicar Install Now.

É tudo o que você precisa fazer - você pode concluir a instalação do Wordpress visitando seu http://example.net/wp-admin/install.php(onde example.netfica esse nome de domínio dos servidores virtuais). Se seus registros DNS ainda não foram propagados, você pode acessar Services > Preview Websiteo menu Virtualmin.

Você pode repetir essa etapa várias vezes para criar vários sites do Wordpress no mesmo servidor Vultr.



Leave a Comment

Instalando o Fork CMS no CentOS 7

Instalando o Fork CMS no CentOS 7

Usando um sistema diferente? Fork é um CMS de código aberto escrito em PHP. O código fonte do Forks está hospedado no GitHub. Este guia mostra como instalar o Fork CM

Como instalar o Typetter CMS no CentOS 7

Como instalar o Typetter CMS no CentOS 7

O Typesetter é um CMS de código aberto escrito em PHP, focado na facilidade de uso com a edição True WYSIWYG e armazenamento de arquivos simples. Neste artigo, instalaremos

Como implantar o Ghost v0.11 LTS no Debian 8

Como implantar o Ghost v0.11 LTS no Debian 8

Usando um sistema diferente? O Ghost é uma plataforma de blog de código aberto que vem ganhando popularidade entre desenvolvedores e usuários comuns desde a sua 201

Como instalar o MODX Revolution em um CentOS 7 LAMP VPS

Como instalar o MODX Revolution em um CentOS 7 LAMP VPS

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável, gratuito e de código aberto

Como instalar o MODX Revolution em um LAMP VPS do Fedora 26

Como instalar o MODX Revolution em um LAMP VPS do Fedora 26

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável, gratuito e de código aberto

Como instalar o Neos CMS no CentOS 7

Como instalar o Neos CMS no CentOS 7

O Neos é um sistema inovador de gerenciamento de conteúdo de código aberto, ótimo para criar e editar conteúdo online. Com autores e editores em mente, o Neo

Executando o WordPress no OpenBSD 6.5 com o HTTPBS do OpenBSDs

Executando o WordPress no OpenBSD 6.5 com o HTTPBS do OpenBSDs

Introdução Quanto mais próximo você mantiver sua instalação do OpenBSD do padrão e sem tantos pacotes adicionados, mais seguro será. Enquanto o mais commo

Instale o WordPress no OpenBSD 6.2

Instale o WordPress no OpenBSD 6.2

Introdução O WordPress é o sistema de gerenciamento de conteúdo dominante na internet. Ele fornece tudo, desde blogs a sites complexos, com conteúdo dinâmico

Instale e configure um blog do Ghost v1.0.0 no Ubuntu 16.04

Instale e configure um blog do Ghost v1.0.0 no Ubuntu 16.04

O Ghost é uma plataforma de publicação de código aberto moderna, construída no Node.js com um cliente de administrador do Ember.js., uma API JSON e uma API de tema fornecida pelo Handlebars.js. Ghos

Como implantar o Ghost v0.11 LTS no CentOS 7.3

Como implantar o Ghost v0.11 LTS no CentOS 7.3

Usando um sistema diferente? O Ghost é uma plataforma de blog de código aberto que vem ganhando popularidade entre desenvolvedores e usuários comuns desde a sua 201

Como instalar o Dotclear no Debian 9 (Stretch)

Como instalar o Dotclear no Debian 9 (Stretch)

Usando um sistema diferente? Dotclear é um mecanismo de blog muito simples. É de código aberto e fácil de usar. Este tutorial passará pela instalação em

Configurando o WordPress com o WooCommerce no CentOS 6

Configurando o WordPress com o WooCommerce no CentOS 6

As instâncias do Vultr são uma ótima maneira de executar seu blog WordPress, mas uma extensão mais notável do WordPress é o WooCommerce, um plug-in de comércio eletrônico que estende a

Configurando a Plataforma de Publicação Ghost Professional no OpenBSD 6

Configurando a Plataforma de Publicação Ghost Professional no OpenBSD 6

O Ghost é o maior e mais recente iniciante a rivalizar com o WordPress. O desenvolvimento de temas é rápido e fácil de aprender, porque os desenvolvedores do Ghost decidiram usar os dois

Como instalar o MODX Revolution em um FreeBSD 11 FAMP VPS

Como instalar o MODX Revolution em um FreeBSD 11 FAMP VPS

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável e de código aberto, escrito em PHP. É eu

Como implantar o Ghost v0.11 LTS no Ubuntu 16.04

Como implantar o Ghost v0.11 LTS no Ubuntu 16.04

Usando um sistema diferente? O Ghost é uma plataforma de blog de código aberto que vem ganhando popularidade entre desenvolvedores e usuários comuns desde a sua 201

Como instalar o MODX Revolution em um VPS Debian 9 LAMP

Como instalar o MODX Revolution em um VPS Debian 9 LAMP

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável, gratuito e de código aberto

Como instalar o MODX Revolution em um Ubuntu 16.04 LAMP VPS

Como instalar o MODX Revolution em um Ubuntu 16.04 LAMP VPS

Usando um sistema diferente? O MODX Revolution é um sistema de gerenciamento de conteúdo (CMS) de nível empresarial, rápido, flexível, escalável, gratuito e de código aberto

Como implantar o Ghost v0.11 LTS no Fedora 25

Como implantar o Ghost v0.11 LTS no Fedora 25

Usando um sistema diferente? O Ghost é uma plataforma de blog de código aberto que vem ganhando popularidade entre desenvolvedores e usuários comuns desde a sua 201

Instalando o Fork CMS no Ubuntu 16.04 LTS

Instalando o Fork CMS no Ubuntu 16.04 LTS

Usando um sistema diferente? Fork é um CMS de código aberto escrito em PHP. O código fonte do Forks está hospedado no GitHub. Este guia mostra como instalar o Fork CM

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.