Automatiser l'installation d'un site Drupal 09/04/2010
Je poste ici un petit script simple que j'utilise pour avoir une installation Drupal de développement fonctionnelle en quelques minutes.
Cela présupose que drush est installé sur votre machine.
Il est basé sur une installation Debian standard, et nécessite bien sûr d'être adapté à vos besoins.
Lancé en tant que root, il :
- génère un nouveau virtualhost apache, suivant un fichier modèle (_modele_vhost.txt)
- ajoute le nom d'hôte au fichier /etc/hosts
- utilise drush pour télécharger drupal dans un dossier du même nom que le vhost
- crée la base de donnée vide et un utilisateur associé
- ajuste le fichier "settings.php" et crée le dossier files (dans sites/default)
- redémarre apache afin de pouvoir manuellement terminer l'installation par l'interface web
- ajuste les droits des dossiers et active/désactive quelques modules basiques
Attention, les réglages par défaut ne conviennent pas à un environnement de production. Le but est simplement d'obtenir très rapidement une maquette de travail
La syntaxe d'utilisation est la suivante : _nouveau_site.sh nomduvhost nomdelabase
Le script :
# On verifie que les arguments ont bien été fournis
EXPECTED_ARGS=2
if [ $# -ne $EXPECTED_ARGS ]
then
echo "Rappel syntaxe : _nouveau_site.sh nomdossier nombase"
exit
fi
#Chemins vers les vhosts apache, la racine du serveur, utilisateur systeme et mysql
a2vhosts=/etc/apache2/sites-available
path=/var/www
user=pascal
group=pascal
dbuser=maquette
dbpassword=maquette
#on génère le nouveau vhost depuis le modèle
cat _modele_vhost.txt > $a2vhosts/$1
sed -i s/SERVERNAME/$1/g $a2vhosts/$1
sed -i s%PATH%$path/$1%g $a2vhosts/$1
#on ajoute le nouvel alias dans /etc/hosts (l'adresse peut être 127.0.0.1, suivant config)
sed -i "/127.0.1.1/s|$| $1|" /etc/hosts
#on telecharge drupal stable
drush dl drupal --destination=$path --package-handler=cvs
mv $path/drupal $path/$1
#on cree la base et l'utilisateur associe
echo "CREATE DATABASE $2; GRANT ALL ON $2.* TO '$dbuser'@'localhost' identified by 'maquette';FLUSH PRIVILEGES;" | mysql -uroot -pmysqladmin -u root -p
#on ajuste le fichier settings.php et on crée le dossier files
mkdir -m 777 $path/$1/sites/default/files
mv $path/$1/sites/default/default.settings.php $path/$1/sites/default/settings.php
x=mysql://username:password@localhost/databasename
y=mysqli://$dbuser:$dbpassword@localhost/$2
sed -i s%$x%$y%g $path/$1/sites/default/settings.php
chmod 755 $path/$1/sites/default/settings.php
#on relance apache et on passe sur l'interface web pour installer la base, renseigner les infos de base à la main ...
a2ensite $1
apache2ctl restart
read -p "Vas voir sur http://"$1"/install.php si j'y suis et reviens quand c'est fait !"
#et on repart
cd $path/$1
drush dl devel admin_menu --package-handler=cvs
drush disable color comment help
drush en devel path admin_menu
#On enleve (optionnel) les infos CVS
#find -name "CVS" -exec rm -rf {} \;
#on veut pouvoir modifier nos fichiers !
chown -R $user:$group $path/$1
et le modèle vhost :
ServerAdmin root@localhost
ServerName SERVERNAME
DocumentRoot PATH
<Directory PATH>
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/SERVERNAME.log combined
</VirtualHost>
