Uppdaterad: 2018-05-03
- Hajk
Hajk är ett projekt som drivs av flera organisationer i Västsverige, bl a Stadsbyggnadskontoret Göteborgs Stad, Kungsbacka kommun, Alingsås kommun, Varbergs kommun, Halmstads kommun.
Projektet drivs som ett samarbetsprojekt och är avsett att kunna användas för generalla GIS-applikationer för webb.
Licensformen bygger på en öppen samarbetslicens. (CC BY SA NC).
Applikationen består av två delar: en serverdel och en klientdel. Serverdelen är programmerad i .NET med tekniken WCF och kodspråket C#. Klientdelen är skriven i JavaScript (ES2015). Kommunikationen mellan klient och server sker via HTTP enligt REST.
Klienten innehåller två separata webbapplikationer: en kartvy och en administrationsvy.
Serverdelen byggs i Visual Studio och driftsätts i IIS. Klientdelen (med de två vyerna, karta och administation) bygger på Node.js och nyttjar ett flertal NPM-paket (exempelvis React och Babel) samt byggs med hjälp av uppgiftshanteraren Grunt. Källkoden versionshanteras i Git och finns tillgänglig på Github.
Nedan redogörs tillvägagångssättet för att installera de verktyg som krävs för att bygga Hajk (Git, Visual Studio Community Edition och Node.js mm) följt av hur man bygger ihop en release.
För installation och konfiguration i IIS hänvisas till Systemdokumentationen som finns i mappen dokumentation.
Börja med att installera Git om det inte redan är gjort. Ladda ner en version för ditt operativsystem från https://git-scm.com/download/win. Installera med default-inställningar. Därmed bör Git installeras globalt för Windows och läggas till i $PATH
.
Starta en kommandoprompt, exempelvis cmd, Windows Powershell eller Git Bash. Verifiera installationen genom kontrollera vilken version av Git som har installerats:
git --version
Tips: du kan med fördel använda den kommandoprompt som installerades med Git. Sök i Windows startmeny efter
Git Bash
, starta den, och verifiera installationen genom att skriva kommandot ovan.Fördelen med Git Bash är att du har tillgång till vanliga Unix-kommandon som
ls
,pwd
, med flera, samt en fungerande auto-komplettering (börja skriva en sökväg och tryck påTAB
för att testa). Dessutom finns Git med all säkerhet i$PATH
när du använder Git Bash.
Gå till https://nodejs.org och ladda ner och installera den aktuella versionen (i skrivande stund Node 8).
Verifiera installationen genom starta kommandoprompten och skriva:
node --version
Grunt är en NPM-modul som används till att "bygga" klient- och admindelen av källkoden. Därför måste Grunt installeras nu, för att kunna användas senare:
npm i -g grunt-cli
Tips: Flaggan
-g
i kommandot ovan anger att NPM ska installera paketet globalt, istället för enbart i nuvarande projekt (vilket är default).
Info: Kommandot
i
ovan är förkortning avinstall
. Du kan således även skrivanpm install -g grunt-cli
, men det kan vara bra att känna till detta kortkommando.
För att installera Visual Studio gå till https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15, ladda ner och installera programmet. Det finns många val som kan göras här med det som är nödvändigt för Hajk är att ASP.NET-komponenterna installeras.
När alla nödvändiga programmen är på plats kan du ladda ner själva källkoden för projektet och börja arbeta med den.
Skapa en mapp där du kommer arbeta med Hajk, exempelvis C:\projekt
.
cd C:
mkdir projekt
cd projekt
Nu är du inne i den nyskapade mappen. Nästa steg är att ladda ner aktuell version av källkoden från Github:
git clone https://github.com/hajkmap/Hajk.git
När kommandot är färdigt har du en ny mapp, C:\projekt\Hajk
där du hittar den aktuella källkoden.
Info: efter den första kloningen (
git clone
-kommandot ovan) behöver nödvändiga paket som Hajk är beroende av att installeras av NPM (Node Package Manager). Därefter måste beroendena paketeras med hjälp av Grunt. Följ därför instruktioner under rubrikerna Installera beroenden och Paketera externa bibliotek. Därefter, fortsätt till Vanligt byggförfarande.
cd C:\projekt\Hajk\client
npm install
cd ..\admin
npm install
Info: Kommandot
npm install
läser filenpackage.json
och installerar de paketen som definieras där som beroenden. Paketen läggs i mappennode_modules
under respektive del av koden (klient- respektive admindelen).
cd c:\Projekt\Hajk\client
grunt dependencies
Info: Kommandot
grunt dependencies
bygger ihop ett flertal hjälpbibliotek och paketerar dem till en fil,dist/js/dependencies.min.js
.
Grunt bygger två versioner av källkoden: en som är lite större men lättare att felsöka, och en som är mer komprimerad och används för skarp drift. Nedan visas hur båda delarna byggs:
# Öppna kommandoprompten och gå till projektets mapp
cd c:\projekt\Hajk\client
# Bygg version för test (målmapp "dist")
grunt build
# Bygg version för driftsättning. (målmapp "release")
grunt release
När admindelen byggs skapas också två versioner: en för test och en för driftsättning. Skillnaden mot klientdelen är att istället för att skapa separata mappar så skapas endast en mapp, dist
, men den innehåller två filer: index.html
och debug.html
.
# Öppna kommandopromten och gå till projektets mapp
cd c:\projekt\Hajk\admin
# Bygg de två versionerna av admindelen (målmapp "dist")
grunt
- Öppna Utforskaren och navigera till mappen som innehåller backend-koden (i det här exemplet,
C:\projekt\Hajk\backend
- Dubbelklicka på
MapService.sln
- Visual Studio öppnas
- I
Solution Explorer
markera projektetMapService
- I huvudmenyn, välj
Build > Build Solution
- Invänta tills kompileringen är klar (du ser status i
Output
-fönstret längst ner, när det står något i stil medBuild: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped
så är det klart) - I huvudmenyn, välj
Build > Publish MapService
- I fönstret som visas nu finns möjlighet att ändra
Target Location
, alltså stället dit backend-applikationen kommer att publiceras. Default-värde ärC:\install\mapservice\
. Du kan låta det vara kvar eller ändra till något annat. Huvudsaken är att du vet var filerna läggs för de kommer behövas senare när vi sätter ihop Hajk.
- Öppna Utforskaren och navigera till mappen som innehåller proxy-koden (i det här exemplet,
C:\projekt\Hajk\proxy\HTTPProxy
- Dubbelklicka på
Proxy.sln
- Visual Studio öppnas
- I
Solution Explorer
markera projektetProxy
- I huvudmenyn, välj
Build > Build Solution
- Invänta tills kompileringen är klar (du ser status i
Output
-fönstret längst ner, när det står något i stil medBuild: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped
så är det klart) - I huvudmenyn, välj
Build > Publish Proxy
- I fönstret som visas nu finns möjlighet att ändra
Target Location
, alltså stället dit backend-applikationen kommer att publiceras. Default-värde ärC:\install\proxy\
. Du kan låta det vara kvar eller ändra till något annat. Huvudsaken är att du vet var filerna läggs för de kommer behövas senare när vi sätter ihop Hajk.
Om du har följt anvisningarna så långt har du de tre kompilerade delarna som applikationen utgörs av på följande ställen:
Del | Plats |
---|---|
backend | C:/install/mapservice |
admin | C:/projekt/Hajk/admin/dist |
client | C:/projekt/Hajk/client/release |
Observera: som det nämndes tidigare i avsnittet om klientdelen så byggdes den i en drift- och en testversion. För driftsättning nu kommer vi använda den skarpa driftversionen, som alltså ligger i
release
. Men kom ihåg att även testversionen finns, i mappendist
, och instruktionerna här fungerar även för den. Byt bara ut mapparna mot varann.
Info: Projektets backend-del är en .NET-applikation som i Windowsmiljö enklast körs i IIS (version 7 eller senare). Applikationen körs i en App Pool med
.NET version 4.0 integrated
.
För att underlätta installationen av Hajk kan man kopiera de tre kompilerade delarna till samma struktur som sedan ska användas i IIS.
Huvudmappen i det här exemplet är C:/wwwroot
. Om du vill följa anvisningarna exakt, skapa en sådan mapp på din datorn.
Flytta hela mappar enligt tabell nedan:
Från | Till |
---|---|
C:/install/mapservice |
C:/wwwroot/mapservice |
C:/projekt/Hajk/admin/dist |
C:/wwwroot/admin |
C:/projekt/Hajk/client/release |
C:/wwwroot/client |
Nu har C:/wwwroot
tre undermappar. Men vi ska göra ett till ingrepp.
Gå in i mappen C:/wwwroot/client
. Markera alla mappar och filer inuti (förslagsvis genom att trycka Ctrl+A
i Windows utforskare) och klipp ut markeringen (Ctrl+X
). Gå upp en nivå (så du nu står i C:/wwwroot
) och klistra in (Ctrl+V
). När flytten är klar kan du radera den nu tomma mappen client
.
Därefter, skapa tre till mappar i C:/wwwroot
och döp dem till util
, Temp
och Upload
(var noga med stora och små bokstäver).
Det finns en ny och en äldre proxy man kan välja på.
Om autentisering och rollstyrning skall användas ska den nya proxyn som finns i mappen HTTPProxy användas. Se ovan hur man bygger ihop den. Denna proxy ska kunna användas även om autentisering och rollstyrning inte används.
Ta innehållet från C:/install/proxy
och flytta till mappen C:/wwwroot/util
.
En GET-proxy som kan användas av klienten ska läggas i den nyligen skapade mappen util
. Ta innehållet från C:/projekt/Hajk/proxy/mvc
och flytta till mappen C:/wwwroot/util
.
Det finns även en POST-proxy som kan användas av klienten. Flytta filerna postproxy.aspx
och postproxy.aspx.cs
från C:/projekt/Hajk/proxy/aspnet
direkt till huvudmappen C:/wwwroot
.
Den nya proxyn bör fungera lika bra som den gamla proxyn.
Nu bör C:/wwwroot
innehålla följande filer och mappar:
Innehåll i wwwroot |
|
---|---|
admin/ |
|
assets/ |
|
fonts/ |
|
js/ |
|
mapservice/ |
|
Temp/ |
|
Upload/ |
|
util/ |
|
index.html |
|
postproxy.aspx |
(endast om äldre proxy används) |
postproxy.aspx.cs |
(endast om äldre proxy används) |
För installation och konfiguration i IIS hänvisas till Systemdokumentationen som finns i mappen dokumentation.