Projet

Général

Profil

Wiki » Historique » Révision 86

Révision 85 (Patrice Nadeau, 2018-04-07 16:06) → Révision 86/87 (Patrice Nadeau, 2021-03-26 12:23)

# Drupal 

 {{lastupdated_at}} {{lastupdated_by}} 

 > Instructions pour la version 7 
 > [[8|Instructions pour Drupal 8]] 
 --- 

 {{TOC}} 


 ## Configuration préalable 

 Un serveur openSUSE avec les options « LAMP » (Linux, Apache, MySQL, PHP) ainsi que Postfix 
 devrait déjà être installé. 

 ### PHP 

 Les modules PHP supplémentaires suivants doivent être installés : 

 ```bash 
 zypper install php5-mbstring php5-gd php5-ftp php5-zlib pecl php5-pear 
 ``` 

 #### Permettre les modules via FTP 

 Voir #45 

 > Basé sur https://www.drupal.org/node/1608658 

 Voir le lien pour l’installation : [[guides_opensuse:ftp]] 

 #### Module « file upload progress bar » de PHP 

 > Facultatif 

 Télécharger le module : 

 ```bash 
 pecl install uploadprogress 
 ``` 

 Ajouter à **/etc/php5/apache2/php.ini** 

 ```bash 
 extension=uploadprogress.so 
 ``` 

 ### Préparation de MySQL 

 Choisir et noter les 3 items suivants : 

 * _drupal_db_ : nom voulu de la base de donnés de Drupal 
 * _drupal_user_ : nom voulu pour l’usager MySQL 
 * _drupal_password_ : mot de passe voulu pour l’usager MySQL 

 À partir du serveur : 

 > root est l’usager « root » de MySQL 

 ```bash 
 mysql -u root -p 
 ``` 

 Inscrire les commandes SQL suivantes : 

 ```sql 
 create database drupal_db character set utf8; 
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES ON drupal_db.* TO 'drupal_user'@'localhost' IDENTIFIED BY 'drupal_password'; 
 COMMIT; 
 quit; 
 ``` 

 ## Installation de Drupal 

 > Les fichiers sont installés dans */srv/www/htdocs/drupal* 

 À partir d’un navigateur web, allez sur le site https://drupal.org/project/drupal. 
 Choisir le fichier « tar.gz » et copier le lien pour l’insérer dans la commande _wget_ plus bas. 
 À partir du serveur : 

 > Exemple avec la version 7.38 

 ```bash 
 cd /srv/www/htdocs 
 wget http://ftp.drupal.org/files/projects/drupal-7.38.tar.gz 
 tar xvf drupal*.tar.gz 
 rm drupal*.tar.gz 
 mv drupal-7.38 drupal 
 cd drupal 
 cp sites/default/default.settings.php sites/default/settings.php 
 chmod 0777 sites/default sites/default/settings.php 
 ``` 

 Créer le fichier **/etc/apache2/vhosts.d/vhost.conf** 

 ```bash 
 <VirtualHost *:80> 
     # La ligne suivante est nécessaire seulement si plusieurs site web son présents sur le même serveur. 
     ServerName drupal.yourdomain.com 
     DocumentRoot /srv/www/htdocs/drupal 

     <Directory "/srv/www.htdocs/drupal"> 
         Options Indexes ExecCGI FollowSymLinks 
         AllowOverride None 
         Order deny,allow 
         Require all granted 
     </Directory> 
 </VirtualHost> 
 ``` 

 À partir d’un navigateur web : http://server/drupal 

 ### Sécurité 

 > Le fichier **sites/default/settings.php** contient les noms de la BD, de l’usager et de son mot de passe en texte. 

 Changer les droits des fichier et répertoires : 

 ```bash 
 chmod 0755 sites/default 
 chmod 0444 sites/default/settings.php 
 ``` 

 ## Personnalisation 

 ### Logo 

 À partir de la page princpale, *Appearance* 
 Dans le thème par défaut, choisir *Settings, TOGGLE DISPLAY* 
 Section *LOGO IMAGE SETTINGS*, enlever le crochet pour l'utilisation du logo par défaut 
 Télécharger le logo voulu 

 ### Type de fichier permis 

 A partir de Drupal Management, Administration > Structure > Content types 

 * Choisir le type de contenu 
 * Choisir _Edit_ pour le _FIELD TYPE_ *File* 

 ### Activation des « clean URL » 

 Les liens seront affichés comme _example.com/user_ au lieu de _example.com/?q=user_. 

 > Le module Apache _rewrite_ doit être installé et actif 

 A partir de Drupal Administration, Configuration > Clean URLs 

 * Faire le test 
 * Activer l'option 

 Dans le cas d'une erreur, modifier la configuration d'Apache 

 Fichier **/etc/apache2/default-server.conf**, section **<Directory "/srv/www/htdocs">** 

 ```bash 
 #AllowOverride None 
 AllowOverride All 
 ``` 

 Relire la configuration 

 ```bash 
 systemctl reload apache2.service 
 ``` 

 ### Retrait du lien « Home » 

 La variable **$breadcrumb** est utilisée dans le fichier **page.tpl.php** du thème. 
 Enlever les 3 lignes correspondantes a son impression 

 Ex. : Thème Bartik, fichier __themes/bartik/templates/page.tpl.php__, enlever 

 ```php 
 <?php if ($breadcrumb): ?> 
    <div id="breadcrumb"><?php print $breadcrumb; ?></div> 
 <?php endif; ?> 
 ``` 

 Il peux être nécessaire de relancer une maintenance Cron pour rafraîchir le cache. 

 ## Modules supplémentaires 

 ### CKEditor 

 Éditeur visuel HTML. 

 > Seras intégré à Drupal 8 

 #### Installation 

 ```bash 
 cd /srv/www/htdocs 
 wget http://ftp.drupal.org/files/projects/ckeditor-7.x-1.16.tar.gz 
 tar -xvf ckeditor-7.x-1.16.tar.gz 
 mv ckeditor/ drupal/modules/ 
 rm ckeditor-7.x-1.16.tar.gz 
 ``` 

 Faire l'activation dans Drupal, Modules 

 ### Gallery Formater 

 Module pour la présentation de photos. 

 Sélectionner le fichier à partir de http://drupal.org/project/galleryformatter 
 Installer en mode manuel (voir la section précédente) 
 A partir de Drupal : Management, Administration, Modules  

 * Sélectionner le module et sauvegarder 

 #### Créer un nouveau type de contenu 

 Administration, Structure, Contents types, Gallery, onglet *MANAGE FIELDS* 

 * Ajouter un champ de type *Image* 

 Éditer le champ et dans la section *Image field settings* choisir *unlimited* pour le nombre de valeurs 

 Administration, Structure, Contents types, Gallery, onglet *MANAGE DISPLAY* 

 * Pour le champ _Image_, choisir le format *JQuery Gallery* 

 ### GeSHi Filter 

 Modules d’affichage de code 
 Ce module est basé sur GeSHi et supporte plus de 200 langages. 

 > Ne fonctionne pas avec avec les éditeurs de type WYSIWYG. 

 3 solutions existent pour contourner ce problème : 

 * L’utilisation de Wysiwyg Geshi 

     > Je ne l’ais pas essayé. 

 * La définition d’un nouveau type de format texte sans éditeur 
 * La définition d’un nouveau type de champ à ajouter dans les documents 

 #### Installation 

 A partir du serveur : 

 ```bash 
 cd /srv/www/htdocs/drupal/modules 
 wget http://ftp.drupal.org/files/projects/libraries-7.x-2.2.tar.gz 
 tar -xvf libraries-7.x-2.2.tar.gz 
 rm libraries-7.x-2.2.tar.gz 

 # 
 wget http://ftp.drupal.org/files/projects/geshifilter-7.x-1.2.tar.gz 
 tar xvf geshifilter-7.x-1.2.tar.gz 
 rm geshifilter-7.x-1.2.tar.gz 
 # 
 cd ../sites/all/librairies 
 # La version doit etre 1.0.x (la version 1.1.x ne fonctionneras pas 
 wget http://sourceforge.net/projects/geshi/files/geshi/GeSHi%201.0.8.11/GeSHi-1.0.8.11.tar.gz 
 tar xvf GeSHi-1.0.8.11.tar.gz 
 rm GeSHi-1.0.8.11.tar.gz 
 ``` 

 Dans la gestion des modules (Home, Administration, Modules), activer 

 * Filters 
 ** GeSHi field 
 ** GeSHi Filter 
 * Libraries 

 Dans la page d’administration, sélectionner l’onglet INDEX, l’option GeSHi Filter apparaitra. 

 * GENERAL SETTINGS 
 Les option pour afficher le numéro de ligne peux être choisis ainsi que des options plus avancées 
 * LANGUAGES 
 Activer/désactiver seulement les langages nécessaires. 
 S’assurer d’avoir des «tags» de définis pour chaque langage. 
 * FILTER CONFLICTS 
 Vérifier qu’il n’y a pas de conflit. 

 Dans la page d’administration, Configuration, Content authoring, Text formats. 
 Choisir Full HTML, activer le filtre GeSHi. 
 Déplacer l’ordre de traitement de ce filtre en dernier. 

 #### Nouveau format texte 

 Création du nouveau format texte sans éditeur associé. 
 Home » Administration » Configuration » Content authoring 

 * Text formats 
 Ajouter un format texte Code 
      * Roles Admin 
         anonymous user 
         authenticated user 
      * Enabled filters GeSHi 
      * Wysiwyg profiles 
          S’assurer que le format Code n’as pas d’éditeur associé. 

 #### Nouveau type de champ 

 Création d’un nouveau champ. 
 Administration » Structure 
 Choisir le type de contenu et manage fields. 
 Ajouter une nouveau champ _Code_ de type *GeSHi*. 
 Un écran d’information sur le champ apparaitra. On peux y définir le langages par defaut 
 et le nom de champ disponibles. 
 Répéter pour les autres type de contenu, si nécessaire. 

 ## Maintenance 

 ### Copie de sécurité 

 Faire une copie des fichiers et de la bd : 

 ```bash 
 cd /srv/www/htdocs 
 mysqldump -u username -p database > drupal.mysql 
 tar czf drupalbackup.tgz drupal.mysql drupal/ 
 ``` 

 ### Récupération d’une copie de sécurité 

 ```bash 
 cd /srv/www/htdocs 
 tar xf drupalbackup.tgz 
 mysql -u root -p < drupal.mysql 
 ``` 

 Remettre les permissions 

 ```bash 
 chmod 0755 /srv/www/htdocs/drupal/sites/default 
 chmod -R 0777 /srv/www/htdocs/drupal/sites/default/files 
 ``` 

 

 ### Mise à jour 

 Instructions sur un « update » 

 1. Mettre le site en mode maintenance (Management, Administration, Configuration, Developement, Maintenance mode) 
 1. 

 À partir du serveur 

 ```bash 
 cd /srv/www/htdocs 
 wget http://ftp.drupal.org/files/projects/drupal-x.xx.tar.gz 
 tar -xvf drupal-*.tar.gz 
 cp -R drupal-x.y/* drupal-x.y/.htaccess drupal 
 rm -r drupal-x.y 
 rm drupal-x.xx.tar.gz 
 ``` 
 1. 

 Se brancher sur la page web http://server/update.php 
     1. 
 Remettre en mode en ligne 

 

 ### Mise a niveau 

 > En cours de documentation 

 Instructions sur un « upgrade »  

 https://www.drupal.org/upgrade/migrate 

 Une nouvelle installation de Drupal 8 doit être faite et ensuite une migration vers le nouveau site seras effectué. 


 ### Mise à jour des modules 

 Mode manuel (sans FTP) 
 À partir du serveur 

 * Télécharger dans le dossier sites/all/modules 
 * Décompresser 

 À partir d’un navigateur web : http://server/drupal/update.php 

 ## Bogues 

 ### Configuration du module Image (core) 

 PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 
 Editer le fichier *drupal/modules/images.image.install*, ligne 231 

 ```bash 
 # ligne en probleme 
 db_create_table(’image_effect’, $schema[’image_effects’]); 
 # remplacer par 
 db_create_table(’image_effects’, $schema[’image_effects’]); 
 ``` 

 Arrêter Apache 

 ```bash 
 systemctl stop apache2.service 
 ``` 

 Lancer MySQL 

 ```bash 
 mysql -u 
 ``` 

 Changer le nom de la table 

 ```sql 
 use drupal; 
 rename table image_effect to image_effects; 
 quit; 
 ``` 

 Relancer apache 

 ```bash 
 systemctl start apache2.service 
 ``` 

 ## Accès à partir d'Internet 

 ### NAT dans le pare-feu  

 > Cette étape dépens du pare-feu utilisé. 

 Il s'agit de rediriger le port 80 externe vers le port 80 interne. 
 Cette configuration est fort probablement déjà en place si un serveur web accessible de l'internet existe. 

 ### « Proxy » sur le serveur Apache 

 Voir l'article [[guides_opensuse:apache#Serveurs virtuels]] pour la redirection. 

 ### Configurer Drupal 

 Seulement nécessaire si la redirection est faite vers un autre serveur. 

 >Sans cette étape, le contenu des pages risque de mal s'afficher à partir de l'internet. 

 Dans le fichier _sites/default/settings.php_ modifier la ligne *$base_url* 
 Ex. : 

 ```php 
 $base_url = 'http://drupal.domain.tld'; 
 ``` 
 > Ne pas ajouter de « slash » à la fin.