Thursday, January 9, 2020

NetCore 3.1 Raspbian

#actualiza tu raspbian
sudo apt-get update
sudo apt-get upgrade -y

#baja el runtime y el SDK de dotnet core 3.1 
wget https://download.visualstudio.microsoft.com/download/pr/67766a96-eb8c-4cd2-bca4-ea63d2cc115c/7bf13840aa2ed88793b7315d5e0d74e6/dotnet-sdk-3.1.100-linux-arm.tar.gz

wget https://download.visualstudio.microsoft.com/download/pr/60d21925-7f8f-4004-9afe-aebd041d2d4a/0db2946738642d7f88f71f7800522e8c/dotnet-runtime-3.1.0-linux-arm.tar.gz

#creamos la carpeta donde quedará alojado el NetCore
mkdir dotnet-arm32
tar zxf dotnet-sdk-3.1.100-linux-arm.tar.gz -C $HOME/dotnet-arm32
tar zxf dotnet-runtime-3.1.0-linux-arm.tar.gz -C $HOME/dotnet-arm32

#solo puede ejecutar comandos .NET Core dentro de la carpeta dotnet-arm32. Para hacer que el comando "dotnet" se pueda ejecutar en todas partes, debe hacer algo como variables de entorno, que vincularán la carpeta dotnet-arm32 al nivel del sistema.

export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32

#Crea una app por consola para validar que funciono la instalacion
mkdir hello-netcore3.1
cd hello-netcore3.1/
dotnet new console
#para ejecutar el hola Mundo
dotnet run 
#Creamos la carpeta web
mkdir AspnetApp
cd AspnetApp/

#ahora podemos crear una app web con VS2019 , puede ser cualquiera solo debemos tener cuidado al publicar, ya que debe ser usando Framework-Dependent (FDD) y Portable. ya que esto se ejecutará nativamente en la Raspberry Pi

#en mi caso mi app se llama aspnetapp y para llamarla es colocando:

dotnet aspnetapp.dll 


# si ahora queremos que se auto ejecute 

sudo nano .profile 

# y agregamos esto al final del archivo.

export DOTNET_ROOT=$HOME/dotnet-arm32
export PATH=$PATH:$HOME/dotnet-arm32

# para validar que corre en todas las IPs de la máquina.
dotnet aspnetapp --urls "http://*:8080"

#finalmente hosteamos con nginx.
sudo apt-get install nginx -y
sudo /etc/init.d/nginx start

# respaldamos el archivo, siempre es bueno respaldar.
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak

#creamos el nuevo archivo
sudo nano /etc/nginx/sites-available/default

server {
    listen        80 default_server;
    server_name   _;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Host by Nginx with auto-restart capability
First, install and start Nginx:

sudo nginx -t
sudo nginx -s reload


sudo nano /etc/systemd/system/kestrel-aspnetapp.service

[Unit]
Description=ASP.NET Core 3.1 App - AspNet

[Service]
WorkingDirectory=/home/pi/aspnetApp
ExecStart=/home/pi/dotnet-arm32/dotnet /home/pi/aspnetApp/aspnetapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-AspnetApp
User=pi
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target


sudo systemctl enable kestrel-aspnetapp.service
sudo systemctl start kestrel-aspnetapp.service
sudo systemctl status kestrel-aspnetapp.service

basado en https://edi.wang/post/2019/9/29/setup-net-core-30-runtime-and-sdk-on-raspberry-pi-4

editado por nuevo script bash de instalacion 
https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh

No comments:

Post a Comment