Installer WordPress multisites en local

J’utilise un système GNU/Linux, avec dessus Apache 2.2.16, PHP 5.5.3, Mysql 5.1.42, et je vais installer WordPress 3.0.4 en multisite. Je lis les docs, et en même temps je m’en méfie un peu n’étant pas sure qu’il ne reste pas des parties concernant des versions de wordpress plus anciennes.

L’intégration de la fonction multisites est encore récente, et en dehors du Codex les tutoriels sont rares. Ceux qui sont présentés ailleurs que dans le Codex sont ciblés, avec installation dans Windows, dans Mac, sur site distant…  et je n’en ai pas trouvé qui soit typique d’une installation en local sous Linux.

C’est à dire que pour les uns, c’est sur leur site distant, pour d’autres, sur xamp, et encore d’autres sur Mac (et Xamp). Ici, c’est sur PCLinuxOS, et de la même manière ça peut être sur n’importe quelle distro Linux, du moment que l’on emploie un serveur Apache ou Lighttpd, Mysql supérieur à 5.1.xx et un PHP aussi récent que possible aussi. Je n’ai pas regardé les prérequis exacts, je sais juste que ça compte.

Comment commencer ?

Avec une base de données neuve, un espace vierge dans le répertoire public, pour y mettre directement les fichiers du moteur. Pour un multisite, il faut que les fichiers soient directement sous la racine, et non dans un répertoire.

Voici la première doc que j’attaque:

http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite

J’ai copié les fichiers à la racine. Ils devront appartenir à l’utilisateur et au groupe définis dans la configuration de Apache. Ici, c’est dans le /etc/httpd.conf, et c’est « apache:apache ».

Après, occupons-nous du fichier wp-config.php. Il se configure comme à l’habitude sauf pour un détail : autoriser les multisites. Ajoutons cette ligne:

define('WP_ALLOW_MULTISITE', true);

Juste avant celle-ci:

/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */

Ensuite, il faut un métacaratère (wildcard en anglais). Mais je n’ai pas cPanel. Ce n’est ni libre, ni gratuit… :/

La doc pour configurer le métacaractères pour les sous-domaines est ici:

http://codex.wordpress.org/Create_A_Network#Step_2:_Setting_Wildcard_Subdomains

J’en suis là, et je reprendrais plus tard:
Step_2:_Setting_Wildcard_Subdomains » name= »Step_2:_Setting_Wildcard_Subdomains

Sub-domain sites work with the use of wildcard subdomains. This is a two-step process:

Apache must be configured to accept wildcards.

Open up the httpd.conf file or the include file containing the VHOST entry for your web account.
Add this line:

ServerAlias *.example.com

In the DNS records on your server, add a wildcard subdomain that points to the main installation. It should look like:

A *.example.com

Dans mon fichier /etc/hosts il y a déjà:
127.0.0.1 localhost.localdomain localhost
127.0.0.1 stargate.com

le nom de domaine est mignon ?
Dans httpd.conf il y a une section pour les DNS:
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work. See also the UseCanonicalName directive.
#
# If your host doesn’t have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName www.example.com:80

J’ajoute:
ServerName www.stargate.com
ServerAlias *.stargate.com

Je pense être prête à lancer l’installation, avant de voir la suite.
Donc : installation, puis
http://codex.wordpress.org/Migrating_Multiple_Blogs_into_WordPress_3.0_Multisite#4._Activate_multi-site

5. Create a test blog → créer un blog de test → puis 6. Install the WordPress MU Domain Mapping plugin

Install the WordPress MU Domain Mapping plugin. Folllow the installation and configuration instructions in the readme.

installer un plugin nommé « wordpress-mu-domain-mapping » qui semble être aussi tout un programme, et que je vais devoir apprendre à utiliser.
Le tutoriel est ici:
http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial

il conclut que le plugin disponible en ligne est bien le bon, pour un WordPress 3.0.x, et il semble que pour qu’il fonctionne il faille encore l’installer à la main et non depuis l’interface d’administration.

Le final:

J’ai dû ôter « ServerAlias *.stargate.com » du fichier httpd.conf, car il y avait une erreur au redémarrage de Apache, mais au final il a suffit d’ajouter le sous-domaine voulu dans /etc/hosts pour que la possibilité de créer un nouveau blog sous ce nom s’affiche dans la section administration du blog.

Tout est impeccable, et pour la suite, avec « domain mapping » tout ça, ce sera sur le site distant de Legtux que je le testerai prochainement.

Un petit ajout

Une fois qu’on a mis

define('WP_ALLOW_MULTISITE', true);

Juste avant celle-ci:

/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */

nous pouvons alors accéder dans l’administration du site à une section où nous allons pouvoir terminer la configuration du réseau.
C’est en bas de la section « Outils ». Allons-y, et nous verrons ensuite à droite ceci:

Créer un réseau de sites WordPress
Attention : Veuillez désactiver vos extensions avant la mise en place de votre réseau de sites.

Une fois le réseau créé, vous pourrez réactiver vos extensions.

Lorsque nous en aurons terminé, nous aurons quelques lignes de plus dans le fichier "wp-config", à la place de la ligne que nous avons utilisée juste avant:
define('WP_ALLOW_MULTISITE', true);

sera remplacé par tout un bloc de texte, définissant le blog installé comme étant le site principal.
Cela pourra par exemple, ressembler à quelque chose comme ça:

define(‘WP_DEBUG’, false);
define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true );
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘stargate.com’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );

Mais il ne faut surtout pas utiliser cela avant d’avoir accédé à la configuration du réseau depuis l’administration : vous vous retrouveriez déconnecté et coincé.

Désactivez vos extensions, puis retournez dans la section réseau, où ce message vous attend:

Créer un réseau de sites WordPress
Bienvenue dans le processus d’installation du réseau !

Complétez le formulaire ci-dessous et vous serez prêt à créer un réseau de sites WordPress. Nous créerons les fichiers de configurations à l’étape suivante.

Note : Vérifiez bien que le module Apache mod_rewrite est installé, car il sera nécessaire à la fin de cette installation.

Si le module mod_rewrite est désactivé, contactez votre administrateur pour l’activer, ou lisez la documentation Apache officielle ou non, pour comprendre comment le mettre en place.

Vous aurez ensuite le choix entre « sous-domaine », ou « sous-dossiers ». Si vous pouvez obtenir une « wildcard » chez votre hébergeur, la forme en sous-domaine sera possible, sinon vous devrez utiliser les URLs en sous-dossiers.
Par exemple:
en sous-domaine : http://tousmestux.stargate.com ou bien en sous-dossiers : http://stargate.com/tousnostux

Dés que c’est décidé et sélectionné, cliquez sur le bouton en bas à gauche où il est écrit « installez ». Voici la page pour l’étape suivante:
Créer un réseau de sites WordPress
Activer le réseau de sites

Suivez les étapes ci-après pour activer les fonctionnalités permettant la création d’un réseau de sites.

Attention : nous vous recommandons de faire une copie de sauvegarde de vos fichiers wp-config.php et .htaccess actuels.

1.Créez le dossier blogs.dir à l’emplacement /home/orditux/public_html/wp-content/blogs.dir. Ce dossier sera utilisé pour stocker les fichiers mis en ligne pour les sites additionnels ; il doit être accessible en écriture par votre serveur web.
2.Ajoutez les lignes suivantes à votre fichier wp-config.php, dans /home/orditux/public_html/, au-dessus de la ligne /* C’est tout, ne touchez pas à ce qui suit ! Bon blogging ! */

define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true );
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘stargate.com’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );

3.Ajoutez les lignes suivantes à votre fichier .htaccess, dans /home/orditux/public_html/, en remplacement des autres règles liées à WordPress :

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule . index.php [L]

Une fois les étapes effectuées, votre réseau sera activé et configuré. Vous devez maintenant vous reconnecter. Se connecter

Question : si chez un hébergeur, une balise telle que celle-ci se présente dans le .htaccess, que faire ? La laisser ou l’enlever ?

# BEGIN WordPress

define( ‘MULTISITE’, true );
define( ‘SUBDOMAIN_INSTALL’, true );
$base = ‘/’;
define( ‘DOMAIN_CURRENT_SITE’, ‘stargate.org’ );
define( ‘PATH_CURRENT_SITE’, ‘/’ );
define( ‘SITE_ID_CURRENT_SITE’, 1 );
define( ‘BLOG_ID_CURRENT_SITE’, 1 );

# END WordPress

Je viens de faire l’essai chez un nouvel hébergeur, et apparemment ça se passe bien, sans mettre le tag « module ».

Ouf ! ‘:)

4 thoughts on “Installer WordPress multisites en local

  1. Par contre j’ai un doute au niveau de la possibilité de le faire chez LegTux, je ne sais pas si tu peux attacher plus d’un nom de domaine par compte.

    Il faudrait confirmer avec Simon !

    Bonne chance pour la suite

  2. Bonjour Mélodie,

    j’ai quelques difficultés à installer wordpress multisite en local. J’ai bien ajouté cette ligne : « define(‘WP_ALLOW_MULTISITE’, true); » dans wp-config.php
    J’ai vu le nouveau sous-menu dans Outils > Création du réseau mais je n’ai pas la possibilité de choisir de l’installer en sous-domaines. J’ai essayé de modifier le fichier host mais j’ai du me tromper quelque part. J’ai ajouté ça :
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 fr.localhost
    127.0.0.1 www.localhost

    Peux-tu m’aider pour trouver ce qui ne va pas?
    Merci beaucoup.

    1. Bonjour,

      J’ai dit au début :
      Dans mon fichier /etc/hosts il y a déjà:
      127.0.0.1 localhost.localdomain localhost
      127.0.0.1 stargate.com

      alors que tu as dit:
      127.0.0.1 fr.localhost
      127.0.0.1 http://www.localhost

      Je suggère quelque chose comme:
      127.0.0.1 localhost.localdomain localhost
      127.0.0.1 emilie.me

      puis chaque nouveau sous-domaine devra avoir une ligne de plus:

      127.0.0.1 gateaux.emilie.me
      127.0.0.1 famille.emilie.me

      etc…
      Je ne me souviens plus de tout, mais je pense que cela devrait fonctionner de cette manière.

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.