install drupal 7 en multi site

Voir aussi http://www.vagrantup.com distrib de vm, pour https://github.com/geerlingguy/drupal-vm

sur vm drupal13 (ubuntu 13.04 unity, apache 2.2common, php...)

  • dru1 -> drupal 7 avec module dev, et pages et users tests
  • dru7 -> drupal 7 en multi site.

On choisit de tout stocker dans la meme bd, nommée dru7. Le user mysql porte le meme nom, n'a des droits que sur cette base. Chaque site utilise un prefixe de table: s1_ s2_ ... Comme chez Gandi / Simple Hosting, pas de ligne de commande, tous les sites seront en site01.dru7 (et non en dru7/site02).

On fait d'abord une install "mono-site" dans dru7

notes:

  • php.ini Gandi affiche 64 M
  • lib à installer: libapache2-mod-php5  libapache2-mod-auth-mysql php5-mysql

1. conf hosts

ajouter une ligne avec dru7 et ses autres sous sites (example):  sudo vi /etc/hosts

2. conf vhost apache

copier de default ou d'une autre conf : sudo cp /etc/apache2/sites-enabled/modele /etc/apache2/sites-available/dru7   puis   sudo vi sites-available/dru7

<VirtualHost *:80>
   DocumentRoot /var/www/dru7
   ServerName dru7
</VirtualHost>

sudo vi /etc/apache2/conf.d/dru7.conf     (conf-enabled/dru7.conf pour debian 2.4 *)

Alias dru7 127.0.0.1
<Directory /var/www/dru7>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>

Soit créer un lien (ln -s /etc/apache2/sites-available/dru7 /etc/apache2/sites-enabled/dru7) soit sudo a2ensite dru7

Là, ne pas lancer l'install. Vérifier SQL (db et user). Vérifier si rewrite apparait dans les modules activés (éventuellement faire un sudo a2enmod rewrite)

cd /var/www
sudo drush dl drupal           on voit le chemin (et version)
sudo mv drupal-7.xx/ dru7   ou mieux   sudo cp -R drupal-7.xx dru7

Vers configurer les permissions des fichiers et dossiers (linux pour drupal).

Ne pas ajouter de contenu au premier site, ne pas y activer de module... garder une version vierge, pour comparaison.

A chaque fois qu'on ajoutera un "sous-site" (URL example.com) il faudra commencer par ici (loop 1).


user sql (loop 1)

Créer une db (avec privilèges requis par dupal), ou utiliser dru7. Le user doit avoir les privilèges suivants SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE_TMP_TABLE et LOCK_TABLES

conf /var/www (loop 2)

préparer le site01

Le répertoire "site01" doit correspondre au nom de domaine (ex sites/test.mondomain.com). Lorsque l'on va lancer la 1ere install monosite, il ne faut pas que ce site ai un . (ou utiliser sites/default... mais "dru7" ou "multi" pour du dev c'est parfait).

mkdir sites/site01
sudo cp sites/default/*.* sites/site01
sudo cp sites/default/default.settings.php sites/site01/settings.php
sudo mkdir sites/site01/files
sudo mkdir sites/site01/modules
sudo chmod 777 sites/site01/settings.php
sudo chmod 777 sites/site01/files/

Si on lance l'install, drupal cherche à utiliser sites/default. On a ce choix:

  • dans les settings.php ajouter la ligne $base_url = 'http://site01';
  • Mieux, utiliser sites/sites.php et ses alias de dossiers de conf.
    Indispensable pour le dev, car drupal stocke les chemins des fichiers dans la db (files, table system...), ou lorsqu'il s'agit de récupérer en local un site en prod.

sudo cp sites/example.sites.php  sites/sites.php

loop 3 : A la fin de dru7/sites/sites.php ajouter $sites['dru7'] = 'nom-rep';

sudo vi sites/site01/settings.php  (ou sites/example.com/settings.php)

$databases['default']['default'] = array(
   'driver' => 'mysql',
   'database' => 'dru7',
   'username' => 'dru7',
   'password' => 'my_password',
   'host' => 'localhost',
   'prefix' => '',
   'collation' => 'utf8_general_ci',
);

préparer les autres site0x

sudo cp -R sites/site01/ sites/site02/          on peux en préparer 2 ou 3


lancer l'install (loop 5)

Via URL example/install.php (ou site01/install.php) -  ce site sera le site par défaut, dc sans prefixe. Back up (sql+ sous "dru7/sites" + /var/lib/mysql/).

Ajouter les modules (loop 6). Faire conf de base. Soucis si l'on change de theme en cours de route (surtout certains themes).

6. les autres sites

modifier sites.php et settings.php, penser aux droits.

conf hostname (loop 4)

ajouter à sites-enabled/dru7

<VirtualHost *:80>
   DocumentRoot /var/www/dru7
   ServerName example
</VirtualHost>

/etc/apache2/conf.d/dru7.conf ajouter la ligne Alias example 127.0.0.1  et à /etc/hosts 127.0.0.1 example
* Pour debian: conf.d mais conf-enabled

re-protéger les fichiers

sudo chmod a-w sites/site01/settings.php


Commandes

sudo service apache2 restart          ou    sudo  /etc/init.d/apache2 restart
sudo vi /etc/apache2/sites-available/   sudo a2ensite dru7             ... Plus

update version debian apache 2.4 (mai 2014) *

/etc/apache2.conf est le fichier d'entrée. Voici comment les autres /etc/apache2/*.conf sont lus:
#    /etc/apache2/
#    |-- apache2.conf
#    |    `--  ports.conf
#    |-- mods-enabled
#    |    |-- *.load
#    |    `-- *.conf
#    |-- conf-enabled
#    |    `-- *.conf
#     `-- sites-enabled
#         `-- *.conf

 


Liens

cf https://drupal.org/node/1114158

migrer un site (source https://drupal.org/node/776864)

voir aussi en fr (jan 2014) http://fr.wikibooks.org/wiki/Drupal_:_installation_et_configuration,_mod...