- Accueil
- Info légales
- Aide (FAQ)
- Les tags de ce site
- Bloc note
- Articles techniques
- Notes system
- Divers articles
- Drupal
- Notes ITIL 2007
- Notes MS
- Dans le quartier...
- Emploi
- Recettes de cuisine et adresses gourmandes
- mes applis ubuntu préferées
- Divers acronymes du monde social
- Internet 2018
- P2 meublé à louer - quartier du Poteau 75018
- apcos - réseaux sociaux et outils
- Articles techniques
- Divers liens
- Fun
- Mon CV IT
- Nouveautés
Installer drupal 8 et drush 8.1 sur un Pi - test 2 (drupal composer)
Sur ce pi sous raspbian jessie, il y a apache2 + nginx 1.6.2, composer, suite à install (via ansible) de drupal-pi (pas à jour et trop ancien). On va installer un Drupal 8 (en multi site) et drush 8.1.11
conf mysql
pour full utf8, ajout dans: /etc/mysql/my.cnf des lignes
[mysqld]
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=true
Création base drucomp (full utf8) avec nom user drucomp et pw drucomp :
$ mysql -u root -p
mysql> CREATE DATABASE IF NOT EXISTS drucomp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> CREATE USER drucomp IDENTIFIED BY 'drucomp';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON drucomp.* TO 'drucomp'@'localhost' IDENTIFIED BY 'drucomp';
mysql> FLUSH PRIVILEGES;
mysql> \q
conf srv web (hotes virtuels)
vérifier /etc/hosts puis
créer l'hote virtuel dans nginx (ici on copie une conf):
cd /etc/nginx/sites-available ; sudo cp druc1 druc2
sudo ln -s sites-available/druc2 sites-enabled/druc2
ou utiliser par ex
server {
listen 80;
listen [::]:80;
server_name druc1;
#
root /home/pi/drucomp/web;
# index index.html;
#
location / {
try_files $uri $uri/ =404;
}
}
Modifier cette conf (sudo vi druc2) puis:
sudo service nginx reload ; sudo service nginx restart ; sudo service nginx status
le projet
On ne mettra pas de données dans drucomp (dont les fichiers seront à web/sites/default).
On va créer 2 sous-sites, nommés druc1 et druc2 (en web/sites/drucx), qui vont partager le meme code php. Pour ces sites, soit on créee d'autres db, soit on héberge leurs tables dans drucomp, avec les préfixes sx_ (à préciser dans les settings.php). Ne pas oublier les droits sur les .yml
-> Dans web/sites/all/drush (dossier créé), j'ai mis les alias.
-> créer des dossiers pour les conf (chown -R pi:www-data) drucomp/config/sync + drucomp/config/sync1 + drucomp/config/sync2...
commandes
composer create-project drupal-composer/drupal-project:8.x-dev nom-du-projet-à-créer --stability dev --no-interaction
pour maj (composer.json est dans drucomp, pas dans drucomp/web ou drucomp/web/sites/nomsite): $ composer update
en multi site : doc officielle pas faite
Note: dès drupal 9, les commentaires de settings.php laissent penser qu'il va ici y avoir du changement : "un seul préfixe de table pour toutes les tables d'une db".
'prefix' => array( | on défini prefix comme un tableau |
'default' => 'main_', |
'nom-table' => 'prefix' default est obligatoire, car indique le préfixe pour toute table qui n'est pas citée dans ce tableau |
On peux aussi utiliser les préfixes pour référencer une base de données (utile si base n'est pas le schéma par défaut, ou qu'on accède à diverses db du meme code php au meme moment):
'prefix' => array(
'default' => 'main.', 'users' => 'shared.', 'sessions' => 'shared.', 'role' => 'shared.', 'authmap' => 'shared.',
);
conf drupal
Le user est pi, nging et apache tournent sous www-data:
cd /home/pi/drucomp
chown -R pi:www-data web
sudo chmod 775 web
cd web/sites
cp example.settings.local.php default/settings.local.php
cp example.sites.php sites.php
/vers/doc-root/sites/default/settings.local.php
Lire ce fichier (décommenter en bas des lignes de default/settings.php et y indiquer les infos de la base). A chaque ajout de sous-site, il faut modifier ce fichier :
$settings['trusted_host_patterns'] = [
'^drucomp$',
'^localhost$',
'^druc1$',
'^druc2$',
];
Avec PHP 7.0, il est recommandé en dev, dans PHP.ini : zend.assertions=1 et à 0 en prod.
Quelques notes (ce qu'on peux y activer) :
- active /sites/development.services.yml
- log verbieuses (avec $config['system.logging']['error_level'] = 'verbose';)
- css et js non compressés
- $settings['extension_discovery_scan_tests'] = TRUE;
- $settings['rebuild_access'] = FALSE; donne accès à la page rebuild.php (vide cache db et php de drupal)
-
$settings['skip_permissions_hardening'] = TRUE; (le module system vérifie périodiquement les perms du dossier du site, car le user du site ne doit pas pouvoir y écrire - ce qui peux poser soucis à git)
On a alors des erreurs sur la protection non activée. Ou mettre à FALSE avec (cf https://www.drupal.org/node/2820620#comment-12083217) les droits:chmod 644 sites/default/settings.local.php chmod 644 sites/default/settings.php chmod 755 sites/default
Les nouveautés de /vers/doc-root/sites/default/settings.php
$settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';
$settings['trusted_host_patterns'] = array(
'^localhost$',
'^druc1$',
'^druc2$',
'^drucomp$',
);
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
}
$config_directories['sync'] = '../config/sync';
Active configuration settings : Par défaut, la conf active est stockée en base, dans la table config.
Avant d'installer drupal on peux créer un dossier (hors de l'arbo du site), configurer son chemin via $config_directories
+ overrider dans settings.php bootstrap_config_storage
+ dans services.yml config.storage.active
Ajout de module
voir "Using Composer to manage Drupal site dependencies" à https://www.drupal.org/node/2718229
"composer require drupal/devel" donne l'erreur "Could not find package drupal/devel at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability" =>
Puis préparer le(s) site(s) suivant(s) avec cp -R default drc1