Slide 1

Slide 1 text

Site deployment basics Openminds techtalk - 21/03/2012 @openminds www.openminds.be Tuesday 27 March 2012

Slide 2

Slide 2 text

Deployments Deployments vereenvoudigen met ssh, git en capistrano Tuesday 27 March 2012

Slide 3

Slide 3 text

Deployment Stappenplan voor het updaten van een site Tuesday 27 March 2012

Slide 4

Slide 4 text

Klassiek scenario •(backup nemen voor we beginnen?) •FTP: files uploaden •PHPMyAdmin: enkele queries/changes/... •Surfen naar de site... Tuesday 27 March 2012

Slide 5

Slide 5 text

Problemen •Kans op fouten •Oude files / backups ... •Niet iedereen kan deployen Tuesday 27 March 2012

Slide 6

Slide 6 text

Files •Data files (uploads, pdf, cache ...) •Programma files (php, css, js ...) •Configuratie files (settings.php, database.yml ...) Tuesday 27 March 2012

Slide 7

Slide 7 text

Ideaal scenario •kopie van huidige/werkende site •nieuwe programmatuur binnenhalen •“updates” draaien (DB, structuur) •zonder data files te overschrijven/ dupliceren •bij problemen: rollback Tuesday 27 March 2012

Slide 8

Slide 8 text

Kopie/backup •Bijhouden van “releases” •“current” is de actieve release •data/config via symlinks/kopies binnen de release brengen •rollback eenvoudig Tuesday 27 March 2012

Slide 9

Slide 9 text

Update programma •code in versie-controle-systeem (git, svn...) •checkout van een tag/release/versie Tuesday 27 March 2012

Slide 10

Slide 10 text

Update data •Moeilijk punt •Afhankelijk van beschikbare tools •db-migraties •upgrade-scripts •wat bij rollback? Tuesday 27 March 2012

Slide 11

Slide 11 text

SSH Public en private keys, agents en forwarding Tuesday 27 March 2012

Slide 12

Slide 12 text

SSH keypair •identiteitskaart van jezelf •publiek en privaat deel •passphrase ter bescherming •maken met ssh-keygen •één keer in een leven!!! Tuesday 27 March 2012

Slide 13

Slide 13 text

SSH key login •Publiek deel bij de hosting •Privaat deel van u •Privaat deel gecontroleerd met een publiek deel op de hosting: login toegelaten •Meerdere publieke delen per hosting Tuesday 27 March 2012

Slide 14

Slide 14 text

publiek deel •Mag je op je site openbaar zetten •in “.ssh/authorized_keys” waar je wil inloggen •in webinterfaces (bvb github) Tuesday 27 March 2012

Slide 15

Slide 15 text

Pri Pub Keypair Laptop Server Github Machines Tuesday 27 March 2012

Slide 16

Slide 16 text

SSH agent •“aanbieden van privaat deel” •daemon op je systeem die je key kent •doorgeven van authenticatie-verzoeken van daemon naar daemon Tuesday 27 March 2012

Slide 17

Slide 17 text

Key in agent •ssh-add -l •ssh-add -K (mac os X) Tuesday 27 March 2012

Slide 18

Slide 18 text

Laptop Server Pri Pub Paswoordloze login Tuesday 27 March 2012

Slide 19

Slide 19 text

Laptop Server Pri Pub Paswoordloze login mogelijk Paswoordloze login Tuesday 27 March 2012

Slide 20

Slide 20 text

Laptop Server Pri Pub Paswoordloze login mogelijk Github Pub Paswoordloze login Tuesday 27 March 2012

Slide 21

Slide 21 text

Laptop Server Pri Pub Paswoordloze login mogelijk Hier niet meer Github Pub Paswoordloze login Tuesday 27 March 2012

Slide 22

Slide 22 text

Agent forwarding •in .ssh/config Tuesday 27 March 2012

Slide 23

Slide 23 text

Laptop Server Github Pri Pub Pub Met agent forwarding Tuesday 27 March 2012

Slide 24

Slide 24 text

Paswoordloze login mogelijk Laptop Server Github Pri Pub Pub Met agent forwarding Tuesday 27 March 2012

Slide 25

Slide 25 text

Paswoordloze login mogelijk Laptop Server Github Pri Pub Pub Met agent forwarding Pri Tuesday 27 March 2012

Slide 26

Slide 26 text

Paswoordloze login mogelijk Laptop Server Github Pri Pub Pub Met agent forwarding Pri Paswoordloze login mogelijk Tuesday 27 March 2012

Slide 27

Slide 27 text

Windows •Putty is de de-facto standaard •putty is eigenlijk ssh •pagent is de agent (daemon) •puttygen maakt een nieuwe key http://www.chiark.greenend.org.uk/~sgtatham/putty/ download.html Tuesday 27 March 2012

Slide 28

Slide 28 text

Capistrano Automatiseren van je stappenplan Tuesday 27 March 2012

Slide 29

Slide 29 text

Capistrano •Origineel tool om rails te deployen •Vandaag tool om set van taken uit te voeren op remote servers •Gemaakt in Ruby, eenvoudige dependencies, is een gem https://github.com/capistrano/capistrano#readme Tuesday 27 March 2012

Slide 30

Slide 30 text

Capfile •een file per project •taken in de file •roles (eigenlijk servers) Tuesday 27 March 2012

Slide 31

Slide 31 text

Eenvoudige capfile desc "Echo the server's hostname" task :echo_hostname do run "echo `hostname`" end Tuesday 27 March 2012

Slide 32

Slide 32 text

Rails deployment Capistrano waarvoor het gemaakt werd Een eenvoudige demo Tuesday 27 March 2012

Slide 33

Slide 33 text

“Hello server!” Een eenvoudig capistrano recept Tuesday 27 March 2012

Slide 34

Slide 34 text

Voorbereiding •public key in .ssh/authorized_keys op de hosting •site-code op github/centraal/... •capify in je source-tree Tuesday 27 March 2012

Slide 35

Slide 35 text

capify . •Maakt een Capfile •Maakt een config/deploy.rb •Deze mogen (moeten) mee in je repository Tuesday 27 March 2012

Slide 36

Slide 36 text

cap deploy:setup •Directory layout opbouwen •Shared / releases / ... Tuesday 27 March 2012

Slide 37

Slide 37 text

cap deploy •Op de server: nieuwe code uitchecken van github •In de nieuwe checkout - data mappen en config files op hun plaats zetten/linken Tuesday 27 March 2012

Slide 38

Slide 38 text

“simple” demo Tuesday 27 March 2012

Slide 39

Slide 39 text

Drupal Lang leve drush! Tuesday 27 March 2012

Slide 40

Slide 40 text

Drupal •settings.php is config (rest in DB) •Drush kan helpen met bvb update.php •files-map is shared •Meerdere branches is handig (drupal, modules, ...) Tuesday 27 March 2012

Slide 41

Slide 41 text

Drupal voorbeeld Tuesday 27 March 2012

Slide 42

Slide 42 text

Meer! Tuesday 27 March 2012

Slide 43

Slide 43 text

Multi-stage cap production deploy cap staging deploy Tuesday 27 March 2012

Slide 44

Slide 44 text

Multi-server role :web “web1”, “web2”, “web3” Tuesday 27 March 2012

Slide 45

Slide 45 text

Gateway Wanneer je achter een firewall zit... Tuesday 27 March 2012

Slide 46

Slide 46 text

Wordpress http://theme.fm/2011/08/tutorial-deploying- wordpress-with-capistrano-2082/ Tuesday 27 March 2012

Slide 47

Slide 47 text

ForkCMS https://github.com/sumocoders/forkcms_3_deploy Tuesday 27 March 2012

Slide 48

Slide 48 text

CakePHP https://github.com/jadb/capcake Tuesday 27 March 2012

Slide 49

Slide 49 text

Symfony http://symphony-cms.com/discuss/thread/51667/ of https://github.com/makenosound/symphony- capistrano Tuesday 27 March 2012

Slide 50

Slide 50 text

Zend Framework http://www.codewithstyle.eu/2011/05/03/deploying- zend-framework-applications-using-capistrano/ Tuesday 27 March 2012

Slide 51

Slide 51 text

Q&A En hierna drank en broodjes... Tuesday 27 March 2012