ASP.NET på mac og Linux

I denne guide vil jeg vise hvordan man kan udvikle ASP.NET på en mac og deploye koden på en Linux server der kører apache2.

For at få dette til at virke skal  mono og monodevelop installeres på mac’en og mono skal installeres på Linux serveren.

For at starte med mac’en hvor udviklingen skal foregå skal man hente og installere mono develop fra http://monodevelop.com/Download og installere denne.

Når dette er gjort er man klar til at få udviklet noget C# kode. Dette kan enten gøres ved at man åbner en eksisterende ASP.NET solution lavet i visual studio eller man starter en ny.

Media_httpblogmartins_kdfpc

Når man så har et projekt man er klar til at teste kan man gøre det ved at gå op i Kør og vælge kør.

Media_httpblogmartins_skpqy

Tip: Codecomplete kommer ikke automatisk frem, du skal show completion windows eller genvejstasten.

Monodevelop er ikke helt på højde med Visual Studio som IDE, men bliver hele tiden forbedret, som det er nu ser jeg kun tre ting jeg mangler:

–       En visuel designer.

–       Understøttelse af WPF og winforms.

–        Edit and continue i debuggeren.

Når du så har fået udviklet din solution og skal have installeret den på din linux server. Dette gøre forskelligt alt efter hvilken linux distribution du bruger, på en debian gøres det simpelt hen med sudo apt-get install libapache2-mod-mono hvilket vil installere og aktivere mono i din apache2.  På suse ligger modulet også i deres pakke manager.

Når det er gjort skal du have tilføjet din applikation til din sites availble fil Mine er sat op som Applications og ikke virtual hosts, da jeg ikke har været instand til at få mono til at køre som i en virtual host på min egen debian server.

Her følger min kommenterede opsætning (tt er både min namespace og det bibliotek løsningen ligger i):

Alias /tt “/stien/til/filerne/tt”

MonoServerPath tt “/usr/bin/mod-mono-server2”

#Hvis du af en eller anden underliggrund ønsker at køre .NET 1.1 kan #du i overstående ændre to tallet til et et tal:

# MonoServerPath tt “/usr/bin/mod-mono-server1”

MonoDebug tt true

#Jeg vil gerne se stacktraces når noget går galt.

MonoSetEnv tt MONO_IOMAP=all

#Mono skal stå for tilpasning til platformen, fx håndtereing af #backslashes i filadgang og store/små bokstaver.

MonoApplications tt “/tt: /stien/til/filerne/tt ”

Allow from all

Order allow,deny

MonoSetServerAlias Timetrack

SetHandler mono

SetOutputFilter DEFLATE

SetEnvIfNoCase Request_URI “.(?:gif|jpe?g|png)$” no-gzip dont-vary

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript

Når man har gjort dette skal man bare reloade ens apache konfiguration og det vil køre J