Kom ihåg mig?
Home Menu

Menu


Hur man lanserar ny kod på en site som används

 
Ämnesverktyg Visningsalternativ
Oläst 2010-06-15, 11:33 #1
brasimon brasimon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2010
Inlägg: 7
brasimon brasimon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2010
Inlägg: 7
Standard Hur man lanserar ny kod på en site som används

Det finns många olika sätt att lansera en webbplats. Nu tänker jag endast på det faktum att lansera ny kod och databasstruktur etc.
Vissa kanske t ex bara kör en update från svn-repot på live, och därefter uppdaterar databasen manuellt. Andra kanske bygger rpm-paket och uppdaterar en webbfront i taget osv.

Jag skulle vilja veta hur ni lanserar era webbsiter som är up-and-running, främst de större projekten.
Även böcker inom detta ämne vore grymt intressant.
brasimon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-15, 12:39 #2
StefanBergfeldts avatar
StefanBergfeldt StefanBergfeldt är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2004
Inlägg: 1 535
StefanBergfeldt StefanBergfeldt är inte uppkopplad
Bara ett inlägg till!
StefanBergfeldts avatar
 
Reg.datum: Sep 2004
Inlägg: 1 535
Gör en ny sajt på en subdomän, kör vissa delar mot samma databas. Sen bara pekar om domänen
StefanBergfeldt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-15, 14:20 #3
abergmans avatar
abergman abergman är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Feb 2010
Inlägg: 762
abergman abergman är inte uppkopplad
Mycket flitig postare
abergmans avatar
 
Reg.datum: Feb 2010
Inlägg: 762
Citat:
Ursprungligen postat av brasimon Visa inlägg
Det finns många olika sätt att lansera en webbplats. Nu tänker jag endast på det faktum att lansera ny kod och databasstruktur etc.
Vissa kanske t ex bara kör en update från svn-repot på live, och därefter uppdaterar databasen manuellt. Andra kanske bygger rpm-paket och uppdaterar en webbfront i taget osv.

Jag skulle vilja veta hur ni lanserar era webbsiter som är up-and-running, främst de större projekten.
Även böcker inom detta ämne vore grymt intressant.
Delvis samma som stefan ovan, annars tar jag en webbfront i taget.

Den stenhårda "under underhåll" och sen trycka ut uppdateringen och sen slå om servern funkar också, men det är inte riktigt lika roligt.
abergman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-15, 14:34 #4
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
dotvoid dotvoid är inte uppkopplad
Medlem
 
Reg.datum: Apr 2006
Inlägg: 199
Att bygga rpm:er eller liknande är bra och jag känner till en del stora svenska webbplatser som gör så. Det är en bra metod och i byggskript som skapar rpm:er kan man ju ta med ihopslagning av css-filer, js-filer och andra åtgärder. Kanske t o m enhetstester och generering av dokumentation via phpdocumentor (eller motsvarande) går via den här vägen. Man kan använda rena bashscript, make eller andra produkter för detta. Fördelen är att man kan uppnå en bättre abstraktion mellan utveckling, test och produktion. Nackdelen är väl kanske att allt jobb med att sätta upp en sån här miljö, och att man ofta måste köra byggscript även i utvecklingsmiljöer för att se ändringar man håller på med, inte alltid är befogat för mindre projekt. För kompilerade språk är ju en del av det här dock nödvändigt. För stora projekt/projektgrupper är det ju också super att kunna skicka iväg installationsfiler till den som jobbar med servermiljön.

För riktigt stora projekt där man har bra enhetstester (och/eller automatiserade gui-tester) kan man ju köra byggscripten och testerna på natten för att på morgonen få bra rapporter över hela projektets status. Det finns ju faktiskt de som har automatisk release om inga fel eller varningar upptäcks. Det är ganska häftigt och ställer krav på bra heltäckande tester.

För många räcker det ju med att köra en export från ett lösenordsskyddat repository. Jag tycker definitivt inte att det är en bra idé att ha ett levande cvs/svn/etc-träd som kan uppdateras i produktion. Det skapas ju ofta diverse filer som inte bör finnas på en publik webbserver. Man bör ju skapa en branch/tag/edy för varje release om det man håller på med kan påverka kunder etc.

För databasen finns ju flera sätt att hålla reda på vad man gjort för ändringar. Den vanligaste är väl manuella metoden(!). Ofta även när man är så avancerad som ovan. Men det finns ju bra verktyg. T ex finns ju MySQL Workbench gratis för MySQL-användare. Den kan användas för att ta fram diffar och även propagera ändringar i databasmodeller mellan olika servrar eller till/från en ER-modell.

Sedan kan det ju också finnas tillfällen när man måste köra konverteringar. Man kanske ändrar i indexeringen av dokument, storlek på uppladdade bilder eller vilken data som ska lagras duplicerat i en databas för att förbättra prestanda osv. Då måste man ju ofta skapa speciella releasescript enkom för det oavsett ovan metoder.

Jag har varit med i projekt där alla ovan metoder används.

(Och ja - jag har även varit med i projekt där man ändrar, skjuter upp via ftp direkt till produktion och laddar om sidor och hoppas på det bästa...)

Senast redigerad av dotvoid den 2010-06-15 klockan 14:35 Anledning: rättat förkortning
dotvoid är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-15, 14:39 #5
Weaver Weaver är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2006
Inlägg: 403
Weaver Weaver är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2006
Inlägg: 403
Beror lite på projektet och kraven som finns. Oftast så skapar jag en så kallad stageing miljö på servern som ligger under sin egen subdomän. Denna miljön delar inte filer eller databas med produktionssajten men i övrigt är allt samma.

Under utveckligen av den "nya koden" så har jag sett till att spara alla strukturella ändringar av databasen i en sql-fil så att de kan appliceras på stageing servern. När det är dags för driftsättning så laddar jag upp det nya till stageing miljön och kör sql-filen som ändrar strukturen på databasen (om nu något ändrat sig i databasen).

Om allt lirar i stageing miljön så stoppar jag apache. Kör sql ändringarna på produktion och sedan rsyncar filerna från stageing till produktion. Sedan igång med apache igen.

Naturligtvis skall backup göras mellan stegen så att en rollback kan göras vid behov.
Weaver är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-16, 22:03 #6
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Intressant tråd!

Tyvärr brukar jag göra det manuellt vilket är en PITA och kräver koncentration för att inget ska gå fel. Som alltid när det gäller manuellt arbete på det här sättet finns det onödiga och stora risker; ibland går det snett.

En del projekt deployas genom TeamCity och det verkar vara sjukt, sjukt, sjukt smidigt!

Databassynkningar görs med RedGates SqlCompare vilket är ett himla smidigt verktyg.

Egentligen skulle man vilja generera ett skript som gör allt åt en så att det bara är att köra igång det och eventuellt kanske fylla i nån uppgift eller två under procedurens gång.

Om ni har några länkar som tar upp ämnet är jag intresserad. Det spelar ingen roll om det är för Linux eller Windows.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-16, 22:20 #7
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
Kör över allt nytt i mapp, peka om webroten till nya mappen och klart :-)
Fungerar när databas inte ändras, annars är nog enklast ha uppdateringsscript för databas och stänga ned sidan en kortis medans allt tuggar.
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-16, 22:46 #8
pelmereds avatar
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2010
Inlägg: 1 342
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
pelmereds avatar
 
Reg.datum: May 2010
Inlägg: 1 342
Underslutskedet av utvecklingen och testningen lägger jag upp allt i en egen webroot med en egen databas och pekar en subdomän dit.
När man ska slå över till den nya ändrar man vhosten så att den pekar på den nya mappen och kopierar över databasen(om det är liten databas utan omfattande ändringar) alternativt stänger ner sidan och byter vilken databas som sidan ska ansluta till i en configfil.
Detta är enkelt och brukar sällan resultera i nertid på mer än en minut och det känns okej för alla sidor jag administrerar.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-17, 08:45 #9
akelagercrantzs avatar
akelagercrantz akelagercrantz är inte uppkopplad
Medlem
 
Reg.datum: Jun 2009
Inlägg: 211
akelagercrantz akelagercrantz är inte uppkopplad
Medlem
akelagercrantzs avatar
 
Reg.datum: Jun 2009
Inlägg: 211
capistrano
akelagercrantz är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-17, 13:42 #10
brasimon brasimon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2010
Inlägg: 7
brasimon brasimon är inte uppkopplad
Nykomling
 
Reg.datum: Feb 2010
Inlägg: 7
Grymma svar! Många olika intressanta förslag.

Mest intressant tycker jag ändå är när databasen ändras och man måste lägga in ett gäng ALTER TABLE-kommandon. Tidigare har jag sparat ner dessa i en sql-fil med namnet på kommande release och checkat in dessa till kodträdet. Men ska kolla in de sql-program som föreslagits i tråden.
brasimon är inte uppkopplad   Svara med citatSvara med citat
Svara

Taggar
lansering


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 21:45.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017