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
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