Capistrano – Smidig distribution av webbapplikationer

Vi på IVEO arbetar dagligen med webbutveckling och releaser av nya webbapplikationer. Projekt, filer och databaser flyttas  frekvent mellan olika utvecklings- och produktionsmiljöer. Detta är något som utan effektiva verktyg kan påverka utvecklingstakten negativt. På IVEO har vi därför valt att använda oss utav Capistrano.

Capistrano vad är det?

Capistrano är ett projekt med öppen källkod som fungerar som ett ramverk för distribution av kod över flera noder (webbservrar).  Det använder sig utav ett VCS (versionshanteringssystem) för att distribuera koden. Vi på IVEO använder oss utav GIT, ett av de mest populära versionshanteringssystemen. Rent praktiskt innebär det att koden som vi skriver lokalt  skickas vidare till en slags ”pool” där all kod samlas, denna skickas sedan vidare till webbservern där webbplatsen eller applikationen driftas.

Capistrano kan användas för olika applikationstyper men är från början utvecklat för att användas tillsammans med applikationer skrivna i Ruby. Det har dock på senare tid blivit vanligt att man anpassar Capistrano för att distribuera exempelvis PHP-applikationer som WordPress. Som utvecklare vill man lägga så mycket tid på utveckling som möjligt och så lite tid som möjligt på att hantera servrar och distribuering, då kommer ett sådant här verktyg till stor användning.

Med vår capistranokonfiguration kan personen ansvarig för deploy omedelbart gå tillbaka till tidigare versioner av applikationen om något skulle gå fel – detta för såväl filer som databaser. Det är mycket användbart i de fall då ett projekt fungerar i testmiljö men av någon anledning inte fungerar när det deployas till skarp miljö. Man kan då snabbt gå tillbaka till en tidigare version av applikationen och databasen som fungerade och därefter felsöka på testserver eller lokal installation – med minimal nertid.

Säker distribution till WordPress

För att distribuera webbplatser i WordPress med capistrano krävs det att man har mycket god insyn i hur WordPress fungerar. WordPress är i sig inte särskilt modulärt, och när det kommer till distribution över flera miljöer finns flera utmaningar för att göra processen så säker som möjligt. Till skillnad från andra CM-system (exempelvis ExpressionEngine) så byggs länkstrukturen i WordPress genom att domännamnet serialiseras i databasen. För att kunna flytta på en databas måste därmed varje enskild rad som innehåller en sådan länk ”deserialiseras”, ersättas, och därefter serialiseras igen. Att göra detta manuellt är i praktiken omöjligt och extremt tidskrävande. Med hjälp av olika script i Capistrano automatiseras processen vilket gör att distribution av WordPress går på ett ögonblick.

Databas och filsynkronisering

Med Capistrano kan man snabbt och säkert synkronisera databaser mellan olika miljöer. Detta innebär exempelvis att vi, på våra lokala utvecklingsmiljöer alltid har uppdaterat innehåll från livemiljön. Då kan vi se hur existerande inlägg, sidor och liknande som finns i livemiljön ser ut i utvecklingsmiljön. I utvecklingsmiljön kan man ha lagt till nya funktioner som man vill testa med riktigt innehåll. Den tar även hand om ”Object Serialization”. Detta möjliggör att testa lokala databaskonfigurationer och sedan skicka vidare det till en publik miljö utan databasfel.

I WordPress finns ”skrivbara mappar” där exempelvis bilder, video och andra användaruppladdade filer lagras. Med Capistrano kan man även synkronisera dessa filer till olika miljöer. Då kan man se hur lokala kodändringar påverkar nuvarande material. Detta är bra när man vill testa nya funktioner och ha en så autentisk testmiljö som möjligt. Hurra för Capistrano!

Kontakta oss om du vill ha hjälp med att sätta upp Capistrano eller har några frågor kring hur vår drift & hosting fungerar.

Skrivet den 6 maj av

Bruno Lanevik

Skriv en kommentar

  • XHTML: Du kan använda följande taggar: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>