Rédiger « OVH/VPC02/idneuf/Drupal » ici. == Installation des paquets == {{{ apt-get install haproxy apache2 php5 php5-gd php5-durl libssh2-php php5-memcache memcached }}} == Configuration d'HAProxy == Contenu du fichier `/etc/haproxy/haproxy.cfg` : {{{ global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 listen mysql-cluster bind 127.0.0.1:3306 mode tcp option mysql-check user haproxy balance roundrobin server prod-db02-idneuf prod-db02-idneuf:3306 check server prod-db03-idneuf prod-db03-idneuf:3306 check }}} == Configuration des serveurs slaves == Sur chaque serveur slave, exécuter les commandes SQL suivante : {{{#!mysql INSERT INTO mysql.user (Host,User) VALUES ('prod-drupal02-idneuf','haproxy'); FLUSH PRIVILEGES; }}} Cette commande va permettre a HAProxy de pourvoir tester la disponibilité du serveur via le check définie dans la configuration d'HAProxy (`option mysql-check user haproxy`) Il faut ensuite créer un utilisateur en lecture seule pour la connexion de Drupal. Sur le master, exécuter la commande SQL suivante : {{{ GRANT SELECT ON drupal.* TO 'haproxy_auf'@'%' IDENTIFIED BY 'xxxxxxxxxxx'; FLUSH PRIVILEGES; }}} == Utilisation de HAProxy avec Drupal == Dans le fichier `sites/default/settings.php`, insérer les lignes suivantes : {{{ $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'drupal', 'username' => 'haproxy_auf', 'password' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'host' => '127.0.0.1', 'port' => '', 'driver' => 'mysql', 'prefix' => '', 'readonly' => TRUE , ), ), ); }}} /!\ Le host ne doit pas être `localhost` sinon la connexion ne se fera pas. === Installation de memcache === Dans le fichier `/etc/memcache.conf`, configurer la quantité de RAM a allouer : {{{ # Start with a cap of 64 megs of memory. It's reasonable, and the daemon default # Note that the daemon will grow to this size, but does not start out holding this much # memory -m 1024 }}} === Configuration de Drupal === Installer le module suivant depuis l'interface d'administration : {{{ https://ftp.drupal.org/files/projects/memcache-7.x-1.5.tar.gz }}} Dans le fichier `sites/default/settings.php`, insérer les lignes suivantes : {{{ // Use memcache $conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc'; $conf['cache_default_class'] = 'MemCacheDrupal'; $conf['cache_inc'] = 'sites/all/modules/contrib/memcache/memcache.inc'; // Memcache session $conf['session_inc'] = 'sites/all/modules/memcache/unstable/memcache-session.inc'; // Memcache lock $conf['lock_inc'] = 'sites/all/modules/memcache/memcache-lock.inc'; // Add in stampede protection $conf['memcache_stampede_protection'] = TRUE; // Don't bootstrap the database when serving pages from the cache. $conf['page_cache_without_database'] = TRUE; $conf['page_cache_invoke_hooks'] = FALSE; }}} == Lien avec ORI-OAI == === Fichiers a modifier afin de faire le lien vers ORI-OAI === * `ori-oai-search-idneuf.css` * `http_header/index.php` * `sites/default/files/xmlsitemap/Xh****************************wOM/1.xml` * `sites/all/themes/theme1005/templates/views-view—block₁--block.tpl.php` * `sites/all/themes/theme1005/css/style-header-footer.css` * `sites/all/themes/theme1005/css/custom.css` == Utilisation de NginX comme ReverseProxy == === Installation et configuration === [[OVH/VPC02/ReverseProxy]] === Config pour récupérer le X-Forward-For === Modifier le fichier `sites/default/settings.php` : {{{ $conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array('10.242.1.194','10.242.1.195'); }}} == Activer mod_status == Dans le fichier /etc/apache2/sites-available/status.conf {{{ Alias /status /var/www/status Require all granted Options FollowSymLinks SymLinksIfOwnerMatch Options None SetHandler server-status Require local Require ip 10.36.0.0/16 Require ip 10.242.0.0/16 }}} Remarque : la creation d'un virtual host est du au fait que drupal se trouve dans la racine du serveur. Sinon, il aurait juste fallut ajouter les lignes suivantes dans /etc/apache2/mods-available/status.conf: {{{ Require ip 10.242.0.0/16 Require ip 10.36.0.0/16 }}} On active alors le module et on recharge Apache2 : {{{ a2enmod status systemctl reload apache2 }}} == Notes == Redemarrage d'Apache2 :{{{ systemctl stop apache2 && systemctl restart memcached && systemctl start apache2 }}}