Grow up

生活とプログラミング

.Net CoreをARM32 UbuntuのNginxで動かしてみた

f:id:knkomko:20190907221113p:plain:w450
Introducing .NET 5 | .NET Blog

はじめに

最近ARMアーキテクチャのCPUで動くNASを使う機会がありました。
.Net Core はARMアーキテクチャのCPUをサポートしているとの事だったので、動かすために準備した内容をまとめます。

Docker が使えたのでDockerイメージ上で.Net Coreを動かしました。

NASの仕様

OS : Alpine Linux
CPU : ARM32
メモリ : 1GB

Dockerイメージ

Ubuntu 16.4 LXC

開発環境

Windows10 Pro
VisualStudio2019
.Net Core SDK 2.1.3

.Net Core サポートOS

ARM32アーキテクチャのCPUではDebianUbuntuが使用できます。
f:id:knkomko:20190831022031p:plain:w450
core/2.1-supported-os.md at main · dotnet/core · GitHub

今回はイメージが見つけられた Ubuntu 16.4 LXC を使用しています。
以降の手順は Ubuntu でコマンドを実行しています。

1. パッケージの更新

以降の手順でパッケージのインストールに失敗する事を防ぎます。

apt-get update
apt-get install –y wget
2. .Net Framework のインストール
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/ubuntu/18.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get install apt-transport-https
sudo apt-get update
3. .Net SDK のインストール
get https://download.microsoft.com/download/8/8/5/88544F33-836A-49A5-8B67-451C24709A8F/dotnet-sdk-2.1.300-linux-arm.tar.gz
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-2.1.300-linux-arm.tar.gz -C $HOME/dotnet
export PATH=$PATH:$HOME/dotnet
4. .NET SDK がインストール出来ているか確認
dotnet 
5. Ubuntu - C/C++ 開発ライブラリ(.Net Core動作環境)のインストール
sudo apt-get install libunwind8 icu-devtools
6. NET アプリケーションの作成とNginxによる公開

以下の記事を参考にNginxのインストールと公開の設定を行います。
www.aruse.net

Open SSL のインストール

dotnet run 実行時に Open SSL が必要だとエラーが出た場合はインストールが必要です。今回は arm32 で使用可能な Open SSL 1.0.2 をインストールしました。

OpenSSL のインストールで使う make と gcc コマンドをインストール。

sudo apt-get install –y make
sudo apt-get install –y gcc

OpenSSLに使用されているファイル圧縮・展開ライブラリをインストール。

sudo apt install zlib1g
sudo apt install zliblg-dev

OpenSSLのインストール。

wget https://www.openssl.org/source/openssl-1.0.2.tar.gz
tar xvf openssl-1.0.2.tar.gz
cd openssl-1.0.2
./config zlib shared no-ssl2
make && sudo make install

再度 dotnet run を実行してアプリが動くことを確認します。