Migrer son site WordPress vers un Cloud VPS

1) Installation de la distribution linux

J’ai choisi de tester les services OpenVZ de Obambu, test à moindre risque car le cout pour 6 mois est minime. Ce site tourne d’ailleurs sur leur offre Small OpenVZ, qui en plus d’héberger oxilea heberge également un autre site WordPress.

Se connecter sur son compte Obambu, my.obambu.com.

A partir de l’Espace client cliquer sur Panel (SolusVM)

Cliquer sur Re Install

Choisir la distribution Linux voulu, pour moi ce sera la dernière Ubuntu disponible (Ubuntu 16.04 64bits) puis re-install. Le message « Installation has been started. Please allow up to 10 minutes for it to complete », il faut donc attendre quelque minutes avant de pouvoir poursuivre nos installations.

2) Installation des outils qui nous faciliteront la tache par la suite

2.1 Authoriser le SSH

Connecter vous en SSH pour une heure à partir de de serial console du control panel obambu.

2.1.1 Installer l’éditeur nano

Mise à jour de la liste des packages disponible:

sudo apt update

Installation de nano

sudo apt install nano

2.1.2 Authoriser le SSH

Editer le fichier ssh_config :

sudo nano /etc/ssh/sshd_config

Autoriser l’accès SSH Root en mettant dans le fichier la valeur PermitRootLogin à true

Il faut ensuite initialiser un mot de passe pour root:

sudo passwd root

Vous pouvez maintenant quitter la fenêtre temporaire et vous connecter en SSH sur votre serveur, soit avec un logiciel (windows) soit directement à partir d’un terminal (linux ou Mac Os).

2.2 Serveur SFTP

Afin de faciliter les transfert vers notre serveur nous allons installer un serveur sftp.

Installation de MySecureShell:

sudo apt install mysecureshell

Configuration de MySecureShell

Créer un nouvel utilisateur (par exemple dwl) pour MySecure Shell et créer le mot de passe pour cet utilisateur:

sudo useradd -m -s /usr/bin/mysecureshell dwl

sudo passwd dwl

Vous pouvez alors configurer votre serveur, pour cela il faut éditer le fichier de configuration sftp_config:

sudo nano /etc/ssh/sftp_config

Les installations  de wordpress seront faites dans /var/www/html  remplacer la variable Home par:  

Home                    /var/www        #overrite home

Editer le fichier ssh_config:

nano sshd_config

Commenter la ligne Subsystem sftp /usr/lib/openssh/sftp-server et la remplacer par Subsystem sftp internal-sftp -d « /var/www/html »

Vous pouvez maintenant tester votre connection en sftp, attention le port pour le ftp est le 21, mais pour le sftp il faut utiliser le port 22.

3) Installation du serveur web et serveur de bases de données nécessaires pour wordpress

3.1 Installation du serveur Web

Installation de Apache 2:

sudo apt install apache2

Interdire le listing de directory:

sudo sed -i « s/Options Indexes FollowSymLinks/Options FollowSymLinks/ » /etc/apache2/apache2.conf

Permettre le lancement d’Apache2 après chaque reboot:

sudo systemctl stop apache2.service

sudo systemctl start apache2.service

sudo systemctl enable apache2.service

Changer dans le fichier apache2.conf AllowOverride None par AllowOverride All

3.2 Installation du serveur de base de données

Installation du serveur de base de données MariaDB

sudo apt install mariadb-server mariadb-client

Permettre le lancement de MariaDB après chaque reboot:

sudo systemctl stop mysql.service

sudo systemctl start mysql.service

sudo systemctl enable mysql.service

Créer les accès et la configuration de la base de données:

sudo mysql_secure_installation

Réponse à apporter lors de la configuration:

  • Enter current password for root (enter for none): Just press the Enter
  • Set root password? [Y/n]: Y
  • New password: Enter password
  • Re-enter new password: Repeat password
  • Remove anonymous users? [Y/n]: Y
  • Disallow root login remotely? [Y/n]: Y
  • Remove test database and access to it? [Y/n]:  Y
  • Reload privilege tables now? [Y/n]:  Y

Relancer le serveur avec la nouvelle configuration:

sudo systemctl restart mysql.service

3.3 Installation de PHP 7

Pour installer les dépendances et Php7, lancer les commandes suivantes:

sudo apt install software-properties-common

sudo add-apt-repository ppa:ondrej/php

sudo apt update

sudo apt install php7.1 libapache2-mod-php7.1 php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-gd php7.1-xml php7.1-intl php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl

Configuration de php pour Apache 2 dans le fichier php.ini

sudo nano /etc/php/7.1/apache2/php.ini

Editer et remplacer si besoin les lignes ci dessous du fichier php.ini

file_uploads = On

allow_url_fopen = On

memory_limit = 256M

upload_max_filesize = 100

max_execution_time = 360

date.timezone = Europe/Paris

4) installation wordpress

4.1 Création des bases de données pour chaque site wordpress

Pour créer les bases de données pour chacun des sites wordpress, se connecter au serveur de base de données:

sudo mysql -u root -p

Puis créer chacune des bases avec la commande suivante:

CREATE DATABASE oxilea;

CREATE DATABASE fthauvin;

Enfin créer les utilisateurs de chacune des bases de données:

GRANT ALL ON oxilea.* TO ‘oxileaBddUser’@’localhost’ IDENTIFIED BY ‘type_new_password_here’;

… on user per database created

Voila vous pouvez vous déconnecter de la base de données:

FLUSH PRIVILEGES;

exit;

4.2 Création de la configuration apache pour servir chacun des sites wordpress

Créer un fichier de configuration apache2 pour chacun des sites wordpress.

Exemple pour oxilea.fr (à reproduire pour chaque site wordpress)

sudo nano /etc/apache2/sites-available/oxilea.fr.conf

Exemple de contenu du fichier de configuration:

<VirtualHost *:80>

ServerAdmin admin@oxilea.fr

    DocumentRoot /var/www/html/oxilea.fr/

    ServerName oxilea.fr

    ServerAlias www.oxilea.fr

    <Directory /var/www/html/oxilea.fr/>

        Options Indexes FollowSymLinks MultiViews

        AllowOverride All

        Order allow,deny

        allow from all

    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Pour activer chacune des configurations des sites apache2, pour chaque configuration lancer:

sudo a2ensite oxilea.fr.conf

puis

service apache2 reload

Créer ensuite le repertoire de déploiement de chacun des sites wordpress.

sudo mkdir -p /var/www/html/oxilea.fr

Chacun des emplacements créés est prêt à recevoir son site wordpress.

5) Export du site wordpress

5.1 Utilisation de l’extension Duplicator

Pour des questions de compatibilité maximum avec les hébergeurs, nous allons utilisé le plugin Duplicator dans le mode sauvegarde de la base données uniquement.

Le plugin Duplicator va donc nous permettre de sauvegarder la base de données de notre site wordpress, le reste des fichiers wordpress sera transféré par ftp ou sftp.

Dans l’interface d’administration du site que vous voulez déplacer, installer le plugin Duplicator.

Après l’installation et l’activation du plugin Duplicator, vous allez créer un package d’exportation. en utilisant l’option « Créer un paquet».

Dans l’onglet archive choisir « Archiver seulement la base de données ».

Une fois l’archivage terminé, sauvegarder l’installeur et l’archive sur le disque dur de votre ordinateur.

5.2 Duplication des données du site

A partir de l’interface d’administration de l’hébergeur du site à transférer, créer un zip de l’ensemble des fichiers à partir de la racine du site, c’est à dire, l’ensemble des fichiers situés à la racine ainsi que les répertoires wordpress du site d’origine:

  • wp-admin
  • wp-install
  • wp-includes

Télécharger ce zip sur votre ordinateur puis transférer éléments dans le repertoire de destination créé précédemment (exemple dans le repertoire /var/www/html/oxilea.fr), attention aux droits sur le repertoire de destination.

Une fois le zip transférer à la racine du site de destination, deziper le.

Attribution des droits apache et accès SSH ou ftp:

L’owner des fichiers est le serveur Apache:

sudo chown www-data:www-data /var/www -R 

Ajouter dans /etc/group l’utilisateur sftp à ce groupe et donner les mêmes droits aux membres du groupe.

sudo chmod -R -wx,u+rwX,g+rwX,o+rX /var/www

Il suffit ensuite de lancer l’installer transféré précédemment en ouvrant dans un navigateur le lien http://yoursite.com/installer.php

Suivre alors les instructions (renseignement des accès à a base de données précédemment créé, nettoyage des fichiers d’installation)

5.3 Dernières configuration pour le fonctionnement sur le site de destination

Avant de tester votre site, vérifier la configuration Apache2, Autoriser le rewrite module et relancer Apache2
sudo apachectl configtest

sudo a2enmod rewrite

sudo systemctl restart apache2.service

Il ne vous reste plus qu’a faire pointer les DNS vers ce nouveau site.

6 Activer https sur votre site

6.1 Obtenir un certificat gratuit avec Let’s Encrypt

Rendez vous sur https://letsencrypt.org/ et choisissez votre mode de génération pour votre certificat.

Ci dessous il s’agit d’une installation pour Ubuntu 16.04

Nous avons déployer nos serveur sur un environnement Linux / Apache, il est conseillé d’utiliser Certbot pour la gestion de nos certificats.

Dans un premier temps nous allons installer Cerbot sur notre server.

Ici nous allons générer un certificat pour notre domaine mais Cerbot (avec l’aide de plugin supplémentaires) permet également de générer des wildcard certificates (*.domaine) pour des sous domaines.

6.1.1 Installation des outils cerbots

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository universe

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install python-certbot-apache

6.1.2 Demande d’un certificat

L’outil va effectuer la création du certificat. Il détecte l’ensemble des sites hébergés par votre serveur apache et les domaines associés et va vous demander pour quel domaine vous voulez créer votre certificat. Simplement lancez la commande suivante:

sudo certbot –apache

et laissez vous guider par l’outil.

6.2 Renouvellement automatique des certificats

Cerbot propose un outil de renouvellement automatique des certificats de votre serveur. Je vous conseille de l’activer pour éviter les oublis de renouvellement. En effet les certificats générés sont de courte durée (90 jours) il serait fastidieux de devoir intervenir pour le renouvellement chaque trimestre alors que ceci peut être fait automatiquement. Pour activer le renouvellement automatique lancez la commande:

sudo certbot renew –dry-run

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.