29 apr 2019

Hur du installerar RavenDB på en virtuell maskin i Azure (steg för steg - del 1)

RavenDB-del1-sv.jpg

Det här en guide i tre delar för dig som, likt rubriken säger, vill installera RavenDB på en virtuell maskin i Azure. Låter det självklart? Låter det klurigt? Vi tar det från början.

Är du utvecklare? Då kan det till en början kännas märkligt att arbeta med dokumentdatabaser, i varje fall om du är van vid relationsdatabaser. Men ge det lite tid så kommer du uppskatta hur vackert det är och förstå dess möjligheter, men även begränsningar.

Med denna guide vill jag ge dig en inblick i RavenDB, en komplett NoSQL dokumentdatabas som fungerar på flera plattformar, inklusive Windows, Linux och Docker. RavenDB är dessutom open-source och källkoden går att finna på deras GitHub repo. RavenDB är skriven i C# och klient-bibliotek finns för bland annat .NET. Java, C++, Node.js, Python, Ruby, och Go.

Om konceptet med dokument-modellering är nytt för dig vill jag starkt rekommendera denna video Modeling in a Non Relational World, av författaren till RavenDB. 

Installering av RavenDB är ganska enkel och det märks att det har lagts tid på att göra den så smidig som möjligt. Däremot kan du stöta på en del problem när det blir dags att få den att fungera säkert på en produktionsserver. I denna blogg kommer jag beskriva hur jag fick RavenDB att fungera på en vanlig Windows Server 16 virtuell maskin som i sin tur körs i Azure molnet.

Jag är säker på att det finns smartare sätt att nå samma resultat men så här gjorde jag, och guiden är baserad på RavenDB version 4.1.5 (April 2019). Jag välkomnar feedback och förslag!

Målet

Vårt mål är att installera en instans av RavenDB på en ren Windows Server 2016 virtuell maskin samt att på ett säkert sätt kunna autentisera och koppla upp mot den från en .NET Core console-applikation.

image18.png

Den Virtuella maskinen

Jag ska inte gå in på hur man skapar en virtuell maskin (VM) och de flesta steg jag tar upp kommer vara samma oberoende av ifall du använder Amazon, Google eller någon annan leverantör. Jag antar dessutom att du är administratör och kan använda dig av remote-desktop för att komma åt maskinen.

I exemplet har jag skapat en fräsch Windows Server 2016 (Data Center edition) VM i Azure med en standardkonfiguration.

Jag rekommenderar att vi först installerar användbara verktyg likt Google Chrome, Fiddler eller FireFox och för det använder jag Chocolatey. Chocolatey är Windows pakethanterare som låter dig automatisera installationen av applikationer. För att göra saken ännu smidigare har jag skapat Install_Applications.bat i förväg som låter mig installera Chocolatey och alla mina önskade applikationer på en och samma gång:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

choco install notepadplusplus --x86 -y
choco install 7zip.install -y
choco install GoogleChrome -y
choco install firefox -y
choco install vcredist-all -y
choco install fiddler4 -y

(Första raden installerar Chocolatey som det är beskrivet i installationsintstruktionerna här)

Sen kör jag på enklaste sätt skriptet från en (administratör-) kommando-prompt:

image20.png

Microsoft Visual C++ Redistributable Package blir installeras som en del av skriptet ovan eftersom RavenDB är beroenden av detta bibliotek.

Glöm inte att välja Chrome eller Firefox som din standardbrowser eftersom Internet Explorer 11 annars är standard i Windows Server 2016 och inte stöds av RavenDB.

Installera RavenDB

Först behöver vi ladda ner RavenDB för Windows härifrån. Därefter högerklicka på .ZIP-filen, kolla Properties-dialogen och välj Unblock, för att undvika problem längre fram:

image5.png


Packa sedan upp filen och flytta innehållet till en ny mapp som vi döper c:\RavenDB.

image19.png


Nätverk och brandväggar

I vår installation vill vi att klienter utanför Azure på det publika internet kan koppla upp sig mot vår databas. För att uppnå det väljer vi att använda följande portar:

  • Port 50000 för HTTPS trafik (standard ‘r 443)
  • Port 50001 för TCP/IP trafik (standard är 38888)

I Azure-portalen lägger vi först till en inbound security rule för att öppna port 50000 och 50001.

image22.png

Därefter behöver vi lägga till en inbound rule i Windows firewall för att öppna port 50000 och 50001 for TCP/IP trafik. 

Detta gör vi från command line på följande sätt:

netsh advfirewall firewall add rule name="RavenDB" dir=in action=allow protocol=TCP localport=50000,50001

(Eller använd Windows Firewall applikation i Windows)

Konfigurera RavenDB

RavenDB kan köra som en vanlig exekverbar fil eller som en Windows service i bakgrunden. Vi väljer att köra den som en windows service, därför att vi vill att databasen alltid startar när Windows startar. Mer information om olika deployment options.  

Starta upp ett nytt PowerShell-fönster, navigera sedan till c:\RavenDB och påbörja därefter installationen genom att köra .\setup-as-service.ps1.

image21.png

Skriptet kommer automatiskt registrera RavenDB som en service för dig. När RavenDB startar upp kommer det starta RavenDB studio i din webbläsare (den du satt som standard). Läs igenom EULA:n och acceptera.

I nästa del går vi igenom hur vi fortsätter installationen av RavenDB.

Relaterade kurser

  • C# Master Class

    Denna kursen lär dig att bemästra och ger dig en djupare förståelse i C# och .NET. Fokus ligger på moderna mönster och tekniker, ren funktionell kod och fokus på verkliga situationer. Du får praktiska färdigheter som låter dig mer effektivt skapa bättre program.

    Kursområde: .Net
    Omfattning: 3 dagar
    Kostnad: 25 900 SEK
  • Mjukvaruarkitektur

    Kursen ger grunden till hur du kan utforma dina system så att de kan hantera nya utmaningar och förändringar; hur du får en systemarkitektur som är testbar, skalbar, och säker, och hur du kan undvika att systemet blir en enda stor röra.

    Kursområde: Systemarkitektur
    Omfattning: 2 dagar
    Kostnad: 21 500 SEK
  • Webbsäkerhet för utvecklare

    Utmaningarna att göra en säker webbplats är väldigt stora idag. Dagens utvecklare känner inte alltid till säkerhetsaspekterna för säker utveckling. Problemet är också att hänga med i den snabba utvecklingen. Fler säkerhetshål uppstår också i och med trenden att vi lägger alltmer funktionalitet i webbläsarna. 

    Kursområde: Webbutveckling
    Omfattning: 2 dagar
    Kostnad: 21 500 SEK
  • Beginning ASP.NET Core

    Denna kurs ger din ASP.NET Core utveckling en god start i rätt riktning!

    Kursområde: .Net
    Omfattning: 3 dagar
    Kostnad: 25 900 SEK