Révision 742e9ebd
Ajouté par Julien Enselme il y a presque 11 ans
bin/creation_sites_D7.sh | ||
---|---|---|
1 | 1 |
#!/bin/sh |
2 | 2 |
|
3 |
#Ce script est une automatisation de ce qui est détaillé ici : |
|
4 |
#https://forge.centrale-marseille.fr/projects/clubdrupal/wiki/Utilisation_de_Drupal_multi-site#Cr%C3%A9ation-du-site-drupal-7 |
|
5 |
#Ce script ne crée que des sites sur le sous domaine assos. |
|
6 |
|
|
7 |
|
|
8 |
#fonction de demande de mot de passe (entree cachee) |
|
9 |
# usage: pass=$(askpasswd "Tu me pretes ton mot de passe ?") |
|
10 |
askpasswd() { |
|
11 |
echo $1 >&2 |
|
12 |
echo -n ">" >&2 |
|
13 |
stty_avant=$(stty -g) |
|
14 |
stty -echo |
|
15 |
read p |
|
16 |
stty $stty_avant |
|
17 |
echo "$p" |
|
18 |
unset p |
|
19 |
} |
|
20 |
|
|
21 |
|
|
22 |
#Prend comme paramètre le nom du site |
|
23 |
#On génère le mot de passe |
|
24 |
#on se place dans le home de asso en début de script |
|
25 |
#les fichiers par défaut sont sur le bureau de assos |
|
3 |
# Ce script est une automatisation de ce qui est détaillé ici : |
|
4 |
#https://forge.centrale-marseille.fr/projects/clubdrupal/wiki/Utilisation_de_Drupal_multi-site#Cr%C3%A9ation-du-site-drupal-7 |
|
5 |
# Ce script ne crée que des sites sur le sous domaine assos. |
|
26 | 6 |
|
7 |
|
|
8 |
# Prend comme paramètre le nom du site |
|
9 |
# On génère le mot de passe |
|
10 |
# On se place dans le home de asso en début de script |
|
11 |
# Les fichiers par défaut sont sur le bureau de assos |
|
12 |
init_scripts.sh |
|
13 |
init_scripts_site.sh $1 |
|
14 |
|
|
15 |
|
|
16 |
######## Exceptions |
|
27 | 17 |
#On vérifie que le nom du site est bien passé en argument. |
28 | 18 |
if [ -z $1 ] |
29 | 19 |
then |
... | ... | |
32 | 22 |
exit 1 |
33 | 23 |
fi |
34 | 24 |
|
25 |
#si le nom contient '-' on arrête le script car les instructions concernant la |
|
26 |
#base de données ne supportent pas ce caractère. |
|
27 |
if $(echo $1 | grep -) |
|
28 |
then |
|
29 |
echo 'Le nom du site ne doit pas contenir le caractère -' |
|
30 |
exit 1 |
|
31 |
fi |
|
32 |
|
|
35 | 33 |
#On vérifie que la longueur du nom du site est <= 16 caractères. Sinon mysql ne peut pas créer l’utilisateur |
36 | 34 |
if [ $(echo $1 | wc -n) -le 16 ] |
37 | 35 |
then |
... | ... | |
39 | 37 |
exit 1 |
40 | 38 |
fi |
41 | 39 |
|
42 |
|
|
43 |
vers_home="/users/guest/assos" |
|
44 |
cd $vers_home |
|
45 |
|
|
46 |
#On récupère le nom du site donné en paramètre |
|
40 |
###### Initialisation |
|
41 |
cd $d7_dir |
|
42 |
db_passwd=`ask_password_bdd $nom_serveurbdd $user_bdd` |
|
43 |
site_passwd=`gen_password` |
|
47 | 44 |
nom_site=$1 |
48 | 45 |
|
49 |
site_rep="$vers_home/htmltest/sites/assos.centrale-marseille.fr.$1" |
|
50 |
site_settings="$site_rep/settings.php" |
|
51 |
|
|
52 |
settings_default="settings-D7-bddinde-template.php" |
|
53 |
template_settings="$vers_home/Desktop/$settings_default" |
|
54 |
|
|
55 |
nom_serveurbdd="myassos.serv.int" |
|
56 |
user_bdd="assos" |
|
57 |
|
|
58 |
#on récupère le mot de passe, je ne prétends pas qu’il s’agit de la meilleure méthode loin de là. |
|
59 |
#Pour ce faire, on va envoyer une requête mysql vide. |
|
60 |
mdp_assos="pourquemysqldemandepas" |
|
61 |
|
|
62 |
#requête mysql fantoche |
|
63 |
#l’option -h permet de sélectionner le serveur |
|
64 |
#l’option -e permet d’exécuter la commande mysql qui suit (on met le mdp après) |
|
65 |
while ! mysql -h $nom_serveurbdd -u $user_bdd -p$mdp_assos -e "" 2>/dev/null; |
|
66 |
do |
|
67 |
mdp_assos=$(askpasswd "Entrer le mot de passe la base de donnée MySQL :") |
|
68 |
echo "" |
|
69 |
done |
|
70 |
|
|
71 |
|
|
72 |
#on génère le mdp |
|
73 |
# *avec des caractères spéciaux*. On se protège du caractère / qui |
|
74 |
#signifie que l’expression régulière de sed est finie (voir plus bas). On boucle |
|
75 |
#tant que le mot de passe contient / |
|
76 |
mdp_site='/' |
|
77 |
taille_mdp=20 |
|
78 |
while echo "$mdp_site" | grep -Fq '/' |
|
79 |
do |
|
80 |
mdp_site=`dd if=/dev/urandom count=1 | uuencode -m - | head -n 2 | tail -n 1 | cut -c-$taille_mdp` |
|
81 |
done |
|
82 |
|
|
83 |
#On ajoute des précaution : |
|
46 |
|
|
47 |
# Précautions |
|
84 | 48 |
# - On teste si le dossier existe déjà, s’il n’existe pas, on s’arrête |
85 | 49 |
# - On vérifie que la base de données n’existe pas |
86 | 50 |
|
87 |
#Vérifie base de donnée |
|
88 |
if ! mysql -h $nom_serveurbdd -u $user_bdd -e "USE $nom_site" -p$mdp_assos 2>/dev/null
|
|
51 |
#Vérifie base de données
|
|
52 |
if mysql -h $db_server -u $db_user -e "USE $nom_site" -p$db_passwd 2>/dev/null
|
|
89 | 53 |
then |
90 |
#On vérifie pour le dossier |
|
91 |
if ! [ -d $site_rep ] |
|
92 |
then |
|
93 |
#on crée le dossier |
|
94 |
mkdir $site_rep |
|
54 |
echo "La base de donnée existe déjà" |
|
55 |
exit 1 |
|
56 |
fi |
|
95 | 57 |
|
96 |
#mysql (besoin du mot de passe assos) |
|
97 |
mysql -h $nom_serveurbdd -u $user_bdd -e "CREATE DATABASE $nom_site" -p$mdp_assos |
|
98 | 58 |
|
99 |
#la ligne suivante vient de http://www.siteduzero.com/tutoriel-3-613143-syntaxe-sql-et-premieres-commandes.html |
|
100 |
#voir là-bas pour les explications |
|
101 |
mysql -h $nom_serveurbdd -u $user_bdd -e "GRANT ALL PRIVILEGES ON $1.* TO '$nom_site'@'%' IDENTIFIED BY '$mdp_site'" -p$mdp_assos |
|
59 |
#On vérifie pour le dossier |
|
60 |
if [ -d $d7_site_dir ] |
|
61 |
then |
|
62 |
echo "Le dossier $site_rep existe déjà" |
|
63 |
exit 1 |
|
64 |
fi |
|
65 |
|
|
66 |
|
|
67 |
###### Main |
|
68 |
#on crée le dossier |
|
69 |
mkdir $d7_site_dir |
|
70 |
|
|
71 |
# on crée ce qu’il faut pour les sauvegardes |
|
72 |
mkdir $d7_backup_dir/$site_name |
|
73 |
date=$(date "+%Y-%m-%d-%Hh%Mm%Ss") |
|
74 |
touch $d7_backup_dir/$site_name/date.sql |
|
75 |
touch $d7_backup_dir/$site_name/date.sql |
|
76 |
touch $d7_backup_dir/$site_name/date.sql |
|
77 |
|
|
78 |
#mysql (besoin du mot de passe assos) |
|
79 |
mysql -h $db_server -u $db_user -e "CREATE DATABASE $nom_site" -p$db_passwd |
|
80 |
|
|
81 |
#la ligne suivante vient de http://www.siteduzero.com/tutoriel-3-613143-syntaxe-sql-et-premieres-commandes.html |
|
82 |
#voir là-bas pour les explications |
|
83 |
mysql -h $db_server -u $db_user -e "GRANT ALL PRIVILEGES ON $1.* TO '$site_name'@'%' IDENTIFIED BY '$site_passwd'" -p$db_passwd |
|
102 | 84 |
|
103 | 85 |
|
104 | 86 |
|
105 | 87 |
#on veut modifer le nom de la base de donnée (%%DBNAME%%), le nom de l’utilisateur (%%DBUSER%%), son mot de passe (%%DBPASS%%) et base_url (%%nomdusite%%) |
106 |
sed "s/\%\%DBUSER\%\%/$nom_site/ ; s/\%\%DBNAME\%\%/$nom_site/ ; s/\%\%DBPASS\%\%/$mdp_site/ ; s/\%\%nomsite\%\%/$nom_site/" < $template_settings > $site_settings |
|
107 |
|
|
108 |
#on crée le lien symbolique (on doit se placer dans le bon répertoire !) |
|
109 |
cd $site_rep |
|
110 |
cd ./../.. |
|
111 |
ln -s . $nom_site |
|
112 |
#on retourne dans home |
|
113 |
cd $vers_home |
|
114 |
|
|
115 |
#On affiche le lien |
|
116 |
echo "Suivez les instructions de http://assos.centrale-marseille.fr/$nom_site/install.php pour continuer." |
|
117 |
echo "Pressez entrée une fois les actions effectuées" |
|
118 |
read touche |
|
119 |
|
|
120 |
#On appelle init_var.sh |
|
121 |
cd $site_rep |
|
122 |
init_var.sh |
|
123 |
|
|
124 |
#On active piwik l’outil de statistique |
|
125 |
drush -y vset piwik_site_id "101" |
|
126 |
drush -y vset piwik_url_http "http://piwik.centrale-marseille.fr/" |
|
127 |
drush -y vset piwik_url_https "https://piwik.centrale-marseille.fr/" |
|
128 |
# active le cache local du javascript |
|
129 |
drush -y vset piwik_cache 1 |
|
130 |
drush -y vset piwik_visibility_roles "1" |
|
131 |
# active les stats pour anonymous et authentifié |
|
132 |
drush -y vset --format=json piwik_roles '{"1":0,"2":0}' |
|
133 |
drush -y vset piwik_page_title_hierarchy 1 |
|
134 |
# si la recherche locale est activée |
|
135 |
drush -y vset piwik_site_search 1 |
|
136 |
# on active le module |
|
137 |
drush -y en piwik |
|
138 |
|
|
139 |
#On met les bons droits unix |
|
140 |
chmod -R 755 $site_rep |
|
141 |
chmod 400 $site_settings |
|
142 |
|
|
143 |
#On donne les dernières instructions |
|
144 |
echo "Quelques dernières instructions :" |
|
145 |
echo "- Conseiller à l'administrateur de ne pas laisser les inscriptions ouvertes à son site" |
|
146 |
echo "- Donner à l'administrateur le lien des tutoriels écrits par le club Drupal " |
|
147 |
echo "\n" |
|
148 |
echo "Référencement du site" |
|
149 |
echo "- créer un contenu de type \"Site\" sur la page du projet multiassos" |
|
150 |
echo "- demander à l'administrateur du site de s’inscrire sur la liste de diffusion webmasters@listes.centrale-marseille.fr (l’inscription est automatique)" |
|
151 |
|
|
152 |
else |
|
153 |
echo "Le dossier $site_rep existe déjà" |
|
154 |
exit 1 |
|
155 |
fi |
|
156 |
else |
|
157 |
echo "La base de donnée existe déjà" |
|
158 |
exit 1 |
|
159 |
fi |
|
88 |
sed "s/\%\%DBUSER\%\%/$nom_site/ ; s/\%\%DBNAME\%\%/$nom_site/ ; s/\%\%DBPASS\%\%/$mdp_site/ ; s/\%\%nomsite\%\%/$nom_site/" < $d7_template_settings > $d7_site_settings |
|
89 |
|
|
90 |
#on crée le lien symbolique (on doit se placer dans le bon répertoire !) |
|
91 |
cd $d7_site_dir |
|
92 |
cd ./../.. |
|
93 |
ln -s . $site_name |
|
94 |
|
|
95 |
#On affiche le lien |
|
96 |
echo "Suivez les instructions de http://assos.centrale-marseille.fr/$nom_site/install.php pour continuer." |
|
97 |
echo "Pressez entrée une fois les actions effectuées" |
|
98 |
read touche |
|
99 |
|
|
100 |
#On appelle init_var.sh |
|
101 |
cd $d7_site_dir |
|
102 |
init_var.sh |
|
103 |
|
|
104 |
#on met les bons droits unix |
|
105 |
chmod -R 755 $d7_site_dir |
|
106 |
chmod 400 $d7_site_settings |
|
107 |
|
|
108 |
#On donne les dernières instructions |
|
109 |
echo "Quelques dernières instructions :" |
|
110 |
echo "- Conseiller à l'administrateur de ne pas laisser les inscriptions ouvertes à son site" |
|
111 |
echo "- Donner à l'administrateur le lien des tutoriels écrits par le club Drupal " |
|
112 |
echo "\n" |
|
113 |
echo "Référencement du site" |
|
114 |
echo "- créer un contenu de type \"Site\" sur la page du projet multiassos" |
|
115 |
echo "- demander à l'administrateur du site de s’inscrire sur la liste de diffusion webmasters@listes.centrale-marseille.fr (l’inscription est automatique)" |
Formats disponibles : Unified diff
Variables drupal