Comment déployer plusieurs sites Wordpress en utilisant Virtualmin et Ansible sur Ubuntu 16.04

Un usage courant d'un serveur virtuel Vultr est d'héberger des sites Web Wordpress. Ce guide vous montre comment automatiser la configuration d'un serveur virtuel à partir de zéro (en utilisant Ansible) et déployer plusieurs sites Web Wordpress indépendants (en utilisant Webmin / Virtualmin). Virtualmin / Webmin est une interface utilisateur graphique qui vous permet de gérer le déploiement de plusieurs comptes de serveur virtuel sur la même machine (avec pile LAMP / LEMP). Virtualmin est très similaire à cPanel et Plesk, et dans ce tutoriel, nous utiliserons l'édition gratuite de GPL. Après la configuration initiale du serveur Vultr et l'installation de Virtualmin, vous pouvez configurer très rapidement plusieurs serveurs virtuels à partir de l'interface Virtualmin et installer directement Wordpress sur ce serveur virtuel avec son propre nom de domaine.

Dans ce didacticiel, au lieu d'entrer manuellement une longue liste de commandes, nous utiliserons plutôt Ansible. Ansible est un outil d'automatisation basé sur python qui vous permet d'automatiser de manière fiable et répétée les tâches du serveur. Cela signifie qu'une fois que vous aurez suivi ce didacticiel, vous pourrez déployer un autre serveur de la même manière avec seulement quelques commandes.

Conditions préalables

  • Au moins un nom de domaine complet et accès aux enregistrements DNS
  • Un compte Vultr

Étape 1 - Installer Ansible sur votre machine locale

Installez Ansible sur votre ordinateur local ou sur un autre serveur.

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

Étape 2 - Générez des clés SSH et déployez le serveur

Ansible fonctionne en se connectant à votre serveur via SSH. L'accès SSH est plus sécurisé si nous utilisons des clés plutôt qu'un mot de passe. Générons d'abord une paire de clés publique et privée.

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

Dans le ssh_keysrépertoire, il y aura maintenant deux fichiers, ssh_keyset ssh_keys.pub. ssh_keysest votre fichier de clé privée et doit être conservé en lieu sûr. Vous pouvez maintenant ouvrir le ssh_keys.pub, qui contient la clé publique.

Connectez-vous au tableau de bord Web Vultr et cliquez sur Deploy New Server.

Sélectionnez une région, le type de serveur (Ubuntu 16.04), la taille du serveur, puis dans la partie 6 ( SSH keys), cliquez sur Add New. Sur la page suivante, collez votre clé publique et donnez-lui un nom, puis cliquez sur Add SSH key. Enfin, assurez-vous que la clé est sélectionnée et cliquez sur Deploy now.
Une fois que le serveur a terminé le déploiement, vous verrez son adresse IP. Vous devrez vous connecter au serveur DNS de votre nom de domaine et le pointer vers cette adresse.

Étape 3 - Créez une configuration de base Ansible

Les fichiers d'automatisation d'Ansible sont appelés roles. Nous allons d'abord configurer la structure du répertoire (à l'intérieur du ansiblerépertoire que vous venez de créer à l'étape 1) et les fichiers de base.

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

Modifiez le hostsfichier pour qu'il contienne les éléments suivants, en remplaçant le ip addresspar le serveur que vous venez de créer. Ansible utilise python 2, qu'Ubuntu 16.04 n'a pas installé par défaut. Dans le hostsfichier, nous indiquons à Ansible d'utiliser python 3.

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

Modifiez le deploy.ymlfichier pour qu'il contienne les éléments suivants. Nous allons utiliser l' rootutilisateur.

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

Modifiez le /group_vars/allfichier pour qu'il contienne les éléments suivants. Ces variables indiquent à Ansible l'emplacement de vos clés SSH, les paramètres du fichier d'échange, votre nom de domaine complet et le mot de passe root. N'oubliez pas de ne pas inclure le fichier dans le contrôle de code source car il contient votre mot de passe en texte clair.

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

Modifiez le common/handlers/main.ymlfichier pour qu'il contienne les éléments suivants.

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

Étape 4 - Créez des tâches Ansible pour la configuration de base du serveur

Une automatisation possible est plus facile à comprendre si nous la décomposons en tâches. Créons des fichiers pour chacune de nos tâches dans le processus.

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

main.yml doit pointer vers chaque fichier contenant les commandes Ansible, alors modifiez-le pour qu'il contienne les éléments suivants.

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

La première étape de la configuration d'un nouveau serveur consiste à mettre à jour le cache de dépôt et à définir le fuseau horaire. Modifiez le common/handlers/setup.ymlfichier pour qu'il contienne les éléments suivants.

- apt: update_cache=yes
  sudo: yes

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

Maintenant, nous donnerons à l'utilisateur root un mot de passe (dont nous aurons besoin pour accéder à l'interface Web de virtualmin), mais désactiverons les connexions par mot de passe via SSH (puisque nous utilisons la méthode d'authentification par clés plus sécurisées). Modifiez users.ymlpour contenir les éléments suivants.

- 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

Pour la sécurité, nous avons besoin d'un pare-feu. Nous utiliserons le pare-feu simple pour autoriser l'accès SSH sur le port 22, l'accès Web sur le port 80et l'accès Web sécurisé sur le port 443. Modifiez le ufw.ymlfichier pour qu'il contienne les éléments suivants.

- 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

Facultativement, vous pouvez inclure un fichier d'échange. Ceci est essentiel si votre serveur a moins de 2 Go de RAM pour éviter les pannes de mémoire. Modifiez swap.ymlpour contenir les éléments suivants.

- 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

Étape 5 - Ajouter une tâche Ansible pour la configuration de virtualmin

Virtualmin a son propre fichier d'installation qui peut être téléchargé et exécuté par Ansible. Ici, nous utilisons l'installation minimale ( LINK). Les éléments supplémentaires consistent à configurer le mot de passe du serveur MySQL qui n'est pas défini lors de l'installation par Virtualmin. Nous devons arrêter temporairement MySQL et ajouter le répertoire d'authentification avant de changer le mot de passe. Modifiez virtualmin.ymlpour contenir les éléments suivants.

- 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

Le rôle Ansible est maintenant terminé et nous sommes prêts à déployer.

Étape 6 - Effectuez l'installation avec Ansible

À partir du dossier ansible, nous pouvons maintenant simplement exécuter la commande suivante, et Ansible exécutera automatiquement toutes les tâches que nous avons créées. La première fois que vous vous connectez, vous recevrez un avertissement de clé SSH, tapez simplement " yes" à l'invite.

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

Si nous souhaitons utiliser un autre serveur, nous pouvons simplement changer l'adresse IP dans le fichier hosts et réexécuter cette commande pour terminer exactement la même configuration.

Étape 7 - Assistant de post-installation de Virtualmin

L'installation est terminée et nous pouvons maintenant aller à https://192.0.2.1:10000(utilisez l'adresse IP de votre serveur). Votre navigateur émettra un avertissement de sécurité car le certificat est auto-signé, cliquez sur advancedet ajoutez une exception. Une page de connexion vous sera présentée. Le nom d'utilisateur est rootet le mot de passe est celui que vous avez entré dans le group_vars/allfichier à l'étape 3. La première fois que vous entrez dans Virtualmin, vous serez présenté avec l'assistant de post-installation. Vous pouvez parcourir ces paramètres manuellement ou cliquer sur cancelpour accepter les valeurs par défaut.

Étape 8 - Créez un serveur et installez WordPress

Pour obtenir votre premier serveur Wordpress opérationnel, à partir du tableau de bord Virtualmin, cliquez sur Create Virtual Server. Vous devrez saisir un nom de domaine, une description et un mot de passe administrateur. Le nom de domaine doit être différent du nom de domaine complet Virtualmin et vous devrez pointer l'enregistrement DNS vers l'adresse IP de votre serveur.

Cliquez Create Server. Une fois que Virtualmin a fini de créer votre serveur, cliquez Install Scriptssur le menu de gauche. Sélectionnez Wordpress, cliquez Show install optionssur et sur la page suivante, choisissez l'emplacement de l'installation de Wordpress. Choisissez At top levelet cliquez Install Now.

C'est tout ce que vous devez faire - vous pouvez terminer l'installation de Wordpress en visitant votre http://example.net/wp-admin/install.php(où example.netest ce nom de domaine des serveurs virtuels). Si vos enregistrements DNS ne se sont pas encore propagés, vous pouvez accéder au Services > Preview Websitemenu Virtualmin.

Vous pouvez répéter cette étape plusieurs fois pour créer plusieurs sites Wordpress sur le même serveur Vultr.



Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Comment installer MODX Revolution sur un VPS CentOS 7 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Comment déployer Ghost v0.11 LTS sur Ubuntu 16.04

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer MODX Revolution sur un Fedora 26 LAMP VPS

Comment installer MODX Revolution sur un Fedora 26 LAMP VPS

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Installation de Fork CMS sur CentOS 7

Installation de Fork CMS sur CentOS 7

Vous utilisez un système différent? Fork est un CMS open source écrit en PHP. Le code source de Forks est hébergé sur GitHub. Ce guide vous montrera comment installer Fork CM

Comment déployer Ghost v0.11 LTS sur CentOS 7.3

Comment déployer Ghost v0.11 LTS sur CentOS 7.3

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Configuration de WordPress avec WooCommerce sur CentOS 6

Configuration de WordPress avec WooCommerce sur CentOS 6

Les instances Vultr sont un excellent moyen dexécuter votre blog WordPress, mais une extension plus notable de WordPress est WooCommerce, un plugin de commerce électronique qui étend e

Exécuter WordPress sur OpenBSD 6.5 avec OpenBSDs HTTPD

Exécuter WordPress sur OpenBSD 6.5 avec OpenBSDs HTTPD

Introduction Plus vous maintenez votre installation OpenBSD par défaut et sans autant de packages ajoutés, plus elle sera sécurisée. Alors que le plus de commo

Installez WordPress sur OpenBSD 6.2

Installez WordPress sur OpenBSD 6.2

Introduction WordPress est le système de gestion de contenu dominant sur Internet. Il alimente tout, des blogs aux sites Web complexes avec un contenu dynamique

Installer et configurer un blog Ghost v1.0.0 sur Ubuntu 16.04

Installer et configurer un blog Ghost v1.0.0 sur Ubuntu 16.04

Ghost est une plate-forme de publication open source moderne basée sur Node.js avec un client administrateur Ember.js, une API JSON et une API de thème optimisée par Handlebars.js. Ghos

Comment déployer Ghost v0.11 LTS sur Debian 8

Comment déployer Ghost v0.11 LTS sur Debian 8

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Comment installer Dotclear sur Debian 9 (Stretch)

Comment installer Dotclear sur Debian 9 (Stretch)

Vous utilisez un système différent? Dotclear est un moteur de blog très simple. Il est open-source et facile à utiliser. Ce tutoriel passera par linstallation sur

Configuration de Ghost Professional Publishing Platform sur OpenBSD 6

Configuration de Ghost Professional Publishing Platform sur OpenBSD 6

Ghost est le dernier et le plus grand parvenu à rivaliser avec WordPress. Le développement du thème est rapide et facile à apprendre car les développeurs de Ghost ont décidé dutiliser

Comment installer le CMS Neos sur CentOS 7

Comment installer le CMS Neos sur CentOS 7

Neos est un système de gestion de contenu open source innovant, idéal pour créer et éditer du contenu en ligne. Avec des auteurs et des éditeurs à lesprit, Neo

Comment installer MODX Revolution sur un VPS Ubuntu 16.04 LAMP

Comment installer MODX Revolution sur un VPS Ubuntu 16.04 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Comment installer MODX Revolution sur un VPS FBS FreeBSD 11

Comment installer MODX Revolution sur un VPS FBS FreeBSD 11

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif et open source écrit en PHP. Cest moi

Comment installer MODX Revolution sur un VPS Debian 9 LAMP

Comment installer MODX Revolution sur un VPS Debian 9 LAMP

Vous utilisez un système différent? MODX Revolution est un système de gestion de contenu (CMS) de niveau entreprise rapide, flexible, évolutif, gratuit et open source écrit i

Comment déployer Ghost v0.11 LTS sur Fedora 25

Comment déployer Ghost v0.11 LTS sur Fedora 25

Vous utilisez un système différent? Ghost est une plate-forme de blogs open source qui gagne en popularité auprès des développeurs et des utilisateurs ordinaires depuis sa 201

Installation de Fork CMS sur Ubuntu 16.04 LTS

Installation de Fork CMS sur Ubuntu 16.04 LTS

Vous utilisez un système différent? Fork est un CMS open source écrit en PHP. Le code source de Forks est hébergé sur GitHub. Ce guide vous montrera comment installer Fork CM

Comment installer Dotclear sur Ubuntu 16.04

Comment installer Dotclear sur Ubuntu 16.04

Vous utilisez un système différent? Dotclear est un moteur de blog très simple qui a été construit sur PHP. Dans ce tutoriel, nous allons installer Dotclear sur Ubunt

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.