Installation de drupal en mode multisite et authentification + authorisation via fédération d'identité shibboleth .
recuperation de l'archive courante et preparation de l'arborescence
[root@bois drup]# pwd /var/www/drup/drup [root@bois drup]# wget https://ftp.drupal.org/files/projects/drupal-8.3.1.tar.gz --2017-04-20 11:12:38-- https://ftp.drupal.org/files/projects/drupal-8.3.1.tar.gz [root@bois drup]# tar xvfz drupal-8.3.1.tar.gz [root@bois drup]# ln -s drupal-8.3.1 drupal
drupal 8 a besoin de php 5.5, alors que c'est 5.1 qui est livré par defaut en centos 7
on commence par retirer les packages php 5.4 livré en centos 7 de base :
# yum remove php-common Supprimé : php-common.x86_64 0:5.4.16-42.el7 Dépendances supprimées : php.x86_64 0:5.4.16-42.el7 php-cli.x86_64 0:5.4.16-42.el7 php-fpm.x86_64 0:5.4.16-42.el7 php-gd.x86_64 0:5.4.16-42.el7 php-intl.x86_64 0:5.4.16-42.el7 php-ldap.x86_64 0:5.4.16-42.el7 php-mbstring.x86_64 0:5.4.16-42.el7 php-mcrypt.x86_64 0:5.4.16-7.el7 php-mysql.x86_64 0:5.4.16-42.el7 php-pdo.x86_64 0:5.4.16-42.el7 php-pear.noarch 1:1.9.4-21.el7 php-pecl-zendopcache.x86_64 0:7.0.5-2.el7 php-process.x86_64 0:5.4.16-42.el7 php-soap.x86_64 0:5.4.16-42.el7 php-xml.x86_64 0:5.4.16-42.el7 php-xmlrpc.x86_64 0:5.4.16-42.el7
puis on ajoute les repositories delivrant du php 5.5
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
on peux alors installer les modules php en 5.5 necessaires
# yum install httpd php55w php55w-opcache php55w-mbstring php55w-gd php55w-xml php55w-pear php55w-fpm php55w-mysql Installé : php55w.x86_64 0:5.5.38-1.w7 php55w-fpm.x86_64 0:5.5.38-1.w7 php55w-gd.x86_64 0:5.5.38-1.w7 php55w-mbstring.x86_64 0:5.5.38-1.w7 php55w-mysql.x86_64 0:5.5.38-1.w7 php55w-opcache.x86_64 0:5.5.38-1.w7 php55w-pear.noarch 1:1.10.1-1.w7 php55w-xml.x86_64 0:5.5.38-1.w7 Dépendances installées : php55w-cli.x86_64 0:5.5.38-1.w7 php55w-common.x86_64 0:5.5.38-1.w7 php55w-pdo.x86_64 0:5.5.38-1.w7 php55w-process.x86_64 0:5.5.38-1.w7
[root@bois drupal]# mkdir sites/din [root@bois drupal]# mkdir sites/dex [root@bois drupal]# mkdir sites/din/files [root@bois drupal]# mkdir sites/dex/files [root@bois drupal]# locate default.settings.php /var/www/drup/drup/drupal-8.3.1/sites/default/default.settings.php [root@bois drupal]# cp /var/www/drup/drup/drupal-8.3.1/sites/default/default.settings.php sites/din/settings.php [root@bois drupal]# cp /var/www/drup/drup/drupal-8.3.1/sites/default/default.settings.php sites/dex/settings.php [root@bois default]# cp default.services.yml ../din/services.yml [root@bois default]# cp default.services.yml ../dex/services.yml
declarations des sites dans sites.php
[root@bois sites]# cp example.sites.php sites.php [root@bois sites]# vim sites.php
on crée des liens vers les sous-sites via des liens
[root@bois drupal]# pwd /var/www/drup/drup/drupal [root@bois drupal]# ln -s ../drupal din [root@bois drupal]# ls -l total 236 -rw-r--r-- 1 root root 262 19 avril 18:07 autoload.php -rw-r--r-- 1 root root 2309 19 avril 18:07 composer.json -rw-r--r-- 1 root root 152480 19 avril 18:07 composer.lock drwxr-xr-x 12 root root 4096 19 avril 18:07 core lrwxrwxrwx 1 root root 9 3 mai 16:37 dex -> ../drupal -rw-r--r-- 1 root root 1346 19 avril 18:07 example.gitignore lrwxrwxrwx 1 root root 9 3 mai 16:39 din -> ../drupal ...
ou depuis le repertoire cible créé le lien en dur depuis la racine
[root@bois ex]# ln -s . /var/www/drup/drup/drupal/dex [root@bois drupal]# ls -l dex lrwxrwxrwx 1 root root 1 4 mai 11:03 dex -> .
il faut alors aller sur http://drup.domain.fr/drup/drupal/din/ pour installer le sous-sites “din” et en admin ForUnivPSaccesadminpoint pour l'adminisrarer
il faut s'assurer que le .htaccess à la racine est bien executé et suis les liens symboliques dans notre mode multi-site
activation .htaccess
<Directory /var/www/drup/drup/drupal> AllowOverride All </Directory>
dans le .htaccess à la racine du deploiement /var/www/drup/drup/drupal
# Follow symbolic links in this directory. Options +FollowSymLinks
Preparation de la configuration apache + anticipation sur les <Location> pour la suite avec shibboleth
[root@cms ]# cat /etc/httpd/conf.d/dup.conf <VirtualHost 157.158.11.129:80> ServerName dup.tem-tsp.eu ServerAlias dup.* DocumentRoot /var/www/dup/drupal ErrorLog logs/dup-error_log CustomLog logs/dup-access_log common <Location /> ShibRequestSetting applicationId dup </Location> #https://wiki.aai.niif.hu/index.php?title=DrupalShibbolethReadmeDev <Location /site1> AuthType Shibboleth ShibRequireSession Off # the following single line is only valid for Shib2 ShibUseHeaders On require shibboleth </Location> <Location /site2> AuthType Shibboleth ShibRequireSession Off # the following single line is only valid for Shib2 ShibUseHeaders On require shibboleth </Location> </VirtualHost> #idem pour https <VirtualHost 157.158.11.129:443> ServerName dup.tem-tsp.eu ServerAlias dup.* DocumentRoot /var/www/dup/drupal ErrorLog logs/ssl_dup-error_log CustomLog logs/ssl_dup-access_log common LogLevel warn SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/pki/tls/certs/cert-10607--.tem-tsp.eu.pem SSLCertificateKeyFile /etc/pki/tls/private/tem-tsp_star_nop.key SSLCertificateChainFile /etc/pki/tls/certs/chain-10607--.tem-tsp.eu.pem SSLCACertificateFile /etc/pki/tls/certs/add_trust_external_ca_root.pem <Location /> ShibRequestSetting applicationId dup </Location> ... </VirtualHost>
https://www.drupal.org/docs/7/install/step-2-create-the-database
sur le serveur mysql, preparer la database et les droits d'acces
MariaDB [(none)]> CREATE DATABASE drupcore CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> CREATE USER drupcoreuser@localhost IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupcore.* TO 'drupcoreuser'@'localhost' IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.00 sec)
une autre database pour le sous-site “din”
MariaDB [(none)]> CREATE DATABASE drupdin CHARACTER SET utf8 COLLATE utf8_general_ci; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> CREATE USER drupdinuser@localhost IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupdin.* TO 'drupdineuser'@'localhost' IDENTIFIED BY 'secret'; Query OK, 0 rows affected (0.00 sec)
informations a retenir quand on lancera l'installation des sites via l'interface web drupal (drupcore database alias Drupal UPS (Dups In et Ex) core avec WanpassDrupCoreUserfullPoint) . .
sur le tableau de bord (admin/reports/status) , 2 alertes importantes apparaissent
on corrige en positionnant dans setting.php du site:
$settings['trusted_host_patterns'] = array( '^.+domain\.fr$', '^localhost$',
* Example: * @code * $config_directories = array( * CONFIG_SYNC_DIRECTORY => '/directory/outside/webroot', * ); * @endcode $config_directories = array( CONFIG_SYNC_DIRECTORY => '/var/www/drup-drupalSyncDin', );
Creation du site primaire (ici dup.tem-tsp.eu) dans la sous arborescence de sites
preparation du fichier settings.php depuis une copie du default et création du repertoir files, le tout en acces provisoirement largement ouverts pour poursuivre l'installation via la navigateur
[root@cms /var/www/dup/drupal/sites]# mkdir dup.tem-tsp.eu ; cd dup.tem-tsp.eu [root@cms dup.tem-tsp.eu]# cp -a ../default/default.settings.php . [root@cms dup.tem-tsp.eu]# cp default.settings.php settings.php [root@cms dup.tem-tsp.eu]# mkdir files [root@cms dup.tem-tsp.eu]# chmod 666 settings.php [root@cms dup.tem-tsp.eu]# chmod 777 files
aller sur http://dup.tem-tsp.eu/ (pointra au final sur http://dup.tem-tsp.eu/install.php?profile=standard&locale=en )
ici nous faisons usage d'une plateforme multisites en mode sous repertoires, donc le site site1 sera en url de type http://dup.tem-tsp.eu/site1 . Pour cela il faut creer un sous repertoire de type : dup.tem-tsp.eu.site1
[root@cms sites]# mkdir dups.tem-tsp.eu.site1 [root@cms sites]# cd dups.tem-tsp.eu.site1 [root@cms dup.tem-tsp.eu.site1]# cp ../default/default.settings.php . [root@cms dup.tem-tsp.eu.site1]# cp default.settings.php settings.php [root@cms dup.tem-tsp.eu.site1]# chmod 666 settings.php [root@cms dup.tem-tsp.eu.site1]# mkdir files [root@cms dup.tem-tsp.eu.site1]# chmod 775 files/ [root@cms dup.tem-tsp.eu.site1]# chgrp apache files/
lien indispensable pour l'acces a l'url /sites1 pointe bien sur l'arborescence dup.tem-tsp.eu.site1
[root@cms dup.tem-tsp.eu.site1]# ln -s . /var/www/dups/drupal/site1
Installation du site secondaire via l'URL http://dup.tem-tsp.eu/site1 qui pointera vers install.php la premiere fois .
ensuite il faut retablir des droits d'acces aux fichiers de settings plus fermés !
[root@cms dup.tem-tsp.eu.site1]# chgrp apache settings.php [root@cms dup.tem-tsp.eu.site1]# chmod 640 settings.php [root@cms dup.tem-tsp.eu.site1]# ls -l total 52 -rw-r--r-- 1 root root 23770 Dec 15 22:35 default.settings.php drwxrwxr-x 3 root apache 4096 Dec 15 22:38 files -rw-r----- 1 root apache 24094 Dec 15 22:38 settings.php
phpsession non recommandé, pb avec sqlite, finalement usage de memcached
install sur centos : https://www.tecmint.com/install-memcached-on-centos-7/
[root@mut config]# yum install memcached [root@mut config]# yum install libmemcached [root@mut config]# yum install php-memcache [root@mut config]# grep 127 /etc/sysconfig/memcached OPTIONS="-l 127.0.0.1 -U 0" [root@mut config]# systemctl restart memcached [root@mut config]# systemctl enable memcached
'store.type' => 'memcache', 'memcache_store.servers' => [ [ ['hostname' => 'localhost'], ], ], 'memcache_store.prefix' => 'simpleSAMLphp', 'memcache_store.expires' => 36 * (60 * 60), // 36 hours.
galere avec sqlite , finalement usage de memcached ci-dessus
[root@bois config]# vim config.php /* 'store.type' => 'phpsession', */ 'store.type' => 'sql', /*'store.sql.dsn' => 'sqlite:/path/to/sqlitedatabase.sq3',*/ 'store.sql.dsn' => 'sqlite:/var/www/dip/simplesaml/sqlitedb-dipsaml.sq3',
ne pas créer le fichier, i lle sera automatiquement
[root@mut config]# ls -ltr /var/www/dip/simplesaml/sqlitedb-dipsaml.sq3 -rw-r--r-- 1 apache apache 10240 10 août 11:16 /var/www/dip/simplesaml/sqlitedb-dipsaml.sq3
ave les droits d'acces en ecriture a apache sur la racine
[root@mut config]# chown root:apache /var/www/dip/simplesaml/ [root@mut config]# chmod 775 /var/www/dip/simplesaml/
en v7.X nous faisions usage du module drupal shib_auth qui permet une authentification shibboleth, mais aussi une affectation de role basé sur attributs shibboleth .
[root@cms modules]# wget http://ftp.drupal.org/files/projects/shib_auth-7.x-4.0.tar.gz [root@cms modules]# tar xvfz shib_auth-7.x-4.0.tar.gz
activation et parameterage du module via l'interface web , detaiuls, cf https://wiki.aai.niif.hu/index.php?title=DrupalShibbolethReadmeDev
[root@mut tmp]# wget https://ftp.drupal.org/files/projects/simplesamlphp_auth-8.x-3.1.tar.gz [root@mut dupc]# cd modules/ [root@mut modules]# ls README.txt [root@mut modules]# less README.txt [root@mut modules]# mkdir contrib [root@mut modules]# cd contrib/ [root@mut contrib]# tar xvfz /tmp/simplesamlphp_auth-8.x-3.1.tar.gz simplesamlphp_auth/ simplesamlphp_auth/README.md
attention apres telechargement et deploiement, la page module/extention affiche que des dependances sont manquantes (module grisé)
Allows users to authenticate to a remote SAML identity provider (IdP) via a locally configured SimpleSAMLphp service point (SP). Nom système : simplesamlphp_auth Version : 8.x-3.1 Requiert : UserSystemExternalauth (manquant)
[root@mut tmp]# wget https://ftp.drupal.org/files/projects/externalauth-8.x-1.1.tar.gz Sauvegarde en : «externalauth-8.x-1.1.tar.gz» 100%[============================================================================================================>] 16 758 --.-K/s ds 0,002s 2019-08-10 13:42:31 (8,61 MB/s) - «externalauth-8.x-1.1.tar.gz» sauvegardé [16758/16758] [root@mut tmp]# cd - /var/www/dip/dupc/modules/contrib [root@mut contrib]# tar xvfz /tmp/externalauth-8.x-1.1.tar.gz externalauth/ externalauth/README.txt externalauth/externalauth.info.yml
sur https://dip.ip-paris.net/dupc/admin/modules ⇒ installer externalauth
Le module External Authentication a été activé. 1 fichier de traduction importé. 0 traductions ont été ajoutées, 3 traductions ont été mises à jour et 0 traductions ont été supprimées.
puis “installer” le module SimpleSAMLphp Authentication
SimpleSAMLphp module requires the simplesamlphp library, version 1.17.2 or later. See README file for installation instructions.
⇒ il faut positioner le chemin de notre installation simplesamlphp en dur dans le fichier settings.php de notre site (ou utiliser composer …)
root@mut dupc]# grep simplesaml sites/default/settings.php $settings['simplesamlphp_dir'] = '/var/www/dip/simplesaml';
on relance l'install :
The SimpleSAMLphp Authentication module disabled the user registration. You can manually enable it again in the Account settings. Message d'état Le module SimpleSAMLphp Authentication a été activé. 1 fichier de traduction importé. 1 traductions ont été ajoutées, 5 traductions ont été mises à jour et 0 traductions ont été supprimées.
puis configuration de l'auth simpleSAMLphp
https://dip.ip-paris.net/dupc/admin/config/people/simplesamlphp_auth
encore en candidate release en Mai 2017 : https://www.drupal.org/node/2622724
dans l'installer web de module http://drup.domain.fr/drup/drupal/admin/modules/install on met le lien vers la RC2 de ce module https://ftp.drupal.org/files/projects/simplesamlphp_auth-8.x-3.0-rc2.tar.gz
[root@wood drupal]# chown apache modules/
attention apres telechargement et deploiement, la page module/extention affiche que des dependances sont manquantes (module grisé)
SimpleSAMLphp Authentication Allows users to authenticate to a remote SAML identity provider (IdP) via a locally configured SimpleSAMLphp service point (SP). Nom système : simplesamlphp_auth Version : 8.x-3.0-rc2 Requiert : UserSystemExternalauth (manquant)
installation de https://www.drupal.org/project/externalauth
External Authentication Helper module to authenticate users using an external site / service and storing identification details Nom système : externalauth Version : 8.x-1.0 Requis par : SimpleSAMLphp Authentication (désactivé)
apres activation de ces 2 modules on reçoit cette alerte
RedCross: SimpleSAMLphp module requires the simplesamlphp library. See README file for installation instructions. GreenCheck: Le module External Authentication a été activé. Un fichier de traduction importé. 0 traductions ont été ajoutées, 2 traductions ont été mises à jour et 0 traductions ont été supprimées.
il faut positioner le chamin de notre installation simplesamlphp en dur dans le fichier settings.php de notre site (ou utiliser composer …)
# grep simplesamlphp sites/default/settings.php $settings['simplesamlphp_dir'] = '/var/www/drup/simplesaml'; Le module SimpleSAMLphp Authentication a été activé.
http://www.drupalfacile.org/question/comment-installer-drush-8-pour-drupal-8
# wget https://github.com/drush-ops/drush/releases/download/8.1.11/drush.phar # cp drush.phar /usr/local/bin/drush
il faut executer drush depuis le repertoire web où est installé drupal, sinon :
# /usr/local/bin/drush en securelogin Command pm-enable needs a higher bootstrap level to run - you will need to invoke drush from a more functional Drupal [error] environment to run this command. The drush command 'en securelogin' could not be executed. [error]
ici on install et enable un module qui force le login en https
[root@bois drupal]# /usr/local/bin/drush en securelogin securelogin was not found. [warning] The following projects provide some or all of the extensions not found: [ok] securelogin Would you like to download them? (y/n): y Project securelogin (8.x-1.4) downloaded to /var/www/drup/drupal-8.3.1/modules/securelogin. [success] The following extensions will be enabled: securelogin Do you really want to continue? (y/n): y securelogin was enabled successfully.