Drupal 7 tip: Hoe automatiseer en controlleer je een go live checklist

Posted by: 
Dominique De Cooman

Deze post geeft je een lijst wat u moet controleren wanneer live gaat met een drupal 7 website en hoe je deze kunt controleren en automatiseren. Je moet deze go live checklist iedere keer raadplegen wanneer je nieuwe dingen blijft integreren tijdens de implementatie, om te zien of alles nog steeds werkt. Om tijd te besparen kan deze taak geautomatiseerd worden.

Intro
Tijdens ontwikkeling zijn een hoop instellingen uitgeschakeld of anders geconfigureerd. Waarom? Omdat verschillende omgevingen, verschillende diensten kunnen gebruiken en voor bepaalde instelling is het gemakkelijker deze te ontwikkelen met een bepaalde configuratie. Wanneer je live gaat wil je niet dat je ontwikkel instellingen actief zijn. Deze post legt uit hoe je dingen kunt controleren en enkele delen kunt automatiseren, zodat je niet iedere keer alles handmatig moet controleren.

Omgeving specifieke instellingen
Laten we bekijken welke instellingen gecontroleerd moeten worden wanneer je implementeert om te testen en live te gaan. Normaal gesproken bij het gebruik van een lokale – ontwikkel – test – live workflow, zouden de meeste lokale instellingen en ontwikkel instellingen hetzelfde zijn en zouden tevens de meeste test en go live instellingen hetzelfde moeten zijn. Daar de klant eerst de test versie controleert voordat ze live gaat, moeten de twee omgevingen hetzelfde zijn behalve de omgeving specifieke instellingen natuurlijk.

De gemakkelijkste manier om instellingen te controleren is om een instellingen bestand per omgeving bij te houden. In dit instellingen bestand is het mogelijk om je omgeving specifieke instellingen in te stellen. Bijvoorbeeld, we kunnen de volgende instellingen instellen:

In settings.php (local/dev environment)

<?php
  $conf
['error_level'] = '2';
  
$conf['preprocess_css'] = '0';
  
$conf['preprocess_js'] = '0';
  
$conf['cache'] = '0';
  
$conf['page_compression'] = '0';
  
$conf['block_cache'] = '0';
?>

In settings.php (test/live)

<?php 
  $conf
['error_level'] = '0';
  
$conf['preprocess_css'] = '1'
  
$conf['preprocess_js'] = '1';
  
$conf['cache'] = '1';
  
$conf['page_compression'] = '1';
  
$conf['block_cache'] = '1';
?>

Dus wat we hebben gedaan is error reporting uitschakelen, preprocessing van css en js inschakelen, page cache inschakelen and block cache inschakelen. Dit zijn enkele van de typische go live instellingen.

Een standaard site heeft nog enkele andere omgeving specifieke instellingen afhankelijk van de ingestelde functionaliteit. Dus een manier om er zeker van te zijn dat je live instellingen hetzelfde blijven is door ze in het instellingen bestand te houden. Let op: dit maakt het onmogelijk om ze in je live site te veranderen.

<?php
$conf
['so_env'] = 'local';
$conf['so_host_solr'] = '46.137.--.---';
$conf['so_port_solr'] = '8986';
$conf['so_path_solr'] = '/solr';

$conf['googlemap_api_key'] = 'ABQIAAAAfYxov8LBTzY0GIIX9zA54hS8rtsh0fmHD----------';
$conf['windows_live_login_client_id'] = '000000---------';
$conf['windows_live_login_client_secret'] = 'JMuzw----------------------------';
?>

We hebben een site met een solr en hebben een andere instantie voor al onze omgevingen zodat we de instellingen hier kunnen invullen, we kunnen hetzelfde doen voor onze andere omgeving afhankelijke instellingen zoals de maps api key etc…

Nu werkt dit allemaal prima, maar wat als je error reporting wilt inschakelen in de test instantie? Er doet zich een fout voor maar je kunt dit niet controleren omdat je de instellingen niet kunt veranderen. Dit betekent dat de instelling niet op de moeilijke manier geconfigureerd moet worden in settings.php maar je wilt deze setting niet op iedere implementatie controleren.

Shell script
Maak een shell script en voer je shell script iedere keer uit wanneer je implementeert. Dit script, net als je instellingen bestand zullen in je version control systeem leven, zodat je echt op de hoogte blijft van je go live lijst.

Een voorbeeld van zo’n script kan zijn:

<?php
#!/bin/sh

#D7

#vars
drush vset --yes preprocess_css 1
drush vset 
--yes preprocess_js 1
drush vset 
--yes cache 1
drush vset 
--yes block_cache 1
drush vset 
--yes page_compression 1
drush vset 
--yes error_level 0

#dis contrib
drush dis devel views_ui -y

#dis core
drush dis update syslog dblog field_ui -y

#system
drush updb 
drush cc all

#execute go live tests
drush test-run --uri=<a href="http://example.com/">http://example.com/</a> --xml=~/var/drupal/tests GoLiveTest
?>

Om het te gebruiken moet je een bestand maken genaamd update_live.sh. Maak het uitvoerbaar chmod u+x update_live.sh en voer het uit it ./update_live.sh

Zoals je kunt zien moet je drush (http://drupal.org/project/drush) geïnstalleerd hebben op je webserver. Nu kun je nog steeds deze instellingen veranderen maar iedere implementatie zal worden aangepast voor de instellingen van deze omgeving.

Je kunt een CI server zoals Jenkins (http://jenkins-ci.org/) gebruiken om deze taak te automatiseren. Elke omgeving heeft zijn eigen script zodat je kunt controleren hoe je site wordt geïmplementeerd in iedere omgeving. Wat je kunt doen is een taak configureren die elke keer als je implementeert een shell script uitvoert. Als je niet weet hoe je drupal en jenkins opzet, blijf dan op de hoogte voor een latere blog post waarin ik dit zal uitleggen.

Geautomatiseerd testen
Het volgende wat je kunt doen om testen te automatiseren als alles is ingesteld, is om testen te doen. Het gebruik van een eenvoudige test module tijdens implementatie kan veel dingen verifiëren. In het algemeen is het niet aan te raden om testen te doen tegen een live instantie. Maar als je weet wat je doet kan het je helpen bij het verifiëren van alle instellingen tijdens implementatie. Weten wat je doet betekent:

  • Zorg ervoor dat je tests geen prestatie problemen veroorzaken.
  • Zorg ervoor dat je alles wat je tests doen opruimt.
  • Test alleen omgeving afhankelijke functionaliteit. Alle andere functionaliteit kun je testen tijdens de implementatie naar dev - test
  • Zorg ervoor dat je de simple test module uitschakelt als je klaar bent.

Let er op dat sommige instellingen inderdaad moeilijk te controleren zijn met gebruik van een simple test, dus dit vereist wat extra tools om andere delen van je infrastructuur te controleren. Je kunt zelf bepalen hoever je wilt gaan. Niet alles moet geautomatiseerd zijn, het handmatig controleren van bepaalde dingen is ok als je het niet vaak hoeft te doen. Als automatisering tijd bespaart doe het, anders moet je het laten.

Checklist

Hier is de complete checklist van zaken die we controleren als we live gaan.

Prestatie

  • Stel Preprocessing js en css in
  • Stel Page cache in
  • Stel Block cache in
  • Stel Page compression in
  • Stel Error level in
  • Installeer PHP accelerator zoals APC etc
  • • Schakel enkele core en contrib modules uit zoals bijvoorbeeld update, syslog, dblog, field_ui, devel, views_ui, ... Logs en stats moeten uitgeschakeld zijn, je kunt andere tools gebruiken om prestatie gerichter fouten te volgen op de server.

Beveiliging

  • Upgrade Drupal en de Contirb module naar de laatste versie
  • Schedule back up van database
  • Bescherm Admin wachtwoord
  • Schakel Google Analytics in
  • Gebruik captcha of mollom voor alle formulieren
  • Controleer nogmaals de gebruikersregistratie instellingen.
  • Controleer nogmaals alle machtigingen.
  • Controleer de watchdog voor fouten en waarschuwingen, en herstel deze
  • Controleer input format

Seo
Gebruik de drupal seo checklist om ervoor te zorgen dat alles naar behoren is ingeschakeld. Je kunt tevens alle instelling controleren met behulp van het script. (http://drupal.org/project/seo_checklist)

E-mail

  • Site SMTP instellingen
  • Contact module instellingen, webform en/of anderen die e-mail nodig hebben.

Test content
Houd een lijst met test nodes bij. Normaalgesproken als je je instantie bouwt weet je welke content test content is, dus je kunt dit verwijderen of je site zonder het bouwen.

Misc
Schedule cron

Optioneel

Conclusie
Plaats alles wat omgeving specifiek is en niet af en toe veranderd hoeft te worden in settings.php. Stel de andere omgeving specifieke instellingen in een shell script bij elke implementatie. Met zowel de script en verschillende settings.php bestanden stellen je in staat op de hoogte te bijven van je go live vereisten. Gebruik een go live simple test om te controleren of alles naar behoren werkt.

Als je iets anders bedenkt dat gecontroleerd moet worden, plaats het in de opmerkingen hieronder en ik zal het aan de lijst toevoegen.

Reactie toevoegen