Su Raspberry PI con Rasbian è possibile installare il runtime della versione Arm32 di .Net Core.
L'SDK non è supportato su ARM.

Installazione sistema operativo

Prima cosa, se non ll'hai già fatto, installa Raspbian (attualmente la versione Raspbian Stretch Lite).
Ho installato la versione senza Desktop in quanto lo uso sempre da remoto tramite SSH
Poi trasferisci l'immagine su SD, puoi usare Rufus.
L'utente di default è pi con password raspberry

Impostare la tastiera

Appena loggato assicurati che la tastiera abbia il layout italiano
Puoi procedere in 2 modi, usando raspi-config (non funziona da SSH) oppure da linea di comando editando /etc/default/keyboard.

Bash

sudo nano /etc/default/keyboard
imposta

Text

XKBMODEL="pc105"
XKBLAYOUT="it"
e riavvia il servizio

Bash

service keyboard-setup restart

Cambiare password

Imposta subito una password più sicura

Bash

passwd

Attivare SSH

Sulle nuove versioni il servizio SSH è disabilitato per default, abilitalo con:

Bash

sudo systemctl enable ssh
sudo systemctl start ssh
Per collegarti in SSH da Windows puoi usare Putty.

Impostare un IP statico

Per raggiungere più facilmente il Raspberry PI da remoto, in SSH, conviene impostare un IP fisso:

Bash

sudo nano /etc/dhcpcd.conf
ad esempio

Text

interface eth0
static ip_address=192.168.1.210/24
static routers=192.168.1.254
static domain_name_servers=192.168.1.254 1.1.1.1 8.8.8.8

Cambiare il nome

Se vuoi puoi cambiare il nome al Raspberry PI, puoi farlo editando questi due file:

Bash

sudo nano /etc/hostname
sudo nano /etc/hosts

Reboot

Riavvia per rendere attive tutte le modifiche:

Bash

sudo reboot

SSH

Adesso, da Windows, se vuoi, puoi collegarti da remoto in SSH con Putty

Bash

putty.exe -ssh pi@192.168.1.210
oppure tramite interfaccia grafica
Putty
Putty

Aggiornamento

Assicurati che il sistema sia aggiornato:

Bash

sudo apt-get update
sudo apt-get upgrade

installare .NET Core

Installa i prerequisiti

Bash

sudo apt-get install curl libunwind8 gettext apt-transport-https
poi il .Net Core

Bash

curl -sSL -o dotnet.tar.gz https://dotnetcli.blob.core.windows.net/dotnet/Runtime/release/2.1/dotnet-runtime-latest-linux-arm.tar.gz
sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet
sudo ln -s /opt/dotnet/dotnet /usr/local/bin
Verifica sè installato correttamente

Bash

dotnet --info

Text

Host (useful for support):
  Version: 2.1.3-servicing-26708-02
  Commit:  cc9cf3686d

.NET Core SDKs installed:
  No SDKs were found.

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.0.9 [/opt/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.3-servicing-26708-02 [/opt/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Creare un progetto Core

Su una macchina su cui hai l'SDK, ad esempio Windows (ma anche Linux o Mac), crea una nuova cartella

DOS / Batch file

mkdir testcore && cd testcore
poi crea un progetto, in questo esempio un sito web basato su Angular 5

DOS / Batch file

dotnet new angular
compilalo per la versione Linux ARM

DOS / Batch file

dotnet publish -r linux-arm
la versione compilata si troverà in root-progetto\bin\Debug\netcoreapp2.1\linux-arm\publish\

Eseguire .NET Core su Raspberry

Crea una cartella nella tua home

Bash

cd ~
mkdir testcore && cd testcore
pwd
Da Windows copia i file su linux con l'utility pscp.exe

DOS / Batch file

D:\testcore>d:\Utility\PuTTY\PSCP.EXE -r .\bin\Debug\netcoreapp2.1\linux-arm\publish\*.* pi@192.168.1.210:/home/pi/testcore
su Linux dai i permessi di esecuzione all'applicazione all'utente corrente

Bash

chmod 755 ./testcore
Vedi chmod
mandalo in esecuzione con

Bash

./testcore

Text

Hosting environment: Production
Content root path: /home/pi/testcore
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
A questo punto se hai installato il sistema operativo nella versione desktop, puoi aprire la url http://localhost:5000.

Se invece stai accedendo da un computer remoto il sito non risulta raggiungile neanche dall'indirizzo http://192.168.1.210:5000.
Puoi provare ad eseguirlo con il parametro --urls specificando l'indirizzo IP dell Raspberry PI

Bash

./testcore --urls http://192.168.1.210:5000
a questo punto il sito risulta accessibile da remoto
Per determinare l'IP assegnato usa il comando ifconfig

In alternativa puoi modificare il file Program.cs per fare in modo che il server rimanga in ascolto su tutti gli IP aggiungendo:

C#

.UseKestrel(options =>
{
  options.Listen(System.Net.IPAddress.Any, 5000);
});
questo è il risultato finale

C#

namespace testcore
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseKestrel(options =>
                {
                options.Listen(System.Net.IPAddress.Any, 5000);
                });
    }
}

Le prove le ho fatte con un Raspberry PI versione 2 e 3 con Raspbian Stretch Lite senza Desktop
Tags:
Angular7 Linux18 .NET Core26 Raspberry PI8
Potrebbe interessarti anche: