Wiki » Historique » Révision 68
Révision 67 (Patrice Nadeau, 2016-01-10 10:50) → Révision 68/87 (Patrice Nadeau, 2016-01-10 10:54)
h1. Drupal
{{TOC}}
h2. Configuration préalable
Un serveur openSUSE avec les options « LAMP » (Linux, Apache, MySQL, PHP) ainsi que Postfix
devrait déjà être installé.
h3. PHP
Les modules PHP supplémentaires suivants doivent être installés :
<pre><code class="bash">
zypper install php5-mbstring php5-gd php5-ftp php5-zlib pecl php5-pear
</code></pre>
h4. Permettre les modules via FTP
Voir #45
> Basé sur https://www.drupal.org/node/1608658
Voir le lien pour l’installation : [[guides_opensuse:ftp]]
h4. Module « file upload progress bar » de PHP
> Facultatif
Télécharger le module :
<pre><code class="bash">
pecl install uploadprogress
</code></pre>
Ajouter à */etc/php5/apache2/php.ini*
<pre><code class="bash">
extension=uploadprogress.so
</code></pre>
h3. 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
<pre><code class="bash">
mysql -u root -p
</code></pre>
Inscrire les commandes SQL suivantes :
<pre><code class="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;
</code></pre>
h2. 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
<pre><code class="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
</code></pre>
Créer le fichier _/etc/apache2/vhosts.d/vhost.conf_
<pre><code class="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>
</code></pre>
À partir d’un navigateur web : http://server/drupal
h3. 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 repertoires :
<pre><code class="bash">
chmod 0755 sites/default
chmod 0444 sites/default/settings.php
</code></pre>
h2. Personnalisation
h3. 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
h3. 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*
h3. 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">*
<pre><code class="bash">
#AllowOverride None
AllowOverride All
</code></pre>
Relire la configuration
<pre><code class="bash">
systemctl reload apache2.service
</code></pre>
h3. 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
<pre><code class="php">
<?php if ($breadcrumb): ?>
<div id="breadcrumb"><?php print $breadcrumb; ?></div>
<?php endif; ?>
</code></pre>
Il peux être nécessaire de relancer une maintenance Cron pour rafraîchir le cache.
h2. Modules supplémentaires
h3. CKEditor
Éditeur visuel HTML.
> Seras intégré à Drupal 8
h4. Installation
<pre><code class="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
</code></pre>
Faire l'activation dans Drupal, Modules
h3. 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
h4. 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*
h3. 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
h4. Installation
A partir du serveur :
<pre><code class="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
</code></pre>
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.
h4. 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é.
h4. 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.
h2. Maintenance
h3. Copie de sécurité
Faire une copie des fichiers et de la bd :
<pre><code class="bash">
cd /srv/www/htdocs
mysqldump -u username -p database > drupal.mysql
tar czf drupalbackup.tgz drupal.mysql drupal/
</code></pre>
h3. Récupération d’une copie de sécurité
<pre><code class="bash">
cd /srv/www/htdocs
tar xf drupalbackup.tgz
mysql -u root -p < drupal.mysql
</code></pre>
Remettre les permissions
<pre><code class="bash">
chmod 0755 /srv/www/htdocs/drupal/sites/default
chmod -R 0777 /srv/www/htdocs/drupal/sites/default/files
</code></pre>
h3. Mise à jour
Instructions sur un « update »
Mettre le site en mode maintenance (Management, Administration, Configuration, Developement, Maintenance mode)
À partir du serveur
<pre><code class="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
</code></pre>
Se brancher sur la page web http://server/update.php
Remettre en mode en ligne
h3. Mise a niveau
Instructions sur un « upgrade » de la version 7 à la version 8 (*en test*).
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é.
Installation de la nouvelle version
<pre><code class="bash">
cd /srv/www/htdocs
wget http://ftp.drupal.org/files/projects/drupal-8.0.2.tar.gz
tar -xvf drupal-8.0.2.tar.gz
mv drupal-8.0.2 drupal2
chown wwwrun:www -R drupal2
cd drupal2
cp sites/default/default.services.yml services.yml
cp sites/default/default.settings.php settings.php
</code></pre>
h3. 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
h2. Bogues
h3. 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
<pre><code class="BASH">
# ligne en probleme
db_create_table(’image_effect’, $schema[’image_effects’]);
# remplacer par
db_create_table(’image_effects’, $schema[’image_effects’]);
</code></pre>
Arrêter Apache
<pre><code class="bash">
systemctl stop apache2.service
</code></pre>
Lancer MySQL
<pre><code class="bash">
mysql -u
</code></pre>
Changer le nom de la table
<pre><code class="sql">
use drupal;
rename table image_effect to image_effects;
quit;
</code></pre>
Relancer apache
<pre><code class="bash">
systemctl start apache2.service
</code></pre>
h2. Accès à partir d'Internet
h3. 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.
h3. « Proxy » sur le serveur Apache
Voir l'article [[guides_opensuse:apache#Serveurs virtuels]] pour la redirection.
h3. 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. :
<pre><code class="php">
$base_url = 'http://drupal.domain.tld';
</code></pre>
> Ne pas ajouter de « slash » à la fin.