Comment configurer WordPress Multisite avec Nginx sur Ubuntu 14.04

introduction

La fonctionnalité multisite de WordPress offre la possibilité de créer plusieurs sites Web à partir d’une seule installation de WordPress. Chaque site peut avoir un thème, un ensemble de plugins et une collection de contenu (publications et pages) distincts. Cela réduit les frais de maintenance et de mise à jour de plusieurs installations de WordPress, tout en vous permettant d’héberger plusieurs sites totalement indépendants les uns des autres.

WordPress multisite est disponible en deux versions: sous-répertoire ou sous-domaine. Dans ce tutoriel, nous allons configurer WordPress multisite pour utiliser des sous-domaines. Cela signifie que les sites que nous créons auront une adresse Web de sous-domaine telle que * http: //wp-site.yourdomain.com*. Cela peut être mappé sur un domaine externe tel que * http: //wp-site.net* afin que chaque site semble indépendant de l’extérieur.

Conditions préalables

Ce tutoriel nécessite que l’utilisateur connaisse les éléments suivants:

Nous allons créer trois sites WordPress avec les noms de domaine suivants:

  • * Site 1: *

  • Domaine: * (domaine primaire)

    Ceci est le site créé lors de l’installation de WordPress.

  • * Site 2: *

  • Domaine externe: *

  • Sous-domaine: * shoppingsite.example.com

  • * Site 3: *

  • Domaine externe: *

  • Sous-domaine: * companysite.example.com

Le premier domaine est le nom de domaine principal à travers lequel WordPress sera installé. Assurez-vous de set DNS pour les trois domaines pour pointer vers l’adresse IP de le Droplet qui hébergera WordPress.

Première étape - Configurer les enregistrements génériques DNS

Dans cette section, nous allons ajouter un enregistrement générique DNS pour le * domaine principal * afin que davantage de sites puissent être ajoutés à tout moment, sans avoir besoin de https://www.digitalocean.com/community/tutorials/an-introduction-to individuel. -dns-terminology-components-and-concepts [enregistrements A]. (Vous pouvez également ajouter un nouvel enregistrement A pour chaque sous-domaine.)

_ * Remarque: * Ceci doit être fait uniquement pour le * _primary domain (dans ce tutoriel). __

Connectez-vous à votre panneau de commande DigitalOcean et accédez à la section Mise en réseau. Modifiez le domaine principal et créez un caractère générique * Un enregistrement * pour ce domaine, pointant vers l’adresse IP de Droplet. Un enregistrement générique est créé en entrant un astérisque (*) dans la zone de saisie du nom d’hôte, comme indiqué dans la capture d’écran ci-dessous.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/add_wildcard_a_record.png [Panneau de configuration DNS - enregistrement générique]

Si vous hébergez le DNS de votre domaine ailleurs, vous devez également définir l’enregistrement générique.

  • Ce que vous devriez voir maintenant: *

Les requêtes DNS pour tout * random-sub-domain.examplewp.com * doivent renvoyer l’adresse IP de votre Droplet.

Deuxième étape - Installer et configurer la pile LEMP

Dans cette section, nous allons installer et configurer Nginx, MySQL et PHP. Un article détaillé est disponible à l’adresse https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lp-lack-stack-on-ubuntu-14-04 à la configuration d’un LEMP. pile] que vous pouvez référencer si vous le souhaitez. Cette section servira de configuration rapide. Il existe également une image * LEMP sur Ubuntu 14.04 * sous l’onglet * Applications * de la section * Sélectionner une image * lors de la création d’un droplet.

Mettez à jour les référentiels et installez Nginx, MySQL, PHP5-FPM et les autres modules PHP nécessaires.

apt-get update
apt-get install -y nginx mysql-server php5-fpm php5-mysql php5-curl php5-mcrypt php5-gd

Lors de l’installation du serveur MySQL, vous serez invité à saisir un mot de passe pour l’utilisateur de la base de données racine. Veuillez entrer un mot de passe fort et * ne le laissez pas en blanc *. Vous allez entrer le mot de passe deux fois.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/2.png [mot de passe root MySQL]

Créez une racine de document pour Nginx qui contiendra les fichiers WordPress. Nous allons utiliser tout au long de ce tutoriel.

mkdir

Nous allons remplacer l’hôte virtuel par défaut de Nginx par le nôtre; supprimez donc son lien symbolique dans le répertoire * sites-enabled *.

rm /etc/nginx/sites-enabled/default

Créez un nouveau fichier d’hôte virtuel dans le répertoire * sites-available *. Ce fichier peut être nommé n’importe quoi. Dans notre exemple, nous l’appellerons.

nano /etc/nginx/sites-available/

Éditez ce fichier et placez la configuration suivante. Modifiez le texte surligné en rouge en fonction de votre environnement. Dans la ligne + nom_serveur +, vous devez ajouter les trois (ou plus) de vos domaines multisites, ainsi que le sous-domaine générique du premier domaine.

server {
   listen [::]:80 ipv6only=off;
   server_name ;

   root ;
   index index.php index.html index.htm;

   location / {
       try_files $uri $uri/ /index.php?$args ;
   }

   location ~ /favicon.ico {
       access_log off;
       log_not_found off;
   }

   location ~ \.php$ {
       try_files $uri /index.php;
       include fastcgi_params;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
   }

   access_log  /var/log/nginx/$host-access.log;
   error_log   /var/log/nginx/wpms-error.log;
}

Si ce Droplet n’héberge que cette installation WordPress, les directives + listen + et + nom_serveur + peuvent être modifiées comme suit:

listen [::]:80 default_server ipv6only=off;
server_name ;

L’utilisation de la variable + $ host + dans la directive + access_log + crée des fichiers journaux distincts pour chaque domaine, tels que examplewp.com-access.log et shoppingsite.com-access.log. Il n’est pas possible d’utiliser de telles variables pour la directive + error_log +, de sorte que toutes les erreurs sont consignées dans un seul fichier.

Enregistrez ce fichier et créez un lien symbolique vers ce fichier dans le répertoire * sites-enabled *.

ln -s /etc/nginx/sites-available/wp-ms /etc/nginx/sites-enabled/wp-ms

Exécutez un test de configuration Nginx et redémarrez s’il renvoie * OK *.

service nginx configtest
service nginx restart

Troisième étape - Créer une base de données MySQL et un utilisateur pour WordPress

Dans cette section, nous allons créer une base de données MySQL pour WordPress et un utilisateur disposant d’autorisations pour cette base de données uniquement.

Connectez-vous à la ligne de commande MySQL en tant qu’utilisateur * root *.

mysql -u root -p

Créer une base de données.

CREATE DATABASE ;

Créez un utilisateur MySQL et accordez des autorisations à cette base de données:

CREATE USER ''@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON .* TO ''@'localhost';

Remplacez le mot * mot de passe * par un mot de passe fort. Videz les privilèges et quittez la ligne de commande MySQL.

FLUSH PRIVILEGES;
exit

Notez ces détails comme vous en aurez besoin à la quatrième étape.

_ _ * Nom de la base de données: *

+ * Utilisateur de la base de données: *

+ * Mot de passe de la base de données: * _ _

Pour plus d’informations sur les utilisateurs de MySQL, voir his article.

Quatrième étape - Téléchargez et installez WordPress

Dans cette section, nous allons télécharger la dernière version de WordPress et l’installer. Ce sera pour notre premier site, * examplewp.com *.

Téléchargez et extrayez WordPress.

wget http://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz

Déplacez les fichiers extraits dans la racine du document.

mv wordpress/*

Attribuer la propriété à l’utilisateur + www-data. Cela est essentiel pour que les téléchargements de médias et les mises à jour principales / plugins / thèmes fonctionnent dans WordPress.

chown -R www-data:www-data

Accédez au * domaine principal * de votre navigateur pour commencer l’installation de WordPress.

http:///

Vous pouvez ajouter le suffixe «www» à l’URL si nécessaire. Cliquez sur le bouton * Créer un fichier de configuration * suivi du bouton * On y va! *. Renseignez les détails de la base de données (utilisez les informations de la troisième étape) et cliquez sur * Soumettre *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/3.png [Détails de la base de données WordPress]

À ce stade, WordPress établira une connexion avec la base de données pour tester les informations d’identification entrées. Une fois la connexion établie, le bouton * Exécuter l’installation * apparaît. Clique dessus. Remplissez le formulaire * Informations nécessaires * pour configurer le titre, le nom d’utilisateur, le mot de passe et l’adresse électronique de votre site, puis cliquez sur * Installer WordPress *. Il est recommandé de choisir un nom d’utilisateur non générique pour la sécurité.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/4.png [écran de bienvenue de WordPress]

Cinquième étape - Activer le multisite et créer des sites supplémentaires

Dans cette section, nous activerons WordPress Multisite et créerons les deux sites supplémentaires mentionnés dans la section * Prequisites * de cet article.

Une constante PHP doit être définie dans le fichier * wp-config.php * pour activer le http://codex.wordpress.org/Tools_Network_Screen. Page [Configuration du réseau].

Editez le fichier * wp-config.php *:

nano wp-config.php

Ajoutez le code suivant * avant * le commentaire `+ / * C’est tout, arrêtez de modifier! Bonne blogging. * / + `:

/* Multisite settings */
define( 'WP_ALLOW_MULTISITE', true );

Nous modifierons ce fichier plusieurs fois au cours de ce didacticiel. N’hésitez pas à ajouter toutes les nouvelles lignes dans la section + / * Multisite settings * / + que nous venons de créer.

Enregistrez le fichier. Connectez-vous au panneau d’administration WordPress et accédez à * Outils> Configuration du réseau *. Choisissez l’option * Sous-domaines *, modifiez le * Titre du réseau * comme vous le souhaitez, puis cliquez sur * Installer *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/5.png [Configuration du réseau WordPress]

Deux blocs de code vous seront présentés dans les fichiers * wp-config.php * et * .htaccess *. Copiez le code * wp-config.php * qui ressemble à ce qui suit:

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', '');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Editez le fichier * wp-config.php *.

nano wp-config.php

Ajoutez ces lignes * avant * le commentaire `+ / * C’est tout, arrêtez de modifier! Bonne blogging. * / + `et enregistrez-le. Le code affiché pour .htaccess peut être ignoré, car Nginx ne possède pas ce fichier.

Déconnectez-vous du panneau d’administration WordPress, puis reconnectez-vous. Depuis l’admin toolbar en haut à gauche, accédez à * Mes sites> Administrateur réseau> Sites *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/6.png [Barre d’outils WordPress]

Cliquez sur le bouton * Ajouter un nouveau * pour ouvrir le formulaire * Ajouter un nouveau site *. La capture d’écran suivante montre les détails renseignés pour le site d’achat dans notre exemple. La * Adresse du site * entrée constituera le sous-domaine de ce site.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/7.png [Création d’un nouveau site WordPress]

Cliquez sur * Ajouter un site * et le site créé sera accessible via * http: //shoppingsite.examplewp.com*.

Répétez ces étapes pour créer le deuxième site (companysite.examplewp.com dans notre exemple).

  • Ce que vous devriez voir maintenant: *

Les trois sites WordPress suivants:

  • examplewp.com

  • shoppingsite.examplewp.com

  • companysite.examplewp.com

Chacun d’entre eux aura son propre contenu, son thème et son ensemble actif de plugins.

Sixième étape - Configurer le mappage de domaine

Dans cette section, nous vous permettrons d’utiliser un nom de domaine distinct pour chaque site WordPress, en téléchargeant et en activant le plugin WordPress MU Domain Mapping. Ce plugin permet aux utilisateurs de WordPress Multisite de mapper leur blog / site vers un autre domaine.

Connectez-vous à votre Droplet via SSH et téléchargez le plug-in WordPress MU Domain Mapping. Commencez par installer la commande + unzip +, puis extrayez le plugin.

wget http://downloads.wordpress.org/plugin/wordpress-mu-domain-mapping.latest-stable.zip
apt-get install unzip
unzip wordpress-mu-domain-mapping.latest-stable.zip

Déplacez les fichiers extraits dans le répertoire du plugin WordPress.

mv wordpress-mu-domain-mapping wp-content/plugins/

Copiez le fichier * sunrise.php * du répertoire du plug-in vers le répertoire * wp-content *.

cp wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php wp-content/

Editez le fichier * wp-config.php * et ajoutez la ligne suivante * avant * le commentaire `+ / * C’est tout, arrêtez de modifier! Bonne blogging. * / + `.

Fichier: + wp-config.php

define('SUNRISE', 'on');

Enregistrez ce fichier et retournez au navigateur Web. À partir de la barre d’outils WordPress, accédez à * Mes sites> Administrateur réseau> Plug-ins *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/8.png [Plugins]

Cliquez sur le lien * Activer le réseau * sous le plugin * WordPress MU Domain Mapping *. Allez dans * Paramètres> Mappage de domaine * et modifiez les * Options de domaine * comme suit:

  • Décocher * Connexion à distance *

  • Vérifier * Redirect Permanent *

  • Décocher * Rediriger les pages d’administration vers le domaine d’origine du site *

image: https: //assets.digitalocean.com/articles/wordpress_multisite/9.png [Options de mappage de domaine]

Cliquez sur * Enregistrer * une fois terminé. Ces paramètres redirigent toutes les demandes de sous-domaines (comme companysite.examplewp.com) vers leurs domaines externes respectifs (tels que companysite.org), y compris les pages d’administration (/ wp-admin).

Dans l’étape suivante, nous allons mapper un nom de domaine sur chaque site en fonction de son ID de site. Il existe de nombreuses façons de trouver l’ID d’un site, mais pour faciliter l’administration, nous allons créer un simple WordPress Must-use qui affiche une colonne d’ID supplémentaire sur la page * Sites *. .

Connectez-vous à votre Droplet via SSH et créez un répertoire * mu-plugins *.

mkdir wp-content/mu-plugins

Créez un fichier PHP dans ce répertoire et collez le code suivant:

nano wp-content/mu-plugins/wpms_blogid.php

Vous pouvez copier ce contenu exactement:

<?php
add_filter( 'wpmu_blogs_columns', 'do_get_id' );
add_action( 'manage_sites_custom_column', 'do_add_columns', 10, 2 );
add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 );

function do_add_columns( $column_name, $blog_id ) {
   if ( 'blog_id' === $column_name )
       echo $blog_id;
   return $column_name;
}

function do_get_id( $columns ) {
   $columns['blog_id'] = 'ID';
   return $columns;
}

La section * Sites> Tous les sites * devrait maintenant afficher une colonne ID supplémentaire.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/10.png [ID]

Notez les valeurs d’ID de chaque site et accédez à la page * Paramètres> Domaines *. Entrez l’ID de site suivi du domaine externe du site. Par exemple, puisque companysite a un ID de 3, sur cette page, * ID de site * doit être 3 et le domaine doit être * companysite.org *.

image: https: //assets.digitalocean.com/articles/wordpress_multisite/11.png [Mappage d’un identifiant de site sur un domaine]

Vous pouvez ajouter un préfixe «www» si vous souhaitez définir l’URL du site sous la forme * http: //www.companysite.org [www.companysite.org] *. Répétez ces étapes pour les autres domaines. Cliquez sur * Enregistrer * en bas de la page.

  • Ce que vous devriez voir maintenant: *

Chaque site aura son propre nom de domaine au lieu d’un sous-domaine. c’est-à-dire que si vous entrez http://companysite.org dans votre navigateur, vous ouvrirez le site * Ma société en ligne *. Vous pouvez vérifier cela maintenant en visitant http://shoppingsite.com et http://companysite.org. Vous devriez voir le titre du site changer dans le coin supérieur gauche de la page.

Désormais, chaque site peut être géré séparément via son propre panneau d’administration WordPress:

http://examplewp.com/wp-admin/
http://shoppingsite.com/wp-admin/
http://companysite.org/wp-admin/

Les mises à jour du noyau / plugins / themes et l’installation des plugins / thèmes doivent être effectuées à partir de la page d’administration réseau du domaine principal:

http://examplewp.com/wp-admin/network/