Tag-arkiv: Drupal

Vagrant virtualiseret udviklingsmiljø

Vagrant_screenshotJeg arbejder som webudvikler i det offentlige, og der hvor jeg er, arbejder vi primært med Open Source teknologier på websiden (Plone, Drupal og custom Python/PHP scripts).

En del af vores hjemmesider er lavet i Plone, som er et CMS der ikke er så kendt i Danmark, men som bliver brugt af mange store organisationer: Nasa, CIA og FBI er nogle af de mere kendte af dem.

 

Udfordringer

Det kan nogle gange give lidt udfordringer at arbejde på et miljø for så at deploye på et andet. I dagligdagen arbejder jeg på en Macbook Pro (MBP), men vores produktionsmiljø er på en Ubuntu 12.04 LTS server.

Det er ikke så meget produktionsmiljøet der giver de store problemer, for Plone og Zope er optimeret til at køre på Linux (selv om der er installers til Mac og Windows). Det der kan give problemer på Mac kan være forskelle i encodings og et compiler miljø der måske er mere konservativt opdateret end selv en stable linux distro.

Er man så uheldig at man arbejder på Windows platformen, så er der en del webteknologier der bare ikke virker i den verden. Windows er i den grad bagefter når det kommer til understøttelse af nye webteknologier.

Men heldigvis er der en “redning”.

 

Traditionel virtualisering

Virtualisering er hverken nyt eller revolutionerende, men derfor kan anvendelsen af det godt revolutionere en gang imellem.

Mit workflow med Plone udvikling har været: Lokal kompilering af Plone på min MBP, udvikling i CodeKit, SublimeText, Coda og versionering via SourceTree (git klient).

Skulle jeg anvende almindelig virtualisering, så ville det typisk involvere at jeg skulle bruge VIrtualBox, Parallels eller Vmware Fusion, og oprette et Linux image derinde i. Herefter enten via NFS shares eller SFTP shares, have mine filer delt med mit virtuelle image. Problemet er at disse lokale mappings ofte har problemer med at blive korrekt opdateret, og de kan give små problemer når den virtuelle maskine er lukket ned – Finder kan hænge mens den forsøger at finde ud af hvad pokker der skete med drevet.

 

Vagrant – dejlig, simpel og stabil virtualisering

Jeg hørte om Vagrant via dette blog indlæg: http://www.stevemcmahon.com/steves-blog/developing-plone-in-a-box Det er primært rettet mod Windows brugere, som har haft det lidt hårdt med Plone udvikling efter som installeren på den platform ikke har været opdateret i meget lang tid.

Windows brugerne har været tvunget til at bruge Linux servere eller skifte platform for at kunne udvikle til Plone.

Vagrant er ikke rettet mod noget specifikt OS, og kan bruges på Mac, Linux og Windows, og det fungerer lige godt på de platforme.

Vagrant er et lag oven på VirtualBox, som er et Open Source Projekt der giver mulighed for at køre andre operativsystemer virtuelt.

Installationen er ret simpel.

Du har nu en virtuel maskine kørende på din computer, og skriver du: vagrant ssh så kommer du ind i Ubuntu’s terminal (du skal have putty installeret hvis du bruger Windows)

Som Plone udvikler bruger jeg følgende scripts til at sætte et udviklingsmiljø op hurtigt:
https://github.com/smcmahon/plonedev_vagrant (man kan tilpasse plone versionen i filen: https://github.com/smcmahon/plonedev_vagrant/blob/master/Vagrantfile

 

Hvad har jeg vundet?

Jeg har nu fået nemmere adgang til en udviklingsplatform, der matcher vores produktionsmiljø. Jeg har separeret evt. afhængigheder mellem min egen Platform (Mac OS) og vores servere, da jeg nu kan sørge for at min udviklingsplatform matcher vores produktionsplatform uden at skulle ændre mine favorit programmer til udvikling.
Jeg har fået et setup hvor jeg stadig kan udvikle i Mac OS men have mine ændringer til at slå igennem med det samme på min udviklingsplatform, uden at være afhængig af netværksdrev eller FTP opsætninger.

Jeg kan via scripting i Vagrant helt tilpasse mit udviklingssetup, så jeg hurtigt kan udvikle på de sites vi har i produktion.

Danmarks Radio vælger Drupal som nyt CMS

Artikel om valget på Version 2

Det er virkelig rart at se store danske organisationer vælge Open Source systemer til deres CMS, og Drupal lader til at være et rigtig godt valg for mange medie virksomheder (showcase ved Drupal Danmark).

For mig er Open Source som CMS et klart valg, da man, efter min mening, minimerer vendor lock-in, som kan være en risiko ved lukket software. Ved lukket software er man også langt mere afhængig af at udbyderen/udvikleren fortsat holder live i systemet, hvor man ved open source har mulighed for selv at kunne overtage den videre udvikling (så længe man overholder de Open Source licenser der måtte være tilknyttet, men det er en anden og længere snak).

Jeg arbejder indenfor det offentlige, hvor der er en overvejende tendens til at vælge lukkede systemer. Her er det specielt SiteCore der ofte bliver valgt af kommunerne. Min personlige holdning er at det offentlige i højere grad bør anvende Open Source Software de steder hvor det er en reel mulighed. Hjemmesider er et oplagt sted, da det ofte ikke er afhængig af at skulle snakke sammen med fag systemer. Grunden til at man bør overveje Open Source de steder hvor det er oplagt er, som beskrevet ovenfor, at man har nemmere ved at kunne trække videreudvikling af systemet hjem, eller give det videre til et andet konsulenthus, end er tilfældet ved flere større lukkede systemer.

Den kommune jeg arbejder (og udvikler for) anvender alle de steder hvor vi kan Open Source CMS’et Plone, som er et meget stærkt CMS bygget på Zope og Python. Plone har igennem flere år haft æren af at være et af de absolut mest sikre CMS’er at arbejde i (hvilket nok også er grund til at bla. CIA, FBI og NASA anvender det)